Vous n'êtes pas identifié(e).
13 février 2024 Sortie de Dotclear 2.29
Bonjour,
Je cherche à ajouter au comportement classique de Dotclear un fichier template (dont j'ai écrit le contenu, avec un comportement voisin de tag.html, pour un tag bien précis mais dans une présentation très différente du tag.html de mon thème) mais je ne sais pas comment procéder pour intégrer ce nouveau contexte à Dotclear sans passer par un plugin. Si c'est possible.
Si vous avez des pistes, je suis preneur.
Merci d'avance.
Le B.A.BA : https://abc.dotaddict.org
La doc DC2 : https://fr.dotclear.org/documentation/2.0
Mes extensions : https://www.mirovinben.fr/blog/index.ph … pluginsDC2
Mes marqueurs de template : https://www.mirovinben.fr/blog/index.php?post/id3553
Hors ligne
Super !...
Et comment on fait ça ? Le public.php de mon thème, déjà bien garni, est prêt à recevoir ce mini URL-handler qui, pour l'instant, ne me cause pas du tout.
Tout ça pour automatiser la pagination de ma page récapitulant les Mobsolètes... ;-)
Le B.A.BA : https://abc.dotaddict.org
La doc DC2 : https://fr.dotclear.org/documentation/2.0
Mes extensions : https://www.mirovinben.fr/blog/index.ph … pluginsDC2
Mes marqueurs de template : https://www.mirovinben.fr/blog/index.php?post/id3553
Hors ligne
ce mini URL-handler qui, pour l'instant, ne me cause pas du tout.
j'ai trouvé ça
$core->addBehavior('urlHandlerBeforeGetData',array('myBehaviors','beforeGetData'));
class myBehaviors
{
public static function beforeGetData($_ctx)
{
global $core;
if ($_ctx->current_tpl == "category.html") {
$tpl = 'category-'.$_ctx->categories->cat_id.'.html';
if ($core->tpl->getFilePath($tpl)) {
$_ctx->current_tpl = $tpl;
}
}
}
}
là.
Je vais voir ce que ça donne dans mon cas...
Le B.A.BA : https://abc.dotaddict.org
La doc DC2 : https://fr.dotclear.org/documentation/2.0
Mes extensions : https://www.mirovinben.fr/blog/index.ph … pluginsDC2
Mes marqueurs de template : https://www.mirovinben.fr/blog/index.php?post/id3553
Hors ligne
Ca marche plutôt bien modulo le fait que les mots-clés peuvent avoir des caractères accentués et des espaces.
Mais j'y suis arrivé :
$core->addBehavior('urlHandlerBeforeGetData',array('mrvbBehaviors','newTagTpl'));
function CleanText($txt)
{
$old = array('à','á','â','ã','ä','å','ò','ó','ô','õ','ö','ø','é','è','ê','ë','ç','ì','í','î','ï','ù','ú','û','ü','ÿ','ñ',' ');
$new = array('a','a','a','a','a','a','o','o','o','o','o','o','e','e','e','e','c','i','i','i','i','u','u','u','u','y','n','');
return str_replace($old, $new, $txt);
}
class mrvbBehaviors
{
public static function newTagTpl($_ctx)
{
global $core;
if ($_ctx->current_tpl == "tag.html") {
$tpl = 'tag-'.CleanText($_ctx->meta->meta_id_lower).'.html';
if ($core->tpl->getFilePath($tpl)) {
$_ctx->current_tpl = $tpl;
}
}
}
}
Il suffit de choisir des noms de fichier template alternatifs sans espace ni accent...
Le B.A.BA : https://abc.dotaddict.org
La doc DC2 : https://fr.dotclear.org/documentation/2.0
Mes extensions : https://www.mirovinben.fr/blog/index.ph … pluginsDC2
Mes marqueurs de template : https://www.mirovinben.fr/blog/index.php?post/id3553
Hors ligne
Ca marche plutôt bien modulo le fait que les mots-clés peuvent avoir des caractères accentués et des espaces.
L'idéal serait que Dotclear transforme leur URL sans caractères accentués et espaces des tags (un peu comme le fait TweakURL pour les billets et les catégories). Je ne sais pas si avec un _public.php particulier on peut régler cela.
Hors ligne
C'est une bonne piste en effet, plus simple que celle à laquelle je pensais.
Je serais intéressé par la méthode à laquelle tu pensais. Même si le code issu des cogitations de Pep me convient dans le cas présent.
Le B.A.BA : https://abc.dotaddict.org
La doc DC2 : https://fr.dotclear.org/documentation/2.0
Mes extensions : https://www.mirovinben.fr/blog/index.ph … pluginsDC2
Mes marqueurs de template : https://www.mirovinben.fr/blog/index.php?post/id3553
Hors ligne
Je pensais à l'enregistrement d'un URL-handler via la fonction register (voir le plugin tag qui enregistre ses schémas d'URL dans _prepend.php, et le code associé dans _public.php)
Mais c'est une enclume pour écraser une mouche…
Dotclear addicted since 2004
Hors ligne
Vous n'êtes pas identifié(e).