Translations of this page?:

Développement de templates DokuWiki

Vous pouvez personnaliser l'apparence de DokuWiki en créant un nouveau template. Les templates sont des fichiers HTML (contenant du PHP) et CSS stockés dans un répertoire à l'intérieur de <dokuwiki>/lib/tpl/.

C'est parti !

La façon la plus simple de créer un nouveau template est de se baser sur un template déjà existant. Il est recommandé de prendre comme exemple le template par défaut de DokuWiki car il est propre, simple et respecte les standards de conception d'un template DokuWiki.

Notez que le répertoire d'un template doit être en minuscules, ”.” ou “_” ne sont pas autorisés.

Pour créer un nouveau template, suivez les instructions suivantes :

  1. copiez le répertoire lib/tpl/default dans lib/tpl/monnouveautemplate
  2. sélectionnez votre nouveau template depuis le Gestionnaire de configuration
  3. jetez ensuite un œil aux fichiers qui composent le template (voir Directory Layout)
  4. allez voir la façon dont DokuWiki manipule ses feuilles de style via son dispatcheur de CSS
  5. la manipulation des paramètres de configuration est analogue aux plugins. Employez tpl_getConf(<paramètre>) pour récupérer un paramètre personnalisé du template

Structure du répertoire d'un template

Chaque template devrait suivre la structure suivante (tous les chemins sont relatifs au répertoire du template). Les fichiers CSS sont spécifiés dans le fichier style.ini. Vous devriez avoir au moins un fichier CSS pour l'affichage standard (écran) et un autre dédié à l'impression.

  • <dokuwiki>/lib/tpl/<template>/
    • <nom de fichier>.css
    • main.php – le fichier principal qui sert à afficher les pages
    • detail.php – la page de détail d'une image
    • mediamanager.php – le Gestionnaire de médias
    • images/ – toutes les images utilisées pour le template
    • conf/
    • lang/ – fichiers de langue
      • <code de langue>/lang.php – chaînes de caractères utilisées dans le template
      • <code de langue>/settings.php – chaînes de caractères utilisées dans le Gestionnaire de configuration
    • style.ini – voir Style.ini

Fonctions

Une liste des fonctions disponibles est disponible dans la documentation de l'API. Certaines sont listées ci-dessous.

tpl_content()

Cette fonction affiche le contenu d'une page du wiki, y compris la table des matières. Il est possible d'empêcher cela en passant le paramètre false quand on appelle la fonction :

tpl_content(false);

C'est utile si on souhaite séparer la table des matières du contenu de la page. On peut alors la placer n'importe où dans le template. Pour l'afficher, on utilisera la fonction tpl_toc() ci-dessous.

tpl_toc()

Par défaut, c'est la fonction tpl_content() qui s'occupe d'afficher la table des matières, en la plaçant juste avant le contenu d'une page. Mais si vous souhaitez afficher la table des matières à un autre endroit, par exemple dans une barre latérale, il vous faudra utiliser la fonction tpl_toc(). Quand on l'utilise, il ne faut pas oublier de passer le paramètre false à la fonction tpl_content().

Exemple:

<div id="content">
    <?php tpl_content(false)?>
</div>
 
<div id="sidebar">
    <?php tpl_toc()?>
</div>

La fonction tpl_toc() construit la table des matières depuis trois sources différentes :

Comme il n'y a pas de métadonnées pour les anciennes révisions ou l'aperçu, la fonction tpl_toc() ne peut utiliser que la variable d'environnement globale dans ces cas précis. Et comme la variable d'environnement globale est remplie par le moteur de rendu de la page, cela ne marche que quand la fonction tpl_toc() est appelée après la fonction tpl_content(). Si votre template ne permet pas cela, vous pouvez utiliser la mémoire tampon pour palier à ce problème.

Exemple:

<?php
    // render the content into buffer for later use
    ob_start();
    tpl_content(false);
    $buffer = ob_get_clean();
?>
 
<div id="sidebar">
    <?php tpl_toc()?>
</div>
 
<div id="content">
    <?php echo $buffer?>
</div>

tpl_getConf()

Cette fonction est utilisée pour accéder aux paramètres de configuration depuis le template.

Variables globales et constantes

Pour une liste complète des Variables globales et des constantes, consultez la page environment.

Indexation automatisée

Presque à la fin du fichier main.php du template par défaut, vous verrez un appel à la fonction tpl_indexerWebBug(). Elle génère une balise HTML <IMG> qui fait une requête à lib/exe/indexer.php. C'est une partie vitale de DokuWiki qui fournit une indexation automatique de la page pour l'outil de recherche et d'autres fonctions importantes comme la génération d'une carte du site en XML (utilisée par les moteurs de recherche internet) ou la mise à jour des méta-données. Tous les templates doivent inclure cette fonction, sans quoi le wiki pourrait ne pas fonctionner correctement (par exemple, la recherche ne fonctionnera pas).

Hooks

Les hooks (hameçons en français) permettent d'inclure du contenu statique dans votre DokuWiki sans avoir besoin de toucher au template. Vous pouvez par exemple les utiliser pour ajouter une bannière, le logo de votre entreprise ou un avertissement en bas de chaque page.

Le template par défaut de DokuWiki cherche des fichiers spécifiques dans le répertoire lib/tpl/default/ et se contente de les inclure au bon endroit quand on affiche une page. Vous pouvez y mettre n'importe quel code HTML ou PHP.

Hooks disponibles

Tous ces fichiers sont recherchés dans le répertoire lib/tpl/default/.

Nom de fichier Emplacement du fichier HTML inclu dans le template
meta.html Dans la balise <head>, à utiliser pour inclure de nouveaux fichiers CSS ou des balises <meta>
topheader.html Au tout début de la page, juste après la balise <body>
header.html Au dessus de la barre bleue du haut, juste en dessous du nom de page et du nom du wiki
pageheader.html En dessous du fil d'ariane, juste au dessus du contenu d'une page
pagefooter.html Au dessus de la barre bleue du bas, juste en dessous de la date de dernière modification
footer.html À la fin de la page, juste avant la balise </body>

DokuWiki est fourni avec un exemple de fichier footer.html qui contient quelques boutons et la licence.

 
fr/devel/templates.txt · Last modified: 2010/03/17 16:57 by 132.166.93.168
 
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Imprint Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki
WikiForumIRCBugsGitXRefTranslate