Vous n'êtes pas identifié(e).
13 février 2024 Sortie de Dotclear 2.29
Bonjour m'sieurs dames !
Je profite de mes vacances pour mettre à jour mes thèmes. J'aimerais en profiter pour simplifier la vie aux utilisateurs de Welsh 2.0 en leur proposant une interface simple d'alimentation des onglets, d'une part, et le marquage auto de l'onglet actif, d'autre part.
J'ai téléchargé diverses ressources mais je dois constater que par défaut de fabrication à ma naissance ou ralentissement des neuronnes dû aux vacances, je n'arrive à pas grand-chose, voire – osons le mot –, au néant complet.
Un codeur serait-il intéressé pour y bosser ? Il va sans dire que je partagerais les royalties qui vont avec :-P
La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?
Hors ligne
Non, je ne veux pas que le thème impose l'installation d'un plugin. Je préfèrerais encore me passer de ces fioritures et faire un tuto de personnalisation à côté.
(Je suis assez sectaire sur ce point de la séparation, rien ne dit que le plugin sera(it) maintenu, qu'il resterait de bonne qualité question code, compatible avec une version dc ultérieure, etc.)
La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?
Hors ligne
> Kozlika : C'est quoi ton cahier de charges :)
Ca serait bien que tu definisse clairement ce que tu voudrais pour voir ce que l'on peux faire.
Pour memoire, Menu freshy est construit à partir d'une de mes ébauches de plugin, lui même fortement calqué sur le plugin blogroll.
Son auteur ( de Menu freshy ) a laisser trainé des defauts de la version alpha et ca serait bien de nettoyer un peux le code.
Pour ma part j'ai continué le dev de l'idée avec le plugin menu ( voir topic dédié ).
Je me suis pris au jeu et j'ai plein de projets pour celui-ci. Je travaille actuellement sur une version (alpha) ou j'ai jeté les prémices de liens auto, mais je suis confronté au dilemme de faire quelque chose de complet et en même temps simple à utiliser. Kozlika, je t'invite à tester cette version alpha et de voir si il y a des idées qui t'intéresse dedans.
Peut-être que le truc ce serait de faire une version lite du plug menu et une autre plus avancée pour ceux qui aiment le parametrage.
Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/
Hors ligne
Dans l'idéal :
- un panneau de config depuis l'admin du thème pour ajouter/enlever des onglets
- une fonction dans un fichier _public.php permettant d'affecter l'id active au lien de l'item/onglet concerné quand la page affichée correspond à un onglet (catégorie, page de contact, billet précis, archives, ou que sais-je encore parmi les liens internes possibles, maintien sur blog le reste du temps)
Je ne peux rien tester d'ici. J'ai une clé 3G, le moindre téléchargement me coûte la conso d'une semaine :-)
La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?
Hors ligne
- une fonction dans un fichier _public.php permettant d'affecter l'id active au lien de l'item/onglet concerné quand la page affichée correspond à un onglet (catégorie, page de contact, billet précis, archives, ou que sais-je encore parmi les liens internes possibles, maintien sur blog le reste du temps)
Pour les billets et catégories, il y a le _public.php du thème clair de lune, qui gère les onglets actifs dans ces contextes, c'est la seule difficulté résolue en son temps par Pep. Pour les contextes archives, pages ou tags, il suffit de marque l'onglet actif dans le tpl correspondant
Hors ligne
Uh ? Tu veux dire éditer chaque fichier de contexte à chaque fois qu'on veut ajouter/supprimer/modifier un onglet pour répercuter la modif partout ? Eh bé... euh je décline la proposition :-P
La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?
Hors ligne
Bah non, c'est complémentaire :
* le script pour les onglets actifs en contexte catégorie ou billet
* l'onglet actif sur accueil (ou blog) dans les tags et archives, ou un onglet spécifique pour ces contextes
* et...
...un fichier config.php avec une interface dans l'éditeur de thème pour les onglets à rajouter selon les cas ('fin là je crois que c'est possible, comme le fait blowup pour les styles)
Hors ligne
Je ne suis pas très sûre qu'on parle de la même chose en fait (et/ou je pige rien à ce que tu m'expliques). En gros l'utilisateur peut très bien décider de mettre en onglets
* accueil
* contact
* telle catégorie
* tel tag
* un autre site
ou
* accueil
* cat1
* cat 3
* février 2007
* blogroll
* un autre blog
ou tout ce qui lui passera par la tête
On ignore évidemment les liens "sortants" pour le marquage "active" de l'onglet. Mais pour les autres il faudrait que le marquage "active" se fasse via une fonction qui "reconnaîsse" la correspondance page affichée/onglet existant sans présupposer des choix que fera l'utilisateur du thème pour ses onglets. Clair de lune concerne un blog dont les onglets correspondent aux différentes catégories, ce qui n'est qu'un cas possible. Si ça se trouve c'est trop ardu pour faire ça dans un _public.php hein. J'en sais fichtre rien moi. D'où mon appel à l'aide.
La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?
Hors ligne
Effectivement on ne parle pas la même chose, je voyais ça avec bôôcoup moins de contraintes et de possibilités de personnalisation. C'est pas gagné ton affaire : il te faut un sorcier diplômé ;)
Hors ligne
En fait, ce sont des widgets qu'il te faudrait pour ce menu...
Hors ligne
Hein ? (bon je crois que bosser en vacances spa mon truc :-P)
La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?
Hors ligne
Je ne suis pas très sûre qu'on parle de la même chose en fait (et/ou je pige rien à ce que tu m'expliques). En gros l'utilisateur peut très bien décider de mettre en onglets
* accueil
* contact
* telle catégorie
* tel tag
* un autre siteou
* accueil
* cat1
* cat 3
* février 2007
* blogroll
* un autre blogou tout ce qui lui passera par la tête
On ignore évidemment les liens "sortants" pour le marquage "active" de l'onglet. Mais pour les autres il faudrait que le marquage "active" se fasse via une fonction qui "reconnaîsse" la correspondance page affichée/onglet existant sans présupposer des choix que fera l'utilisateur du thème pour ses onglets. Clair de lune concerne un blog dont les onglets correspondent aux différentes catégories, ce qui n'est qu'un cas possible. Si ça se trouve c'est trop ardu pour faire ça dans un _public.php hein. J'en sais fichtre rien moi. D'où mon appel à l'aide.
Ce que tu décrit est en fait exactement l'approche que j'ai avec le plugin menu.
Dans l'état, toutes les possibilités de choix ne sont pas encore codée mais le moteur fonctionne pour un certain nombre d'option tel que les liens Accueil, liste des tags, liste des catégories, liste des billets sélectionnées ... A terme il sera possible de faire un peux près tout ce que l'on veux.
L'intérêt que je vois par rapport à l'utilisation de widgets, c'est de pouvoir rendre dynamique les css qui permettent de différencier l'apparence d'un lien suivant le contexte ( lien actif, lien parent actif, etc.
Mais je ne vois pas de possibilité de faire cela autrement que dans un plugin.
Je suis toutefois d'accord avec toi pour ne pas forcer l'utilisation d'un plugin pour le fonctionnement d'un thème et ton idée de tuto est à mon avis bonne, ce qui laisse le choix à l'utilisateur. Après tout chacun peux avoir des besoins différents.
Pour ce qui est de juste marquer un lien actif, c'est faisable en codant un tpl sans rien de trop sorcier pour l'utilisateur à le mettre en place, surtout avec l'éditeur de thème intégré à dotclear... et un bon tuto :).
Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/
Hors ligne
Bon, on fait un deal alors ? Je ne sais pas en quoi je peux t'aider mais ça sera bien volontiers si tu éduques mon bébé à reconnaître les liens actifs ;-)
La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?
Hors ligne
Ok, voilà la syntaxe que je te propose ( ca peux se discuter ) :
<tpl:BlockMenu>
{{tpl:Item title="Accueil" url="/"}}
{{tpl:Item title="Lien 2" url="http://domaine/Lien-2"}}
</tpl:BlockMenu>
Le premier template <tpl:BlockMenu> se charge d'écrire <ul>..... </ul> et récupère l'url de la page courante pour le test du lien actif dans une variable.
Le deuxième template {{tpl:Item}} permet de définir le titre et l'url de chaque lien et génère le code de l'item, soit
<li><a href="/ur-du-lienl">Titre du lien</a></li>, et ajoute id="active" si c'est le cas.
Je peux prévoir pour que cela fonctionne aussi bien avec les url relatives que absolues.
Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/
Hors ligne
Hey ça sonne bien ta musique \o/
La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?
Hors ligne
Bonjour m'sieurs dames !
Je profite de mes vacances pour mettre à jour mes thèmes. J'aimerais en profiter pour simplifier la vie aux utilisateurs de Welsh 2.0 en leur proposant une interface simple d'alimentation des onglets, d'une part, et le marquage auto de l'onglet actif, d'autre part.
J'ai téléchargé diverses ressources mais je dois constater que par défaut de fabrication à ma naissance ou ralentissement des neuronnes dû aux vacances, je n'arrive à pas grand-chose, voire – osons le mot –, au néant complet.
Un codeur serait-il intéressé pour y bosser ? Il va sans dire que je partagerais les royalties qui vont avec :-P
Le plugin menuFreshy fait cela depuis le début (decembre 2007),
des explications un poils plus détaillé ici http://www.myouaibe.com/index.php/post/ … reshy-v-13
A+
http://www.amomp.com/recyclage-cartouche-encre.php Associez le geste écologique au geste solidaire, ne jetez plus vos cartouches d'encres
http://www.passion-tarn-et-garonne.info Ma p'tite galerie et blog DC
Hors ligne
> f_trt
On en a déjà parlé sur ce topic, mais c'est pas grave, ca marrive aussi ;-)
>kozlika
Voilà le code pour les deux tpl comme convenu :
$core->tpl->addBlock('BlockMenu',array('tplMoreTpl','BlockMenu'));
$core->tpl->addValue('EntryItem',array('tplMoreTpl','EntryItem'));
class tplMoreTpl
{
/*
use :
<tpl:BlockMenu>
</tpl:BlockMenu>
*/
public static function BlockMenu($attr,$content)
{
return
'<?php $url = $_SERVER[\'REQUEST_URI\']; $abs_url = http::getHost().$url;'."\n".
'echo \'<ul>\'; ?>'."\n".
$content.
'<?php echo \'</ul>\'; ?>'."\n";
}
/*
use :
{{tpl:EntryItem title="link title" url="/link-url"}}
url should be relating or absolute
*/
public static function EntryItem($attr)
{
if (isset($attr['title']) != '' && isset($attr['url']) != '') {
$link_url = trim($attr['url']);
$item =
'<li'.
'<?php $link_url = "'.$link_url.'";'."\n".
'if ($url == $link_url || $abs_url == $link_url ) {'.
' echo \' id="active"\';'.
'} ?>'.
'><a href="'.$link_url.'">'.trim($attr['title']).'</a></li>';
return $item;
}
return;
}
}
Et le code dans le template :
<tpl:BlockMenu>
{{tpl:EntryItem title="Accueil" url="/"}}
{{tpl:EntryItem title="Lien 2" url="http://domaine/Lien-2"}}
</tpl:BlockMenu>
Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/
Hors ligne
Youloulou ! grand merci j'essaie ça demain matin :-)
La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?
Hors ligne
Ça roule impec, merci beaucoup !
J'ai apporté deux tites modifs (me demande encore comment j'ai réussi toute seule ;-))
- renommage de EntryItem en TabItem
- et surtout pose de l'id="active" sur le lien et non sur l'item.
Ce qui donne au final pour le fichier _public.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('tplMoreTpl','BlockMenu'));
$core->tpl->addValue('TabItem',array('tplMoreTpl','TabItem'));
class tplMoreTpl
{
/**
use :
<tpl:BlockMenu>
</tpl:BlockMenu>
*/
public static function BlockMenu($attr,$content)
{
return
'<?php $url = $_SERVER[\'REQUEST_URI\']; $abs_url = http::getHost().$url;'."\n".
'echo \'<ul>\'; ?>'."\n".
$content.
'<?php echo \'</ul>\'; ?>'."\n";
}
/*
use :
{{tpl:TabItem title="link title" url="/link-url"}}
url should be relating or absolute
*/
public static function TabItem($attr)
{
if (isset($attr['title']) != '' && isset($attr['url']) != '') {
$link_url = trim($attr['url']);
$item =
'<li><a href="'.$link_url.'"'.
'<?php $link_url = "'.$link_url.'";'."\n".
'if ($url == $link_url || $abs_url == $link_url ) {'.
' echo \' id="active"\';'.
'} ?>'.
'>'.trim($attr['title']).'</a></li>';
return $item;
}
return;
}
}
?>
Question : le nommage de la class en moreTpl risque-t-il de poser un problème si l'utilisateur a par ailleurs installé le plugin du même nom ?
Merci encore mille fois beaucoup. Me suis fait un todo (ou plutôt un I wish) pour les versions suivantes de ce menu, mais en l'état ça sera parfait pour livraison d'une version 1.0
La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?
Hors ligne
"Question : le nommage de la class en moreTpl risque-t-il de poser un problème si l'utilisateur a par ailleurs installé le plugin du même nom ?"
Je t'ai donné le code avec la class moreTpl par commodité pour l'exemple, mais si tu met ce code, comme je le suppose directement dans _public.php de ton thème, je pense qu'il vaux mieux personnaliser le nom de cette class, en plus, ça mange pas de pain :)
J'ai repris un peux le code pour le rendre plus concis :
<?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)
{
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>';
}
return;
}
}
?>
Par la suite tu pourrait définir par exemple un attribut mode, pour n'avoir à saisir que la nature du lien,
exemple :
{{tpl:TabItem mode="home"}} donnerait automatiquement le code pour le lien Accueil,
et dans le même ordre d'idée :
{{tpl:TabItem mode="tags"}}
{{tpl:TabItem mode="archive"}}
{{tpl:TabItem category="ma-categorie"}}
ect...
Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/
Hors ligne
Hi hi, c'était dans ma whishlist :-P
La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?
Hors ligne
Salut le monde !
Je me permet de dévier un peu du sujet initial. pour se concentrer sur la manière de rajouter une id "active" sur les liens du menu.
Cette solution pour "mettre en active" les liens du menu est extra ! Toutefois j'aimerais bien m'en servir pour mon propre thème. Mais hélas l'id active est une class (mais c'est ça c'est simple à changer) et surtout cette class se rajoute non pas dans la balise <a> mais dans la balise <li> comme ceci:
<li class="active"><a href="{{tpl:BlogURL}}">Home</a></li>
Est-ce qu'il y aurait possibilité de modifier un peu le code de _public.php pour obtenir cela ? Et est-ce que quelqu'un pourrait me le faire ?
Un grand merci ! Moi et le php ce n'est pas encore ça ^^'
Hors ligne
<?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('tplWelshTpl','BlockMenu'));
$core->tpl->addValue('TabItem',array('tplWelshTpl','TabItem'));
class tplWelshTpl
{
/**
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)
{
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>';
}
return;
}
}
/**
utilisation dans le template
<tpl:BlockMenu>
{{tpl:TabItem title="Accueil" url="/"}}
{{tpl:TabItem title="Lien 2" url="http://domaine/Lien-2"}}
</tpl:BlockMenu>
*/
?>
La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?
Hors ligne
C'est le cas en #18 ( http://forum.dotclear.net/viewtopic.php … 22#p220622 )
Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/
Hors ligne
Vous n'êtes pas identifié(e).