====== Fonctionnement des gabarits ====== ===== Introduction ===== Le système de modèle de page de DotClear n'est pas ce qui se fait de plus simple à l'usage mais reste abordable pour peu de bien lire la documentation. Le fonctionnement est très simple, il s'agit de fonctions PHP qui se chargent d'afficher l'information qu'on leur demande. Parfois un motif est utilisé pour formater l'information affichée. Ce motif constitue une marque de substitution, généralement identifiée par %s. Pour de plus amples détails, suivre la documentation de la fonction PHP, sprintf. Pour chaque fonction utilisant un motif, nous expliquerons comment le remplir. ===== Les modes ===== Pour savoir quel fichier afficher dans la partie ''#main'', DotClear définit des modes. En fonction du mode, le moteur du blog va varier son comportement. Les modes sont testés dans le template à l’aide de la variable ''$mode'' afficher ce que l’on veut voir dans le mode machin ==== $mode == 'post' ==== *Fichier inclus((la mention du « fichier inclus » concerne bien sûr le thème par défaut)) : ''post.php'' *Accès : url directe (''url-de-monblog/année/mois/jour/numéro-[titrefacultatif]''), lien sur le titre du billet ou la zone « post-info-co » depuis un affichage en liste, ou, s’il y figure, depuis la liste des billets « À retenir » dans le sidebar. C’est le mode dans lequel le billet s’affiche tout seul, en entier, avec ses commentaires et trackbacks, son formulaire pour ajouter un commentaire. ==== $mode == 'cat' ==== *Fichier inclus : ''list.php'' *Accès : url directe (''url-de-mon-blog/Categorie'' ou ''url-de-mon-blog?Categorie'' selon que le format est Path Info ou Query String), lien dans les infos situées sous le titre du billet, lien direct depuis le sidebar. Affiche la liste des billets en effectuant un tri sur la catégorie. Le nombre de billets par page est limité par le paramètre indiqué dans Outils --> Configuration de DotClear. ==== $mode == 'search' ==== *Fichier inclus : ''list.php'' *Accès : url directe (''url-de-mon-blog/?q=\[mot-cherché]'') ou via le formulaire de recherche dans le sidebar. Le moteur opère un tri sur les critères indiqués dans le champ de recherche et les affiche en liste selon la forme définie dans le fichier list.php. A savoir : dans ce mode, le nombre de billets par page n'est pas limité par l’indication que vous aurez donnée dans Outils --> Configuration de DotClear. ==== $mode == 'month' – $mode == 'day' ==== *Fichier inclus : ''list.php'' *Accès : *url directe (''url-de-mon-blog/année/mois/''), ou via la liste des mois du sidebar pour //month//, *url directe (''url-de-mon-blog/année/mois/jour''), ou clic sur la date dans le calendrier du sidebar pour //day//. Month pour les billets d’un mois donné, day pour une date précise, comme pour le mode search, le tri s’effectue sur le mois (ou le jour pour le mode day) choisi sans limitation du nombre d’entrées. C’est en cela que ce mode est celui qui est tout indiqué pour visiter les archives. ==== $mode == 'home' ==== *Fichier inclus : ''list.php'' C’est le mode qui correspond à l’accueil du blog. ===== Un centre d’aiguillage ===== En observant le fichier ''template.php'' du thème par défaut, on remarque que juste après l’ouverture du bloc central du blog (''
'') des codes indiquent ce que doit afficher le moteur en fonction de telle ou telle circonstance. Cette suite de ''if'' et ''elseif'', après avoir traité le cas d’une erreur quelconque ou du postage de commentaire par un visiteur détermine deux cas : le mode **n'est pas** ''post'' ou il l’est. Dans le premier cas, on affiche une liste de billets (''list.php''), sinon le billet seul (fichier ''post.php''). C’est la raison pour laquelle (si ces instructions ne sont pas modifiées) toutes les listes de billets sont organisées de la même façon. ==== Ajouter un aiguillage ==== On peut très bien intervenir à cet instant, **après la condition du message d’erreur**,((Ce point est très important. Il faut en effet que le message en cas d’erreur ait la priorité absolue sur l’affichage à opérer dans la page.)) pour appeler un fichier précis en telle ou telle circonstance. C’est par exemple ce qu’on fait lorsqu’on installe une page spécifique en interceptant le mode home (voir le [[http://petit.dotclear.net/pages/2004/12/02/27-creer-une-page-daccueil-differente|tuto qui va bien]]). Sur le même principe, on pourrait imaginer une condition supplémentaire (//elseif//) qui déterminerait un autre fichier appelé pour le mode month (appelons-le month.php histoire de ne pas se compliquer la vie) et qui serait constitué de façon à n’afficher, par exemple, que les titres des billets du mois. ==== Invités ==== Il existe un certain nombre de plugins qui créent un mode spécialement pour eux. Exemples répandus : Gallery, qui permet d’afficher des images sous forme d’album, Table des matières, pour constituer un sommaire des billets, Related, qui offre la possibilité d’adjoindre des pages connexes au blog. Pour afficher leur(s) pages, eux aussi vont s’intercaler **après la condition du message d’erreur** et signaler au moteur que le fichier à afficher est celui-ci ou celui-là. ===== Les fonctions informatives ===== Les fonctions suivantes permettent d'afficher des renseignements divers sur le blog ou les billets. ==== dcInfo ==== void dcInfo([$name='name']) === Parametres === * name - Nom de la propriété à afficher Fonction affichant une information sur le blog. La propriété name peut prendre les valeurs suivantes : * name : non du weblogue * theme : chemin vers le répertoire du thème * img : chemin vers les images * url : URL de la home page du blog * rss : chemin vers le fil RSS * atom : chemin vers le fil Atom * search : chemin de l'action pour le moteur de rechercher * logo : chemin vers l'image du logo * encoding : Encodage des caractères * lang : langue principale du weblogue === Exemple ===

fil rss
vous pouvez faire un lien vers le fil RSS ou Atom d'une catégorie très facilement en ajoutant l'identifiant de la catégorie à l'URL, comme ceci par exemple : RSS général ==== dcDayDate ==== === Parametres === * s - Chaine de substition Cette fonction affiche la date du jour. Elle est utilisée dans la boucle des billets et n'affiche la date que lors du premier billet du jour. Cela permet d'afficher la date du jour au dessus de plusieurs billets du même jour. On peut entourer la date de balise ou de texte grâce à la chaîne de substitution s passée en argument. Par exemple: %s'); ?> ==== dcCalendar ==== void dcCalendar([$block='
%s
'])
=== Parametres === * block - Chaine de substitution pour pour le tableau Cette fonction affiche un calendrier contextuel (mois, année, jour). Le calendrier est un tableau dans une balise
dont la classe CSS|Cascading Style Sheet est cal. Les nom des jours sont indiqués avec des cellules d'en-tête (th) et le titre avec (caption). === Exemple d'utilisation === ==== dcHeadLinks ==== void dcHeadLinks() Cette fonction affiche les liens (link) dans l'en-tête du fichier HTML. Elle génère automatiquement les liens de navigation dans le blog. Il suffit de la placer dans l'en-tête du document : ==== dcSinglePostTitle ==== void dcSinglePostTitle([$s='%s - ']) === Parametres === * s - Chaîne de substitution Cette fonction affiche le titre d'un billet si on est sur une page présentant un billet (/blog/yyyy/mm/dd/titre par exemple). On l'utilisera dans la balise du document. Par exemple: <code php><title><?php dcSinglePostTitle(); ?> ==== dcSingleCatTitle ==== void dcSingleCatTitle([$s='%s - ']) === Parametres === * s - Chaîne de substitution Cette fonction affiche le nom de la catégorie s'il y a lieu de l'afficher. On peut l'utiliser dans le titre, comme dcSinglePostTitle. ==== dcSingleMonthTitle ==== void dcSingleMonthTitle([$s='%s - ']) === Parametres === * s - Chaîne de substitution Cette fonction affiche le mois et l'année en cours s'il y a lieu de l'afficher. S'utilise aussi dans le titre comme dcSinglePostTitle. ==== dcCustomTitle ==== void dcCustomTitle([$s='%s - ']) === Parametres === * s - Chaîne de substitution Cette fonction affiche le contenu de la variable globale $dc_custom_title. Cette variable peut-être assignée par un plugin. Exemples d'usage des fonctions pour la balise ¶ Voici un exemple de commun de balise <title> à partir des fonctions précédentes : <code php><title><?php dcSinglePostTitle('%s - '); dcSingleCatTitle('%s - '); dcSingleMonthTitle('%s - '); dcCustomTitle('%s - '); dcInfo(); ?> ==== dcLangList ==== void dcLangList([$block='
    %s
'], [$item='
  • %s
  • '])
    === Parametres === * block - Chaine de substitution pour pour la liste * item - Chaine de substitution pour un élément Cette fonction affiche une liste des langues définies dans les billets. Les langues s'affichent uniquement si au moins deux langues différentes existent. Ceci permet d'offrir une navigation par langue dans le weblogue. ==== dcCatList ==== void dcCatList([$block='
      %s
    '], [$item='
  • %s
  • '])
    === Parametres === * block - Chaine de substitution pour pour la liste * item - Chaine de substitution pour un élément Cette fonction affiche une liste des catégories avec les liens pour y accéder. La liste générée est une liste non ordonnée (