Attention lastn ne définit pas une pagination !
Par Kozlika. lundi 1 décembre 2008, 18:45. Carnet de notes Dotclear 2 thèmes | Lien permanent.
Il n'est jamais trop tard pour apprendre… Je manipule pas mal les boucles de billets et leurs attributs depuis quelques semaines, pour Magda ou des thèmes qu'on me commande. C'est ainsi qu'il m'arrivait fréquemment de déterminer un nombre de billets par page dans la configuration puis de l'ajuster en fonction des besoins dans tel ou tel contexte. Par exemple, pour un blog qui n'affichait que les titres dans un contexte de catégorie on pouvait monter jusqu'à 30 billets par page, alors qu'en home où je balançais les billets complets, 5 était un nombre bien suffisant. ATTENTION DANGER !
Ce qui semblera évident à tout codeur mais ne m'est apparu à moi que récemment, c'est que lorsqu'on passe en page 2 d'un contexte donné, cette page ne téléphone pas à la page 1 pour lui demander ce qu'elle a fait avec ses billets.
La conséquence ? Vous la voyez en très frappant sur Magda mais c'est vrai en toutes circonstances. Ayant réduit le nombre de billets de la home à 1, grâce à un judicieux <tpl:Entries lastn="1">
placé dans le fichier _une.html
, j'espérais sottement, je vous l'accorde, que la page 2 commencerait au deuxième billet. Que nenni. Dans les ateliers, la pagination par défaut est fixée à 10 billets par page, c'est donc au onzième que démarre la page 2 (actuellement visible sur le lien « News » du menu horizontal). Aaaaaaarghl !
Pour la home, on peut contourner par l'installation du plugin HomePageMode d'adjaya, qui shunte l'arrivée sur le blog en créant en quelque sorte un contexte spécifique. Mais pour les autres contextes ça n'existe pas.
Il est donc important lorsque vous personnalisez un thème que vous ayez ce paramètre en tête : la page 2 d'un contexte démarre au numéro du billet correspondant à la page 2 selon les réglages du nombre de billets par page des paramètres du blog.
Me voilà bien marrie, il faut que je reprenne tous mes thèmes (aucun de ceux qui sont sur DotAddict, je vous rassure) pour tenir compte de cette anomalie feature.
Merdalors !
Commentaires
Je vois que je suis pas le seul à me perdre dans les histoires de paginations : Ce que j'ai compris, c'est "page/1", ou bien "pas de pagination" c'est la même chose. par exemple si tu teste une url comme http://ateliers.klafoutis.org/page/... tu retombe bien sur la page d'accueil du blog!
En fait, par défaut, page/1 n'est jamais affiché car dans le code de dotclear, c'est soustrait de l'url.
Le principe de Homepagemode c'est de dire attention, maintenant s'il n'y a pas de pagination, c'est plus la page/1 mais une page distincte.
Il serait assez facile d'étendre ce principe aux autre modes si besoin avec mon plugin, mais j'ai préféré brider à la home-page pour ne pas trop embrouiller la compréhension.
J'ai pas encore testé mais je pense que pour que le thème Magda soit "stand-alone" on peux mettre le code dans son _public.php pour obtenir cette distinction de l'accueil d'une part, et de la première page des billets d'autre part.
Gné ? Je ne suis pas complètement certain de comprendre (principalement car cela ne se passe pas du tout comme (ce que j'ai compris de) ta description chez moi).
J'ai paramétré le nombre du billet par page dans la configuration du photoblog à vingt-huit, tandis que dans le fichier
home.html
, j'ai ajouté unlastn="1"
sur toutes les boucles<tpl:Entries>
. Et j'ai bien le comportement attendu : l'URL de typephotoblog/page/2
m'affiche bien le deuxième billet, tandis que l'URL de typephotoblog/tag/toto/page/2
m'affiche bien les billets vingt-neuf à cinquante-six du tag toto.Je ne comprends pas pourquoi j'obtiens un comportement différent du tien. Où peut bien se loger la différence ?
(Je me souviens vaguement d'un problème approchant à l'époque où j'avais oublié d'appliquer l'attribut
lastn="1"
sur la boucle<tpl:Entries>
se trouvant dans le<head>
du fichierhome.html
... mais je ne suis pas sûr que ce fut exactement le même problème. As-tu également modifié cette boucle ?)Ah non j'ai pas modifié le head. J'essaie demain, merci ! (le cas de ma home et le tien est cependant un peu différent puisque je ne veux qu'un billet en première page de home et un nombre "normal" dans les autres pages, mais peut-être dois-je là encore en tenir compte dans le head ?)
Malheureusement modifier le
head
ne résoudra pas le problème, tout au plus le référencement des billets de la page sera conforme à la liste des billets effectivement affichés.Et avec Loopposition ?
J'ai eu ce même comportement sinon.
Lastn
est un rebelle ;)