Dotclear

Vous n'êtes pas identifié(e).

Annonce

13 février 2024 Sortie de Dotclear 2.29

#1 2013-02-17 06:50:31

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Comment ajouter un fichier template personnalisé

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.

Hors ligne

#2 2013-02-17 07:51:46

Franck
Footer de merde
Lieu : Paris
Inscription : 2004-11-09
Site Web

Re : Comment ajouter un fichier template personnalisé

Va falloir écrire un mini URL-handler côté thème (_public.php est un bon endroit pour faire ça) pour servir ce template particulier.


Dotclear addicted since 2004

Hors ligne

#3 2013-02-17 08:09:21

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : Comment ajouter un fichier template personnalisé

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... ;-)

Hors ligne

#4 2013-02-17 08:13:37

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : Comment ajouter un fichier template personnalisé

Mirovinben a écrit :

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;
			}
		}
	}
}

.

Je vais voir ce que ça donne dans mon cas...

Hors ligne

#5 2013-02-17 08:37:22

Franck
Footer de merde
Lieu : Paris
Inscription : 2004-11-09
Site Web

Re : Comment ajouter un fichier template personnalisé

C'est une bonne piste en effet, plus simple que celle à laquelle je pensais.


Dotclear addicted since 2004

Hors ligne

#6 2013-02-17 10:01:41

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : Comment ajouter un fichier template personnalisé

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...

Hors ligne

#7 2013-02-17 10:07:32

Jean-Michel
Modérateur à ailes d'ange
Lieu : Paris
Inscription : 2006-08-22
Site Web

Re : Comment ajouter un fichier template personnalisé

Mirovinben a écrit :

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

#8 2013-02-17 15:45:20

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : Comment ajouter un fichier template personnalisé

Franck Paul a écrit :

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.

Hors ligne

#9 2013-02-17 17:35:03

Franck
Footer de merde
Lieu : Paris
Inscription : 2004-11-09
Site Web

Re : Comment ajouter un fichier template personnalisé

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).

Pied de page des forums

Sites map