Par défaut les tags de Dotclear sont affichés en nuage, ils sont regroupés sans distinction. En les regroupant par leur première lettre comme dans l'administration, on aboutit à ce résultat :
Pour obtenir le même affichage dans votre thème, vous devez modifier 2 fichiers. Voici comment faire. Cette astuce ne fonctionne qu'à partir de la version 2.1.6.
Modification du fichier _public.php
Vous devez placer le code suivant dans le fichier _public.php de votre thème :
$core->tpl->addBlock('TagsIfFirstLetter',array('TagsFL','TagsIfFirstLetter')); $core->tpl->addValue('TagsFirstLetter',array('TagsFL','TagsFirstLetter')); class TagsFL { # <tpl:TagsIfFirstLetter> ... </tpl:TagsIfFirstLetter> public static function TagsIfFirstLetter($attr,$content) { return '<?php '. 'if (mb_strlen($_ctx->TagsFirstLetter) == 0) {$_ctx->TagsFirstLetter = null;}'. '$_ctx->TagsFirstLetter = mb_strtoupper(text::cutString($_ctx->meta->meta_id,1));'. 'if ($_ctx->TagsFirstLetter != $_ctx->TagsFirstLetter_next) : '. '?>'. $content. '<?php endif;'. '$_ctx->TagsFirstLetter_next = $_ctx->TagsFirstLetter;'. ' ?>'; } # {{tpl:TagsFirstLetter}} public static function TagsFirstLetter($attr) { $f = $GLOBALS['core']->tpl->getFilters($attr); return '<?php echo($_ctx->TagsFirstLetter); ?>'; } }
Modification du fichier template tags.html
Ensuite, utilisez l'éditeur de thème pour ouvrir le fichier tags.html
. Vous devez remplacer la portion de code suivante :
<ul class="tags"> <tpl:Tags> <li><a href="{{tpl:TagURL}}" class="tag{{tpl:TagRoundPercent}}">{{tpl:TagID}}</a></li> </tpl:Tags> </ul>
Si vous voyez <tpl:MetaData type="tag">
à la place de <tpl:Tags>
, cela signifie que votre thème n'a pas été mis à jour pour la version 2.1.6. Voici la portion de code à remplacer dans ce cas :
<ul class="tags"> <tpl:MetaData type="tag"> <li><a href="{{tpl:MetaURL}}" class="tag{{tpl:MetaRoundPercent}}">{{tpl:MetaID}}</a></li> </tpl:MetaData> </ul>
Ceci est la portion de code qui remplace la portion au-dessus :
<tpl:Tags> <tpl:TagsIfFirstLetter> <!-- # ne pas afficher de balise fermante au premier tag --> <tpl:LoopPosition start="2"></ul></tpl:LoopPosition> <h3>{{tpl:TagsFirstLetter upper_case="1"}}</h3><ul class="tags"> </tpl:TagsIfFirstLetter> <li><a href="{{tpl:TagURL}}" class="tag{{tpl:TagRoundPercent}}">{{tpl:TagID}}</a></li> <!-- # ajouter une balise fermante après le dernier tag --> <tpl:LoopPosition start="-1"></ul></tpl:LoopPosition> </tpl:Tags>
Ce code ne fonctionne qu'à partir de Dotclear 2.1.6.
Si l'affichage ne change pas sur votre blog, pensez à vider le cache de votre navigateur et le cache de Dotclear en utilisant le plugin Maintenance.
Idée originale : Vince69 sur le forum Dotclear
Commentaires
Est-ce que les majuscules accentuées sont correctement triées dans ce cas, par exemple le É et le È après le E et avant le F ?
Franck : je viens de regarder et c'est non, les mots qui commencent par un caractère accentué sont relégués à la fin de la liste. C'est Dotclear qui fait le tri dans cet ordre, cette modification ne fait qu'insérer les premières lettres lors de l'affichage. La page des Tags dans l'administration est dans le même ordre.