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 :

Tags regroupés par leur première lettre

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