Aller au contenu

Blocs dynamiques

Les blocs Views permettent d’afficher du contenu dynamique dans les régions du thème :

  • Sidebar
  • Header
  • Footer
  • Contenu secondaire
BlocContenuEmplacement
Produits récents4 derniers produitsSidebar, Homepage
Produits populairesSélection manuelleHomepage
Articles blog récents3 derniers articlesSidebar
MarquesLogos des marquesFooter
Produits de la même catégorieProduits liésPage produit

Si vous avez déjà la vue products_catalog :

  1. Éditez la vue products_catalog

  2. Cliquez sur +AddBlock

  3. Configurez le display :

ParamètreValeur
Display nameBlock - Produits récents
Admin titleProduits récents
  1. Override les paramètres :
SectionOverrideValeur
TitleThis blockNouveautés
PagerThis blockDisplay a specified number: 4
FormatThis blockUnformatted list
ShowThis blockRendered entity: Mini
  1. Dans Block Settings :
ParamètreValeur
Block admin titleProduits récents
Block categoryViews
  1. Save
  1. StructureViewsAdd view
ChampValeur
View nameBlocs Produits
Machine nameproducts_blocks
ShowContent of type Product
Sorted byNewest first
☐ Create a pageNon
☑ Create a blockOui
Block titleNouveautés
Display formatUnformatted list of teasers
Items per page4
  1. Save and edit
  1. StructureBlock layout
  2. Choisissez la région (ex: Sidebar first)
  3. Cliquez Place block
  4. Recherchez “Produits récents” ou “Nouveautés”
  5. Configurez la visibilité :
ParamètreValeur
Title☐ Display title (si déjà dans la vue)
Pages/shop (optionnel)
  1. Save block

Ce bloc affiche une sélection manuelle de produits.

Installez le module Entityqueue :

Fenêtre de terminal
composer require drupal/entityqueue
drush en entityqueue -y
  1. StructureEntityqueuesAdd entity queue
ChampValeur
LabelProduits populaires
Machine namefeatured_products
Queue typeSimple queue
Target typeContent
Bundles☑ Product
Minimum items4
Maximum items8
  1. Créez une vue qui filtre sur cette queue
  1. Ajoutez un champ booléen field_featured au type Product
  2. Créez une vue qui filtre sur ce champ

Vue Block - Produits populaires :

ParamètreValeur
FilterContent: Featured = True
SortRandom (module Views Random Seed) ou manuel
Pager8 items
  1. Créez une nouvelle vue ou ajoutez un display à une vue Blog existante
ParamètreValeur
View nameBlog Blocks
ShowContent of type Blog Article
SortNewest first
Block titleDerniers articles
Items3
ShowRendered entity: Teaser
  1. Placez le bloc dans la sidebar

Affiche les logos de toutes les marques.

  1. Add view
ParamètreValeur
View nameMarques
Machine namebrands
ShowTaxonomy terms
of typeMarque
☐ Create a pageNon
☑ Create a blockOui
Block titleNos marques
Items per pageUnlimited
  1. Dans l’éditeur, configurez les champs :
ChampConfiguration
Taxonomy term: NameHidden label, Link to term page
Taxonomy term: Brand LogoImage style “Thumbnail”
  1. Format : Grid (ou HTML List)

  2. Placez le bloc dans le Footer

Ce bloc apparaît sur les pages produit et affiche des produits liés.

  1. Éditez la vue products_blocks (ou créez-en une nouvelle)

  2. +AddBlock

  3. Display name : Block - Produits similaires

  4. Dans Contextual Filters, cliquez Add

  5. Sélectionnez Content: Category (field_category)

  1. Configurez :
ParamètreValeur
When filter value is NOT availableHide view
When filter value IS availableProvide default value
TypeContent ID from URL
  1. Apply
  1. Ajoutez un autre Contextual Filter : Content: ID
  2. Configurez :
ParamètreValeur
When filter value IS availableProvide default value
TypeContent ID from URL
More → Exclude☑ Yes

Ce bloc n’apparaît que sur les pages produit :

  1. Block layout → Place block
  2. Visibility → Content type☑ Product

Créez des templates Twig personnalisés pour les blocs :

{#
/**
* Block: Produits récents
*/
#}
<div class="products-recent-block">
<div class="block-header">
{% if title %}
<h3 class="block-title">{{ title }}</h3>
{% endif %}
<a href="/shop" class="view-all">Voir tout →</a>
</div>
<div class="products-grid products-grid--mini">
{{ rows }}
</div>
</div>
.products-recent-block {
padding: 1rem;
background: #f8f9fa;
border-radius: 8px;
}
.products-recent-block .block-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 1rem;
padding-bottom: 0.5rem;
border-bottom: 1px solid #ddd;
}
.products-recent-block .block-title {
margin: 0;
font-size: 1.25rem;
}
.products-recent-block .view-all {
font-size: 0.875rem;
color: #0073e6;
text-decoration: none;
}
.products-grid--mini {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 0.5rem;
}
BlocVueDisplayRégion
Produits récentsproducts_blocksblock_1Sidebar
Produits populairesproducts_blocksblock_2Content (Homepage)
Articles récentsblog_blocksblock_1Sidebar
Marquesbrandsblock_1Footer
Produits similairesproducts_blocksblock_3Sidebar (Product)
Fenêtre de terminal
# Lister les blocs Views disponibles
drush views:list --type=block
# Afficher les displays d'une vue
drush views:analyze products_blocks
# Vider le cache des blocs
drush cc block
Fenêtre de terminal
# Exporter les vues et la configuration des blocs
drush cex -y
# Vérifier les fichiers
ls config/sync/block.block.*.yml
ls config/sync/views.view.*.yml
  • Bloc “Produits récents” créé et placé
  • Bloc “Articles récents” créé et placé
  • Bloc “Marques” créé et placé dans le footer
  • Bloc “Produits similaires” avec contextual filter
  • Blocs configurés avec visibilité appropriée
  • Configuration exportée

Les blocs sont en place ! Finalisons avec la Pagination & Tri.