Dotclear

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

Annonce

13 février 2024 Sortie de Dotclear 2.29

#26 2008-08-17 20:34:53

Kozlika
Modo dcTeam
Inscription : 2004-05-08
Site Web

Re : Besoin d'aide pour mon thème Welsh 2.0

Oups l'un de nous deux a compris la question à l'envers, adjaya ! (je parie que c'est moi, telle que je me connais...)

Guirec, tu veux l'id active sur le a ou sur le li ?


La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?

Hors ligne

#27 2008-08-17 21:05:27

Guirec
Membre
Lieu : Blois
Inscription : 2006-05-23
Site Web

Re : Besoin d'aide pour mon thème Welsh 2.0

L'id sur le li !

Merci ! Je n'avais pas trop regardé le code plus haut car j'ai lu l'interrogation de Kozlika sur l'impac du nom de la classe avec le plugin du même nom et je me suis dis que la dernière version de code serait la meilleure.

Merci beaucoup à vous deux ! J'ai réussi à faire tel que je le souhaitais.

Hors ligne

#28 2008-08-18 05:38:38

adjaya
Membre
Lieu : Provence - Luberon
Inscription : 2006-09-05
Site Web

Re : Besoin d'aide pour mon thème Welsh 2.0

Kozlika a écrit :

Oups l'un de nous deux a compris la question à l'envers, adjaya ! (je parie que c'est moi, telle que je me connais...)

Guirec, tu veux l'id active sur le a ou sur le li ?

Non, c'est tout bon, mais ta réponse à précédé la mienne d'une poignée de secondes, c'est pour cela que je ne l'avais pas vu :)


Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/

Hors ligne

#29 2008-08-27 07:18:28

bgermain
Membre
Inscription : 2008-08-20

Re : Besoin d'aide pour mon thème Welsh 2.0

bonjour,

je travailles actuellement sur un theme dotclear 2 pour mon blog perso que je veux migrer de DC1 vers DC2 et je cherchais comment mettre un onglet actif dans ma liste de catégories quand je suis finalement tombé sur ce sujet du forum après 3 jours de recherches.

J'ai donc copié le code proposé un peu plus haut dans le sujet dans un fichier _public.php placé dans mon dossier de thème. J'ai ensuite créé un fichier _menu.html que j'ai inclus dans les templates de mon thème avec le code suivant (à peu de choses près, car ce n'est pas un copié collé de mon code) :

	<tpl:BlockMenu>
	  <tpl:Category>
             {{tpl:TabItem title="{{tpl:CategoryTitle encode html="1"}}" url="{{tpl:CategoryURL}}"}}
	  </tpl:Category>
	</tpl:BlockMenu>

Quand je rafraichit la partie publique de mon blog j'ai un message d'erreur php qui m'indique qu'un problème s'est produit. Après une rapide recherche en modifiant le template, il s'avère que le problème provient de {{tpl:CategoryURL}} qui fait planter la fonction de _public.php qui sert à marquer l'id active sur la catégorie.

Y aurait il quelque chose que j'ai fait de travers ?

Hors ligne

#30 2008-08-27 07:31:34

adjaya
Membre
Lieu : Provence - Luberon
Inscription : 2006-09-05
Site Web

Re : Besoin d'aide pour mon thème Welsh 2.0

Bonjour bgermain et bienvenue.
Attention, tu ne peux pas inclure un tpl dans un autre, ca ne fonctionne pas.
Les valeurs des attributs url et title du tpl TabItem doivent donc obligatoirement être écrit en dur.
Pour un listage automatique de toutes les catégories avec détection de l'éventuel lien actif il faudra coder.

Ps : J'ai codé un plugin menu et la version 1.6-alfa1 permet cela, mais c'est encore en version alpha, donc bugs en perspective garanti.


Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/

Hors ligne

#31 2008-08-27 08:35:33

bgermain
Membre
Inscription : 2008-08-20

Re : Besoin d'aide pour mon thème Welsh 2.0

merci pour cette réponse rapide adjaya !

Donc si je comprends bien je ne peux pas obtenir la liste de mes catégories automatiquement et à chaque fois que j'ajoutes une catégorie dans mon blog il faudra que j'édites mon fichier _menu.html, c'est dommage.

malheureusement le php5 je ne le connait pas encore ... et comme je suis dans la même démarche de non dépendance à des plugins de mon thème je crois qu'il va falloir que je trouves une autre solution.

Hors ligne

#32 2008-08-27 08:45:43

adjaya
Membre
Lieu : Provence - Luberon
Inscription : 2006-09-05
Site Web

Re : Besoin d'aide pour mon thème Welsh 2.0

Ben j'ai prévu de coder un {{tpl:TabItem mode=categories}} qui fera ce que tu veux, mais faudra patienter un peu.


Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/

Hors ligne

#33 2008-08-27 09:25:52

adjaya
Membre
Lieu : Provence - Luberon
Inscription : 2006-09-05
Site Web

Re : Besoin d'aide pour mon thème Welsh 2.0

Bon, j'ai fait ca vite fait mais j'ai pas encore testé :

<?php
/**
Ces fonctions permettent d'alimenter les onglets du theme
et d'affecter l'id active a l'onglet actif
Merci, grand merci a Adjaya !
*/

$core->tpl->addBlock('BlockMenu',array('tplMaClasse','BlockMenu'));
$core->tpl->addValue('TabItem',array('tplMaClasse','TabItem'));
class tplMaClasse
{
	/**
	use :
	<tpl:BlockMenu>
	</tpl:BlockMenu>
	*/
	public static function BlockMenu($attr,$content)
	{
		return
		'<?php $url = $_SERVER[\'REQUEST_URI\']; $abs_url = http::getHost().$url; ?>'."\n".
		'<ul>'.
		$content.
		'</ul>';
	}
	/*
	use :
	{{tpl:TabItem title="link title" url="/link-url"}}
	url should be relating or absolute
	*/	
	public static function TabItem($attr)
	{
		global $core;
		
		if (isset($attr['title']) != '' && isset($attr['url']) != '')
		{
			return
			'<li><a href="'.trim($attr['url']).'"'.
			'<?php $link_url = "'.trim($attr['url']).'";'."\n".
			'if ($url == $link_url || $abs_url == $link_url) {'.
			'	echo \' id="active"\'; '.
			'} ?>'."\n".
			'>'.trim($attr['title']).'</a></li>';
			
		} elseif (isset($attr['mode'] != '') {
		
			if trim($attr['mode'] == 'categories') {
				$rs = $core->blog->getCategories();
				if (!$rs->isEmpty()) {
					$item = '';
					while ($rs->fetch()) {
						$item .=
						'<li><a href="'.$core->blog->url.$core->url->getBase('category').'/'.
						$rs->cat_url.
						'<?php $link_url = "'.
						$core->blog->url.$core->url->getBase('category').$rs->cat_url.'";'."\n".
						'if ($abs_url == $link_url) {'.
						'	echo \' id="active"\'; '.
						'} ?>'."\n".
						'">'.
						html::escapeHTML($rs->cat_title).'</a>'.
						//($w->postcount ? ' ('.$rs->nb_post.')' : '').
						'</li>';
					}
					return $item;
				}
			}
		}
		return;
	}
}
?>

Logiquement, sauf erreur tu auras la liste des catégories avec

{{tpl:TabItem mode="categories"}}

j'essayerais de trouver le temps de passer ca au test.


Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/

Hors ligne

#34 2008-08-27 09:46:34

bgermain
Membre
Inscription : 2008-08-20

Re : Besoin d'aide pour mon thème Welsh 2.0

Alors là chapeau bas ... je n'en attendais pas tant !

Si tu n'as pas le temps de le tester, je testerais ça ce soir sur mon dev à la maison (je bosses en local sur mon ordi à la maison et là je suis au boulot) et je te ferais un retour ici même.

Un grand merci à toi.

Hors ligne

#35 2008-08-27 15:11:01

adjaya
Membre
Lieu : Provence - Luberon
Inscription : 2006-09-05
Site Web

Re : Besoin d'aide pour mon thème Welsh 2.0

Pour t'éviter du débugage, voilà le code testé :
Remplacer la fonction TabItem précédente par celle ci :

	/*
	use exemple:
	1. {{tpl:TabItem title="link title" url="/link-url"}} : simple link ( url should be relating or absolute ).
	2. {{tpl:TabItem mode="categories"}} : categories list.
	*/	
	public static function TabItem($attr)
	{
		global $core;
		
		if (isset($attr['title']) != '' && isset($attr['url']) != '')
		{
			return
			'<li><a href="'.trim($attr['url']).'"'.
			'<?php '.
			'if ($url == "'.trim($attr['url']).'" || $abs_url == "'.trim($attr['url']).'") {'.
			'	echo \' id="active"\'; '.
			'} ?>'."\n".
			'>'.trim($attr['title']).'</a></li>';
			
		} elseif (isset($attr['mode']) != '') {
		
			if (trim($attr['mode']) == 'categories') {
				$rs = $core->blog->getCategories();
				if (!$rs->isEmpty()) {
					$item = '';
					while ($rs->fetch()) {
						$item .=
						'<li><a href="'.$core->blog->url.$core->url->getBase('category').'/'.
						$rs->cat_url.'"'.
						'<?php '.
						'if ($abs_url == "'.$core->blog->url.$core->url->getBase('category').'/'.
						$rs->cat_url.'") {'.
						'	echo \' id="active"\'; '.
						'} ?>'."\n".
						'>'.html::escapeHTML($rs->cat_title).'</a>'.
						//($w->postcount ? ' ('.$rs->nb_post.')' : '').
						'</li>'."\n  ";
					}
					return $item;
				}
			}
		}
		return;
	}

Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/

Hors ligne

#36 2008-08-27 18:36:57

bgermain
Membre
Inscription : 2008-08-20

Re : Besoin d'aide pour mon thème Welsh 2.0

c'est royal ça marche du feu de dieu !

Merci Adjaya pour ton aide sur mon problème et ta réactivité exemplaire :)

Juste une petite question finale : y a t il un moyen simple de rendre ton code compatible avec le contexte des billets (histoire que l'onglet soit aussi actif et indique la cat du billet).
Quoi qu'il en soit si ça demande trop de modifs ne t'embêtes pas, je passerais par un template un poil différent sur le contexte billet (y a plus de possibilité que dans le contexte catégorie avec le langage de base et la possibilité de voir si le billet appartient à une catégorie et donc mettre son id active avec entryIf).

Hors ligne

#37 2008-08-27 21:10:18

bgermain
Membre
Inscription : 2008-08-20

Re : Besoin d'aide pour mon thème Welsh 2.0

mouarf en fait je viens de me rendre compte que si on fait un entryIf avec un element de template de categories et ben ça marche pas ... du coup mon idée de tester le nom de la catégorie par rapport au contexte billet et afficher le nom de la catégory passe pas :/, le test category="!{{tpl:entryCategory}}" ne passe pas

Hors ligne

#38 2008-08-27 22:20:36

adjaya
Membre
Lieu : Provence - Luberon
Inscription : 2006-09-05
Site Web

Re : Besoin d'aide pour mon thème Welsh 2.0

Tu peux faire ca avec un tpl de test de contexte qui va shunter la variable "$abs_url" si on est en mode "post" et que le billet a une catégorie.
Tu ajoute la déclaration du tpl suivant à la suite des autres

$core->tpl->addValue('IfContext',array('tplMaClasse','IfContext'));

et la fonction qui va avec dans la classe tplMaClasse

	/*
	Use :
	{{tpl:IfContext is="post"}} 
	*/
	public static function IfContext($attr)
	{
		if (isset($attr['is']) == 'post')
		{
			return
			'<?php '.
			'if ($core->url->type == "post" && $_ctx->posts->cat_id) {'."\n".
			'	$abs_url = $_ctx->posts->getCategoryURL(); '.
			'} '.
			'?>';
		}
	}

Ce qui donne dans head.html

<tpl:BlockMenu>
  {{tpl:IfContext is="post"}}

  {{tpl:TabItem mode="categories"}}
</tpl:BlockMenu>

Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/

Hors ligne

#39 2008-08-27 22:23:04

adjaya
Membre
Lieu : Provence - Luberon
Inscription : 2006-09-05
Site Web

Re : Besoin d'aide pour mon thème Welsh 2.0

Dans top.html plutôt !!


Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/

Hors ligne

#40 2008-08-28 05:55:37

bgermain
Membre
Inscription : 2008-08-20

Re : Besoin d'aide pour mon thème Welsh 2.0

Franchement tu assures !
ça marches nickel, tu ponds ça super vite et ça marche impec !

Merci beaucoup mon blog ressemble exactement à ce que je voulais :D

juste une interrogation (plus pour la forme), pourquoi avoir choisi une écriture de type{{tpl:...}} plutôt que <tpl:...> ?

Hors ligne

#41 2008-08-28 06:41:32

Kozlika
Modo dcTeam
Inscription : 2004-05-08
Site Web

Re : Besoin d'aide pour mon thème Welsh 2.0

{{tpl:plop}} affiche des choses
<tpl:truc> traite des choses


La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?

Hors ligne

#42 2008-08-28 07:10:48

adjaya
Membre
Lieu : Provence - Luberon
Inscription : 2006-09-05
Site Web

Re : Besoin d'aide pour mon thème Welsh 2.0

Kozlika a écrit :

{{tpl:plop}} affiche des choses
<tpl:truc> traite des choses

Oui, d'une manière générale, mais dans le cas présent {{tpl:IfContext is="post"}} n'affiche rien sur le blog, mais change la valeur de $abs_url à comparer avec celle du lien pour savoir ci celui-ci est actif pour un contexte particulier.
j'aurais pu faire cela en ajoutant un attribut sur <tpl:BlockMenu> , mais je ne voulais pas compliquer le fonctionnement de ce tpl pour que l'utilisation de base reste simple et claire.
Ceci pour dire que l'utilisation des tpl est très souple et qu'une personnalisation est souvent possible sans forcement toucher au code initial.


Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/

Hors ligne

#43 2008-08-28 08:05:24

bgermain
Membre
Inscription : 2008-08-20

Re : Besoin d'aide pour mon thème Welsh 2.0

merci pour ces explications, c'est donc un choix de ta part adjaya comme je le pensais. Effectivement un <tpl:BlockMenu mode="categories" ifContextIs="post"> ... Idéalement il faudrait un simple template de test dans tous les environnements ...

<tpl:If test="parametre">
....
</tpl:If>
<tpl:ElseIf test="autreparametre">
....
</tpl:ElseIf>

Avec un elseIf sans paramètre équivalent à else ...

Hors ligne

#44 2008-08-28 08:12:07

Kozlika
Modo dcTeam
Inscription : 2004-05-08
Site Web

Re : Besoin d'aide pour mon thème Welsh 2.0

Oh oui, réinventons le php ! ;-)


La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?

Hors ligne

#45 2008-08-28 08:13:56

bgermain
Membre
Inscription : 2008-08-20

Re : Besoin d'aide pour mon thème Welsh 2.0

c'est sûr, c'est un peu réinventer la roue ...

Hors ligne

#46 2008-08-28 09:14:21

adjaya
Membre
Lieu : Provence - Luberon
Inscription : 2006-09-05
Site Web

Re : Besoin d'aide pour mon thème Welsh 2.0

bgermain a écrit :

merci pour ces explications, c'est donc un choix de ta part adjaya comme je le pensais. Effectivement un <tpl:BlockMenu mode="categories" ifContextIs="post"> ... Idéalement il faudrait un simple template de test dans tous les environnements ...

<tpl:If test="parametre">
....
</tpl:If>
<tpl:ElseIf test="autreparametre">
....
</tpl:ElseIf>

Avec un elseIf sans paramètre équivalent à else ...

Il y a plus simple, et c'est d'ailleurs surement comme ca que je ferais évoluer :

{{tpl:IfContext is="param1,param2,param3"}}
C'est à dire de pouvoir accepter plusieurs valeurs sur un même attribut avec un séparateur ( ici une",". Il y a déjà des tpl dans dotclear qui fonctionnent ainsi, par exemple
<tpl:Entries category="cat_url1,cat_url2">


Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/

Hors ligne

#47 2008-08-28 12:49:26

bgermain
Membre
Inscription : 2008-08-20

Re : Besoin d'aide pour mon thème Welsh 2.0

c'est effectivement pas mal d'envisager les choses sous cet angle,par contre je me demande s'il ne serait pas mieux dans le cadre d'un templatage (excusez le néologisme) plus souple de permettre à l'utilisateur de choisir son balisage un comme ça :

<tpl:BlockMenu>
  <TAG>
  <tpl:IfContext is="param1,param2,param3">
      <TAG arg="{{tpl:value}}" class="pouet">{{tpl:truc}}</TAG>
  </tpl:IfContext>
  </TAG>
</tpl:BlockMenu>

etc, comme ça on est libre de ne pas coder une liste pour un menu, de le mettre dans un div pour séparer le code du reste ...
Mais à mon avis à ce niveau de détail on a plus vite fait de passer par un plugin ... ou de copier un plug de template genre moretpl dans son public.php

Hors ligne

#48 2008-08-28 13:44:01

adjaya
Membre
Lieu : Provence - Luberon
Inscription : 2006-09-05
Site Web

Re : Besoin d'aide pour mon thème Welsh 2.0

Je suis d'accord avec toi, il y a toujours plusieurs manières d'aborder un problèmes et autant de solutions qu'il y a d'utilisateurs. Et en général les utilisateurs sont bien plus nombreux que les codeurs, donc impossible de contenter tout le monde.
Quand je me lance dans du code, c'est que j'ai pris le temps de réfléchir aux avantages et inconvénients de chaque choix à faire, mais mes critères ne seront pas forcement les mêmes pour tous le monde. Je l'ai déjà dit sur ce forum, c'est des fois plus difficile d'être rationnel et pratique sur ce plan que de simplement faire du code qui marche.
Pour ce coup il y a une forme de cahier des charge, car c'est kozlika l'instigatrice de ce topic, avec des exigences assez précises : faire simple pour l'utilisateur.
Ma conclusion serait donc de te dire : lance toi donc, and see :)


Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/

Hors ligne

#49 2008-08-28 18:52:03

bgermain
Membre
Inscription : 2008-08-20

Re : Besoin d'aide pour mon thème Welsh 2.0

oui totalement d'accord ... je suis plutôt dans la catégorie des utilisateurs qui aiment bien les modules souples mais ton template est très simple à comprendre et à modifier (même pour qui ne comprends pas le php5 comme moi) ce qui le rends malgré tout très simple à adapter au niveau du rendu et loin de moi l'idée de changer quoi que ce soit dans ce que tu as codé d'autant plus comme c'est fait ça corresponds aussi très bien à mes besoins.
Par contre quand j'aurais pris le temps d'étudier un peu le php5 je penses que ce que j'ai appris ici grâce toi me permettra de faire mes propres templates et peut être de mettre en application ce que j'ai proposé comme écriture de template.

Hors ligne

#50 2009-02-26 03:36:49

itoben
Membre
Inscription : 2006-02-26

Re : Besoin d'aide pour mon thème Welsh 2.0

Bonjour,

Je réactive ce post car il concerne à la fois le magnifique thème Welsh 2.0 et ses merveilleux onglets :)

Dans le fichier _top.html :

<tpl:BlockMenu>
    {{tpl:TabItem title="Accueil" url="/index.php/"}}
    {{tpl:TabItem title="Actualités" url="/index.php/category/Actualités"}}
    {{tpl:TabItem title="Agenda" url="/index.php/tag/agenda"}}
    {{tpl:TabItem title="Infos pratiques" url="/index.php/category/Sortir/Informations-pratiques"}}
    {{tpl:TabItem title="Sortir" url="/index.php/category/Sortir"}}
    {{tpl:TabItem title="Préventions" url="/index.php/Prévention"}}
    {{tpl:TabItem title="Contact" url="/index.php/contact"}}
    {{tpl:TabItem title="Géolocalisation" url="/index.php/dotmap.html"}}
    {{tpl:TabItem title="Archives" url="/index.php/archive"}}
</tpl:BlockMenu>

J'aimerai mettre une couleur différente pour chacun des titres.

Et je ne trouve pas le code qui permettrait d'associer une couleur différente pour "Accueil", "Actualités", "Agenda"...

Quelqu'un a une idée, svp ?

Hors ligne

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

Pied de page des forums

Sites map