Pour l’instant il n’y pas grand chose de visible, côté public ou côté privé — j’entends par là l’administration du blog, plus spécialement la gestion de l’apparence d’icelui — à part un commentaire dans le code source généré, j’y reviens après, ainsi qu’un début de formulaire de configuration.

La configuration du thème

Bouton de configuration du thème

Dotclear, lorsqu’on choisit d’utiliser un thème, vérifie si celui-ci comporte un fichier _config.php. Dans le cas où ce fichier est présent un nouveau bouton est proposé qui permet de spécifier et d’enregistrer les réglages et la configuration du thème :

Squelette du formulaire de configuration du thème

C’est sur ce formulaire que nous ajouterons les différents réglages que nous prévoyons d’offrir pour personnaliser le thème. Côté PHP, et comme je le précisais dans mon précédent billet, guère de nouveautés :

<?php
# -- BEGIN LICENSE BLOCK ---------------------------------------
#
# This file is part of Dotclear 2.
#
# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
# Licensed under the GPL version 2.0 license.
# See LICENSE file or
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
#
# -- END LICENSE BLOCK -----------------------------------------
if (!defined('DC_CONTEXT_ADMIN')) { return; }

echo
'<p class="area">Ici, bientôt, la configuration du thème Ductile.</p>';
?>

Nous y reviendrons plus tard si tu le veux bien.

La mise en place des styles additionnels côté public

Pour que les réglages enregistrés par l’utilisateur soient utilisés au moment de l’affichage du blog qui utilise ce thème il est nécessaire de fournir a minima un fichier _public.php — j’en ai également parlé précédemment —, et qui contient pour l’instant ceci :

<?php
# -- BEGIN LICENSE BLOCK ---------------------------------------
#
# This file is part of Dotclear 2.
#
# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
# Licensed under the GPL version 2.0 license.
# See LICENSE file or
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
#
# -- END LICENSE BLOCK -----------------------------------------

if (!defined('DC_RC_PATH')) { return; }

$core->addBehavior('publicHeadContent',array('tplDuctileTheme','publicHeadContent'));

class tplDuctileTheme
{
	public static function publicHeadContent($core)
	{
		echo '<style type="text/css">'."\n".'/* Additionnal style directives */'."\n</style>\n";
	}
}
?>

Comme tu peux t’en douter à la lecture de ce code, il ne fait pas grand chose de plus que de fournir du contenu à ajouter juste avant la fermeture de la balise HTML <head>.

Lorsqu’on consulte le code source fourni au navigateur on retrouve celui-ci :

Code du style additionnel

Il est presque l’heure d’aller photographier quelques bateaux, car mon stock se réduit dangereusement ces jours derniers et j’ai peur qu’on vienne à en manquer. Mais avant cela je crois que tu avais quelques questions en suspens à propos :

  • des « stickers »
  • du menu de premier niveau personnalisable
  • du pliage et dépliage des éléments du sidebar

Les « stickers »

La solution que tu as proposée est tout à fait envisageable à condition de développer une balise template qui prendra en charge, à partir des choix effectués par l’utilisateur, la génération du code HTML correspondant.

Menu de premier niveau personnalisable

Je crois en effet qu’il est sage d’attendre un peu le développement de l’éventuelle intégration d’un menu dans le cœur de Dotclear. Cela dit il est tout à fait possible de prévoir en attendant une gestion simplifiée qui permette au moins de préciser le libellé et l’URL pour chacun des éléments de menu. Il faudra songer au passage au positionnement idoine de l’option choisie en fonction de l’URL courante sur le blog. Rien de bien compliqué, c’est un sujet qui a déjà été abordé dans au moins deux plugins de ma connaissance.

Pliage et dépliage des éléments du sidebar

Si j’ai bien compris, il faut assurer le pliage initial de tous les éléments sur les petits affichages et le dépliage de tous les éléments au delà. Pour les grands affichages ça veut donc dire qu’il suffit de ne rien prévoir du tout. Par contre, sur les petits affichages, il faudra penser à ajouter une classe à ces éléments pour que le code javascript puisse les reconnaître et les plier initialement et d’assurer l’effet accordéon (l’ouverture d’un des éléments provoquant la fermeture de tous les autres).

Pour résumer, si l’affichage est inférieur au seuil prévu pour les grands écrans, il faut penser à ajouter une classe particulière aux éléments du sidebar.

Ma chère Kozlika je te laisse ici et vais derechef manger de ce délicieux clafoutis qui m’attend en bas puis attraper mon appareil et filer au port…