Dotclear

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

Annonce

13 février 2024 Sortie de Dotclear 2.29

#1 2013-09-23 15:27:01

damj
Membre
Lieu : Lyon
Inscription : 2008-09-06
Site Web

Comportement différent sur le billet le plus ancien

Bonjour,

Sur la page du post le plus ancien, et seulement sur celle-ci, je voudrais insérer un lien vers le post le plus récent.

Pour clarifier un peu le cadre :
J'utilise dotclear pour un portfolio, la date des billets n'est pas visible aux visiteurs, mais je m'en sers pour ordonner les réalisations que je veux montrer et je voudrais que la navigation soit en quelque sorte "en boucle", avec un retour vers le "premier" billet quand on arrive au "dernier".
Vous pouvez voir ça en action (sans le lien en question) sur mon site...

Pour l'instant, j'ai essayé de trouver un moyen de repérer qu'on est sur le post le plus ancien, mais sans succès. Peut-être que quelque chose d'évident m'a échappé...

Si vous avez une piste pour me débloquer...
Merci

Dernière modification par damj (2013-09-26 19:01:17)

Hors ligne

#2 2013-09-24 15:26:28

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

Re : Comportement différent sur le billet le plus ancien

Bonjour !

(cébo tes réalisations)
Je dirais qu'il doit y avoir moyen : après tout la dernière page c'est celle qui n'a pas de précédente n'est-ce pas ? Tu peux peut-être voir comment sont faits les tests là dessus et t'en inspirer ?


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

Hors ligne

#3 2013-09-24 20:32:58

damj
Membre
Lieu : Lyon
Inscription : 2008-09-06
Site Web

Re : Comportement différent sur le billet le plus ancien

Merci !

Je suis pas sûr de comprendre ce que tu me suggères...

J'utilise <tpl:EntryPrevious>, mais y a-t-il moyen de l'exploiter dans le cas ou il n'y a pas de billet précédent ??

Sinon, à base de <tpl:EntryIf>, mais je vois pas non plus...

...

Hors ligne

#4 2013-09-25 08:21:58

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

Re : Comportement différent sur le billet le plus ancien

Il y a des liens en haut de la page (ou en bas selon tes templates) qui conduisent vers la page (ou billet) précédente/suivante. Pour ne pas afficher la mention quand la page précédente existe, un test est fait dessus, il doit y avoir une condition ou un truc comme ça. Je n'ai pas les templates sous la main, mais tu peux regarder et te servir du même test.


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

Hors ligne

#5 2013-09-25 08:36:52

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : Comportement différent sur le billet le plus ancien

Deux marqueurs de template sont concernés : <tpl:EntryPrevious> et <tpl:EntryNext>. Le code PHP associé à ces marqueurs se trouve dans le fichier (dotclear)/inc/public/class.dc.template.php, lignes #1682 à #1726 (valable pour Dotclear 2.5.3).

Hors ligne

#6 2013-09-25 08:41:40

damj
Membre
Lieu : Lyon
Inscription : 2008-09-06
Site Web

Re : Comportement différent sur le billet le plus ancien

Oui, merci beaucoup, c'est ce que je viens de trouver, mais là on arrive assez loin au dessus de mes compétences...
...comme je suis assez entêté, je vais sans doute me pencher dessus, mais c'est pas gagné.

Je suppose que la piste ce serait de créer un nouveau marqueur, du genre EntryIfLast, si j'arrive à comprendre les mécanismes utilisés.

Il y a des chances que je revienne demander conseil :)

Dernière modification par damj (2013-09-25 08:47:40)

Hors ligne

#7 2013-09-26 10:06:00

damj
Membre
Lieu : Lyon
Inscription : 2008-09-06
Site Web

Re : Comportement différent sur le billet le plus ancien

Bon, je me suis effectivement entêté et j'arrive à un resultat qui fonctionne, youpi !

Voilà donc pour qui en aurait besoin :

J'ai créé une nouvelle balise que j'ai nommée EntryIfLast qui sera donc appelée par <tpl:EntryIfLast>le-contenu-à-afficher-si-on-est-sur-le-billet-le-plus-ancien</tpl:EntryIfLast>
La fonction appelée est celle-ci :

public static function EntryIfLast($attr,$content)
	{
		return
		'<?php $prev_post = $core->blog->getNextPost($_ctx->posts,-1,0,0); ?>'."\n".
		'<?php if ($prev_post == null) : ?>'.
			$content.
		"<?php endif; ?>\n";
		
	}

C'est peut-être pas la manière la plus simple/correcte/élégante de le faire mais ça à l'air de marcher et comme pour moi c'est encore beaucoup du chinois, si ça marche, je touche pas !
En gros c'est un copié-collé-arrangé de la fonction EntryPrevious comme suggéré plus haut, merci...

Puis dans mon "post.html" j'ai inséré au même endroit que le <tpl:EntryPrevious></...> (qui sert quand il y a effectivement un billet précédent) quelque chose du type:

<tpl:EntryIfLast><a href='<tpl:Entries lastn="1">{{tpl:EntryURL}}'</tpl:Entries>>&#187;</a></tpl:EntryIfLast>

avec donc une petite boucle Entries qui s'arrête dès la première entrée pour appeler le billet le plus récent.
Je n'ai pas trouvé d'appel plus "direct" au billet le plus récent, ça existe pas ?

Voilà, et si vous avez des suggestion à me faire je suis preneur...

Dernière modification par damj (2013-09-26 10:08:20)

Hors ligne

#8 2013-09-26 12:59:28

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

Re : Comportement différent sur le billet le plus ancien

Félicitation pour l'auto-démerdage en tout cas !
(pas capable quant à moi de juger s'il y avait plus élégant mais ça me semble bien)


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

Hors ligne

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

Pied de page des forums

Sites map