L'extension "Simple Website" contient :

  • Une évolution de l'interface d'administration pour définir une arborescence de sections ainsi que la possibilité d'associer une ou plusieurs sections à chaque billet. En pratique, chaque section est un billet qui a été identifié comme tel. Cela permet d'utiliser l'ensemble des fonctions existantes. Une section a ainsi un nom (le titre du billet), un résumé de sa description (l'extrait du billet), une description complète (le corps du billet), la possibilité d'être commentée, d'être rétroliée, etc.
  • Un ensemble d'éléments de template permettant d'afficher, sur la page d'une section :
    • les éléments de la section courante
    • l'ensemble des sous-sections
    • le chemin hiérarchique permettant d'atteindre la section courante
    • l'ensemble des billets (navigable par pages) de la section et des sous-sections
  • Les flux de billets et de commentaires relatifs à chaque section
  • Un widget pour naviguer dans l'ensemble des sections
  • Une page "plan de site" présentant la hiérarchie des sections et leur description

Pour avoir une meilleure vision de cela, le plus simple est de regarder un exemple. Puisque ce blog utilise le plugin en question, il suffit, par exemple, d'aller voir la section regroupant mes réalisations logicielles : Affichage d'une section

En tête de page, le chemin hiérarchique "Accueil Â» Informatique Â» Mes réalisations" permet de se positionner dans l'ensemble du site. Suivent le nom de la section, sa description et les liens vers les flux : fil des billets et fil des commentaires.
Widget de navigation Au même niveau, mais sur la partie droite, sont listées les sous-sections avec un résumé de leur description. La suite de la page est occupée par la liste des billets de la section courante et de ses sous-sections sur le même modèle que les catégories ou les tags.

Sur la même page, dans le bandeau de gauche, le widget de navigation est positionné sur la section courante et il permet d'aller vers les sous-sections, vers la hiérarchie parente ainsi que les sections voisines de chaque élément de la hiérarchie.

Le plan de site est accessible à tout moment grace à un lien dans le même widget.

Définition d'une section Côté administration, chaque billet dispose d'une section masquable "Site web simple". Si on n'y touche pas, le billet reste un billet standard. Lorsque la section est dépliée, on peut définir :

  • Sa position dans la hiérarchie : en sélectionnant son parent
  • Les billets qui y sont rattachés : en définissant un tag de regroupement
  • La mise en page de la section : en donnant le nom d'un fichier template se trouvant dans le thème
  • L'URL à présenter pour le flux des billets (utile si on veut gérer les abonnements à travers un système externe type feedburner)

Le rajout d'un billet standard dans une section se fait tout simplement en associant à ce billet le tag défini dans la section. On notera que, dans la section "Site web simple", la zone "Nom de fichier template" peut être utilisée sur les billets standards pour leur donner, au cas par cas, une mise en page personnalisée.

Ici se terminent les informations pour une utilisation courante mais la mise en place du plugin au sein d'un blog existant nécessite une étape supplémentaire : l'adaptation du thème d'affichage pour y rajouter le ou les formats d'affichage d'une section.

Un pré-requis écrire les templates relatifs à une utilisation de "Simple Website" est la modification du template "post.html" du thème utilisé. En effet, tous les affichages réalisés par cette extension (sections, plan de site) sont réalisés en prenant "post.html" comme base. Deux modification doivent y être apportées qui ne remettent pas en cause l'affichage des billets standards :

  • Dans le <head> HTML, les liens vers les flux doivent être adaptés pour permettre l'insertion des flux de section. En pratique, il suffit de remplacer les tpl:BlogFeedURL par des tpl:swMenuFeedURL.
  • Il faut insérer un block <tpl:swCustomPostContent> autour du contenu de la zone <div id="main">. Ce block permet de, simultanément, conserver l'affichage d'un billet standard ou de le remplacer par le contenu du fichier de template personnalisé de chaque billet lorsqu'un tel fichier est défini dans la boite "Site web simple" du billet.

Il faut ensuite définir au minimum un fichier template pour l'affichage des sections. Ce fichiers ne contient bien évidemment que la partie intérieure à la zone <div id="main">. A titre d'exemple, le fichier "post_menu.html" utilisé sur ce blog est joint à ce billet.

Les éléments de templates utilisables pour mettre en forme les pages de section sont :

  • Block <tpl:swMenuHierarchyEntries> : c'est un block qui fonctionne comme <tpl:Entries> mais qui itère sur les sections constituant le chemin hiérarchique permettant d'atteindre la section courante.
  • Block <tpl:swMenuLevelEntries> : c'est également un block qui fonctionne comme <tpl:Entries> mais celui-ci itère sur les sous-sections de la section courante.

L'affichage du plan de site est réalisé à travers un fichier dédié "sitemap.html" qui, lui-aussi, ne contient que la partie de template intérieure à la zone <div id="main">.
Un fichier par défaut est intégré au plugin mais il est tout à fait possible de le rédéfinir dans le thème utilisé. Des éléments de templates additionnels sont nécessaires pour mettre en forme le plan de site :

  • Valeur tpl:swSitemapURL : c'est l'URL de la page qui affiche le plan de site.
  • Block <tpl:swDefineBlock name="XXX"> : c'est un élément générique qui définit un block réutilisable en plusieurs endroits. En pratique, il définit une fonction PHP qui affiche le contenu du block.
  • Valeur tpl:swReuseBlock name="XXX" : c'est le pendant de l'élement précédent. Les blocks définis peuvent être inséré à divers endroits avec cet élément.

L'affichage du plan de site sans limitation de la profondeur de l'arbre est réalisé par un swDefineBlock/swReuseBlock récursif en bouclant à chaque niveau sur les section via un swMenuLevelEntries (si cette phrase n'est pas assez claire, le mieux est de jeter un coup d'oeil au fichier "sitemap.html" contenu dans l'extension).

Voilà pour la partie plus technique. Toutes les questions, remarques et suggestions sont, bien évidemment, les bienvenues et si jamais quelqu'un utilise cette extension sur son blog ou, encore mieux, pour réaliser un site, ça serait sympa de laisser un petit mot ici même !