09
fév. 07
Mettre en place un fil d'ariane
Par Guillaume BIZET | Lien permanent
Suite au commentaire de Jean-Michel et à de nombreuses demandes par mail auxquelles j'avais répondu ... par mail, je me suis dis que le plus simple était encore d'expliquer comment j'avais mis en place ce fil d'ariane si pratique pour se retrouver dans les méandres d'un blog.
Alors voilà, tout est parti d'un code en stock que Pep avait publié sur son blog. N'arrivant pas à le retrouver dans ses archives, je me permets de le publier ici.
Ce code est à copier/coller dans votre prepend.php
function dcQuickNavbar(
$block = '<div id="quicknav" class="little"><p>%s</p></div>',
$item = ' > %s',
$nav_str = 'Vous êtes ici : <a href="%s" title="retour à la page de garde">Accueil</a>')
{
global $blog, $news;
$mode = ($GLOBALS['mode'] ==
'pagination')?$GLOBALS['dc_orig_mode']:$GLOBALS['mode'];
$comp_cat_url = '';
$nav_str = sprintf($nav_str, dc_blog_url);
if ($mode == 'cat') {
$nav_str .= sprintf($item,$news->f('cat_libelle'));
} elseif ($mode == 'related') {
$nav_str .= sprintf($item,$GLOBALS['related_title']);
} elseif ($mode == 'month') {
if ($GLOBALS['cat_id'] != '') {
$cat_link =
'<a href="'.
sprintf($blog->front_url['cat'],$comp_cat_url.$news->f('cat_libelle_url')).
'" '.
sprintf('title="%s"',$news->f('cat_libelle')).
'>'.$news->f('cat_libelle').'</a>';
$nav_str .= sprintf($item, $cat_link);
}
$ts = strtotime($GLOBALS['year'].'-'.$GLOBALS['month'].'-01
00:00');
$nav_str .= sprintf($item,dt::str('%B %Y',$ts));
} elseif ($mode == 'post') {
$cat_link =
'<a href="'.
sprintf($news->blog->front_url['cat'],$comp_cat_url.$news->f('cat_libelle_url')).
'" '.
sprintf('title="%s"',$news->f('cat_libelle')).
'>'.$news->f('cat_libelle').'</a>';
$nav_str .=
sprintf($item, $cat_link).
sprintf($item, $news->f('post_titre'));
} elseif ($mode == 'toc') {
$nav_str .= sprintf($item,"Archives");
}
printf($block,$nav_str);
}
Mais je ne le trouvait pas assez complet par rapport aux différents mode de Dotclear que j'utilisais, donc avec l'aide d'un auter dotclearien on a étendu le code de Pep pour qu'il soit utilisable aussi pour la partie galerie photo (Plugin Gallery 0.9 de Dsls.
Il faut l'insérer juste avant
}
printf($block,$nav_str);
}
Voici donc l'ajout effectué
} elseif ($mode == 'galleryCat') {
ob_start();
dcGallery::catTitle();
$catTitle=ob_get_contents();
ob_end_clean();
ob_start();
dcGallery::homeURL();
$homeURL=ob_get_contents();
ob_end_clean();
ob_start();
dcGallery::catURL();
$catURL=ob_get_contents();
ob_end_clean();
$nav_str .= sprintf($item,"<a href=\"$homeURL\">Galeries</a>");
} elseif ($mode == 'galleryGal') {
ob_start();
dcGallery::catTitle();
$catTitle=ob_get_contents();
ob_end_clean();
ob_start();
dcGallery::homeURL();
$homeURL=ob_get_contents();
ob_end_clean();
ob_start();
dcGallery::catURL();
$catURL=ob_get_contents();
ob_end_clean();
ob_start();
dcGallery::galTitle();
$galTitle=ob_get_contents();
ob_end_clean();
ob_start();
dcGallery::galURL();
$galURL=ob_get_contents();
ob_end_clean();
$nav_str .= sprintf($item,"<a href=\"$homeURL\">Galeries</a>");
$nav_str .= sprintf($item, "<a href=\"$catURL\">$catTitle</a>" );
$nav_str .= sprintf($item, "<a href=\"$galURL\">$galTitle</a>" );
} elseif ($mode == 'galleryImage') {
ob_start();
dcGallery::homeURL();
$homeURL=ob_get_contents();
ob_end_clean();
ob_start();
dcGallery::catURL();
$catURL=ob_get_contents();
ob_end_clean();
ob_start();
dcGallery::catTitle();
$catTitle=ob_get_contents();
ob_end_clean();
ob_start();
dcGallery::galTitle();
$galTitle=ob_get_contents();
ob_end_clean();
ob_start();
dcGallery::galURL();
$galURL=ob_get_contents();
ob_end_clean();
ob_start();
dcGallery::imageURL();
$imageURL=ob_get_contents();
ob_end_clean();
ob_start();
dcGallery::imageName();
$imageName=ob_get_contents();
ob_end_clean();
$nav_str .= sprintf($item,"<a href=\"$homeURL\">Galeries</a>");
$nav_str .= sprintf($item, "<a href=\"$catURL\">$catTitle</a>" );
$nav_str .= sprintf($item, "<a href=\"$galURL\">$galTitle</a>" );
et enfin la partie spécifique au plugin toc de Franck Paul
Il faut là encore l'insérer juste avant
Il faut l'insérer juste avant
}
printf($block,$nav_str);
}
} elseif ($mode == 'tocHome') {
$nav_str .= sprintf($item,"<a href=\"$homeURL\">Plan du site</a>");
}
Vous pourrez retrouver ce code complet en fichier attaché à ce billet (voir en bas de post)
Pour que ce fil d'ariane apparaisse sur votre blog, il ne vous manque plus qu'à insérer le code ci-dessous dans votre template.php
<?php dcQuickNavbar(); ?>
Voilà vous avez donc un fil d'ariane complet pour votre blog.
Comme vous avez pu le constater, il prends en charge différents modes de dotclear :
- cat
- post
- month
- pagination
- related
A ceux déjà pris en charge il a donc été rajouté les modes :
- galleryCat
- galleryGal
- galleryImage
- tocHome
Il manque encore pour moi juste un fil d'ariane quand on clique sur un tag et la boucle serait bouclée, si vous avez des idées ou que le code pour les modes de gallery sont améliorables, n'hésitez pas à en faire part ...
Bonne intégration

































Commentaires
Gaz
10/02/2007 - 22:45
salut! j'ai essayé d'installer ton file d'ariane mais j'ai du me foirer dans le placement du code dans le prepend!!! Si tu pouvais m'en dire plus!? Il y a des pluggin qui empechent le fonctionnement de ce code ou pas!? cordialement
Guillaume
11/02/2007 - 01:47
Gaz
J'avais oublié le code à coller dans le template php (cf correction dans le billet)
Je pense que là ça marchera mieux !!!
Jean-Michel
11/02/2007 - 10:36
Merci Guillaume. Reste plus qu'à le tester
Gaz
12/02/2007 - 03:09
J'ai essayé avec le nouveau code mais il doit manquer quelque chose car ça marche pas
Guillaume
12/02/2007 - 11:32
Gaz,
Envoie moi par mail ton prpend.php et ton template que je puiise regarder ce qui ne va pas
blog at bizetfamily.net (remplace le at par @)
Jean Claude Attitude
18/02/2007 - 12:33
Genial !!! Merci pour l'astuce !!
Vincent
25/10/2007 - 11:50
Génial ! je l'ai installé tout fonctionne vraiment très bien. Merci
Seulement j'ai le plugin TwTags pour Doctlear 1.2.3 et le fil d'ariane ignore la navigation avec les Tags. Bientôt une adaptation
Encore merci 