Thèmes & Design

Sidebars et widgets

Les sidebars permettent d'ajouter des blocs de contenu complémentaire — articles récents, liste de catégories, formulaire de recherche, HTML personnalisé — à côté ou en dessous du contenu principal, sans modifier les templates PHP. SidebarManager est la classe qui orchestre cette logique dans QuietCMS.

Architecture de SidebarManager

Chaque sidebar est identifiée par un ID unique (chaîne alphanumérique) et contient une liste ordonnée de widgets. Les sidebars et leurs widgets sont persistés en JSON dans content/settings.json sous la clé sidebars. Aucune table de base de données, aucune migration nécessaire pour ajouter ou supprimer une zone.

Zones de widgets disponibles

QuietCMS distingue deux zones de positionnement :

  • main — zone latérale classique (colonne droite ou gauche selon la disposition du thème).
  • after-content — zone insérée sous le contenu principal de l'article, avant le pied de page. Utile pour des blocs de navigation, une table des matières ou un appel à l'action.

Types de widgets

  • Articles récents — affiche les N derniers articles publiés avec leur date et leur catégorie.
  • Liste de catégories — liste toutes les catégories avec le nombre d'articles associés.
  • Recherche — champ de recherche textuelle renvoyant vers la page blog filtrée.
  • HTML personnalisé — bloc libre permettant d'insérer n'importe quel balisage HTML : bannière, widget réseaux sociaux, bloc d'abonnement newsletter…

Déclaration dans theme.json

Un thème doit déclarer explicitement qu'il supporte les sidebars pour que la gestion des widgets soit visible dans le back-office :

{
    "name": "Mon Thème",
    "supports": ["sidebars", "comments", "breadcrumbs"]
}

Si sidebars est absent du tableau supports, le panneau Apparence → Sidebars est masqué et SidebarManager::render() retourne une chaîne vide.

Rendu dans les templates

L'appel de rendu s'effectue en une seule ligne dans le template concerné :

<?php echo SidebarManager::render($sidebarId, $settings); ?>

$sidebarId est résolu dynamiquement selon le contexte : tpl_post_sidebar pour les articles, tpl_page_sidebar pour les pages statiques, tpl_cat_sidebar pour les pages de catégorie. Ces valeurs sont configurables par l'administrateur dans Apparence → Options du thème.

Dispositions supportées

Trois dispositions sont disponibles pour chaque type de page :

  • full — contenu pleine largeur, sidebar désactivée.
  • sidebar-right — contenu principal à gauche, sidebar à droite.
  • sidebar-left — sidebar à gauche, contenu à droite.

Dans layout.php, la variable $_hasSidebar est calculée à partir des options de template, et le contenu est enveloppé dans une <div class="with-sidebar layout-right"> (ou équivalent) uniquement si une sidebar est active.

Créer et gérer les sidebars

Depuis le back-office (Apparence → Sidebars) :

  1. Cliquer sur Nouvelle sidebar et saisir un nom.
  2. Ajouter des widgets par glisser-déposer ou via le bouton + Ajouter un widget.
  3. Configurer chaque widget (titre, nombre d'articles à afficher, HTML personnalisé…).
  4. Assigner la sidebar à un type de page dans Options du thème.

Le thème Juridique, inclus avec QuietCMS, illustre un usage avancé de la zone after-content : un widget HTML personnalisé affiche une table des matières générée côté client à partir des balises <h2> et <h3> de l'article, améliorant la navigation dans les longs contenus réglementaires.

Articles similaires