Billet précédent, billet suivant du blog/de la catégorie
Au sein du blog
Cette fonctionnalité est disponible en standard dans le code de DotClear, vous n'aurez rien d'autre à faire qu'ajouter le code d'appel dans votre fichier post.php.
Dans le fichier post.php de votre thème
Ajouter, juste avant <div class="post">
ou à tout autre endroit qui vous conviendra l'appel à cette fonction :
Pour afficher les titres des billets :
<p><?php dcPostNext(-1,'<a href="%3$s" title="%2$s">%2$s</a>'); ?> :: <?php dcPostNext(1,'<a href="%3$s" title="%2$s">%2$s</a>'); ?></p>
Pour afficher les mentions « billet précédent » et « billet suivant » :
<p><?php dcPostNext(-1,'<a href="%3$s" title="%2$s">billet précédent</a>'); ?> :: <?php dcPostNext(1,'<a href="%3$s" title="%2$s">billet suivant</a>'); ?></p>
Au sein d'une catégorie
Pillé sur le forum, dans ce fil (post #10), le code pépien que voici :
Dans le fichier prepend.php de votre thème
Ajouter avant la dernière ligne
(?>
) les lignes suivantes :
/** * Naviguer d'un billet a l'autre dans la meme categorie
* @function dcPostNextInCat
*/
function myGetNextID($ts,$dir=1,$cat=0) {
global $blog;
$ts = (integer) $ts;
$reqPlus = ''; if($dir > 0) {
$sign = '>';
$order = 'ASC';
} else {
$sign = '<';
$order = 'DESC';
}
if ($blog->pub_mode !== NULL) {
$reqPlus .= 'AND post_pub = '.$blog->pub_mode.' ';
}
if ($blog->lang !== NULL) {
$reqPlus .= 'AND post_lang = \''.$blog->con->escapeStr($blog->lang).'\' ';
}
if ($cat !== 0) {
$reqPlus .= 'AND cat_id = '.$cat.' ';
}
$strReq = 'SELECT post_id, post_titre, post_dt '.
'FROM '.$blog->t_post.' '.
'WHERE UNIX_TIMESTAMP(post_dt) '.$sign.' \''.$ts.'\' '.
$reqPlus.
'ORDER BY post_dt '.$blog->con->escapeStr($order).' '.
'LIMIT 0,1 '; if (($rs = $blog->con->select($strReq)) !== false) {
return $rs;
} else {
$blog->setError('MySQL : '.$blog->con->error(),2000);
return false;
}
}
function dcPostNextInCat($dir,$s='%1$s %2$s %3$s') {
global $blog;
global $news;
$rs = myGetNextID($news->getTS(), $dir, $news->f('cat_id'));
if (!$rs->isEmpty())
{
$id = $rs->f('post_id');
$titre = $rs->f('post_titre');
$date = $rs->f('post_dt');
$ts = strtotime($date);
$url = sprintf($blog->front_url['post'],date('Y',$ts),
date('m',$ts),date('d',$ts),$id,$blog->str2url($titre));
printf($s,$id,$titre,$url);
}
}
Dans le fichier post.php de votre thème
Ajouter, juste avant <div class="post">
ou à tout autre endroit qui vous conviendra l'appel à cette fonction :
Pour afficher les titres des billets :
<p><?php dcPostNextInCat(-1,'<a href="%3$s">%2$s</a>'); ?> :: <?php dcPostNextInCat(1,'<a href="%3$s">%2$s</a>'); ?></p> ::
Pour afficher les mentions « billet précédent » et « billet suivant » :
<p><?php dcPostNextInCat(-1,'<a href="%3$s">billet précédent</a>'); ?> <?php dcPostNextInCat(1,'<a href="%3$s">billet suivant</a>'); ?></p>
Remarque
Rien n'interdit de placer entre les appels du billet précédent et du billet suivant un lien vers l'ensemble des billets (sommaire ou accueil) ou un lien vers la liste des billets de la catégorie.
Mise à jour du 29 mars : correction du code (le wiki interprétait les antislashes comme des signes d'échappement). Pour plus de sûreté, téléchargement de la source au format texte navincat.txt (lien réparé).
Commentaires
1. Le vendredi 25 mars 2005 à 23:25, par Esse
2. Le mardi 29 mars 2005 à 14:05, par Esse
3. Le mardi 29 mars 2005 à 15:41, par Kozlika
4. Le mardi 29 mars 2005 à 23:31, par Esse
5. Le mercredi 30 mars 2005 à 07:03, par Kozlika
6. Le mercredi 30 mars 2005 à 18:49, par Esse
7. Le samedi 2 avril 2005 à 15:05, par julien
8. Le samedi 2 avril 2005 à 15:56, par Kozlika
9. Le vendredi 6 mai 2005 à 02:15, par xose
10. Le vendredi 6 mai 2005 à 06:28, par Kozlika
11. Le jeudi 28 juillet 2005 à 01:37, par Guizbizet
12. Le jeudi 28 juillet 2005 à 02:37, par Pep
13. Le mardi 16 août 2005 à 23:35, par Solveig
14. Le mercredi 17 août 2005 à 08:33, par Solveig
15. Le lundi 29 août 2005 à 14:28, par effisk
16. Le dimanche 30 octobre 2005 à 01:47, par samantdi-pour-les-nuls
17. Le samedi 25 mars 2006 à 10:25, par Cedric_g
18. Le mardi 16 mai 2006 à 20:12, par marie
19. Le mardi 16 mai 2006 à 20:51, par marie
20. Le dimanche 8 octobre 2006 à 20:43, par Jean-Roch
21. Le jeudi 9 novembre 2006 à 01:06, par Thié
22. Le jeudi 9 novembre 2006 à 01:42, par Thié
23. Le samedi 25 novembre 2006 à 16:36, par dav
24. Le mercredi 14 mars 2007 à 09:01, par Laura
25. Le mercredi 14 mars 2007 à 19:12, par Kozlika
26. Le jeudi 15 mars 2007 à 13:09, par Laura
27. Le vendredi 30 mars 2007 à 11:39, par rubulo
28. Le samedi 22 septembre 2007 à 16:14, par alainmail
29. Le lundi 19 novembre 2007 à 11:40, par toto
30. Le lundi 19 novembre 2007 à 11:43, par toto
31. Le lundi 19 novembre 2007 à 12:01, par toto
32. Le jeudi 27 décembre 2007 à 22:02, par musinou
33. Le jeudi 10 janvier 2008 à 14:59, par musinou
34. Le vendredi 4 juillet 2008 à 09:33, par Aymeric Jacquet
35. Le samedi 23 août 2008 à 15:49, par Valentine
36. Le jeudi 20 janvier 2011 à 23:03, par Mesliensfavoris.fr
37. Le lundi 24 janvier 2011 à 22:29, par Lomalarch