[PLUGIN]prevNext : afficher des liens prev/next à la fin d'un article

Jerry WhamJerry Wham Membre
janvier 2014 modifié dans Plugins
Bonsoir,

Un nouveau plugin tout simple écrit il y a un moment déjà mais que je n'avais jamais publié, qui permet d'afficher un lien vers l'article suivant (ou précédent) au bas d'un article.
Les articles affichés peuvent être seulement ceux d'une catégorie (comportement par défaut, premier paramètre à true) soit tous les articles quelle que soit la catégorie (premier paramètre à false).

Il faut utiliser le hook prevNext, avec éventuellement des paramètres optionnels.

Exemple d'utilisation du hook, à mettre dans le fichier article.php :
<?php echo $plxShow->callHook('prevNext',array(
				true,
				'<p style="float:left;margin-top:0"><a href="#prevUrl" rel="prev">&laquo; #prevTitle</a></p>'."\n\t\t\t\t\t",
				'<p style="text-align:right;"><a href="#nextUrl" rel="next">#nextTitle &raquo;</a></p>'
			)); ?>
Pour le formatage des liens, les attributs sont :
#prevUrl
#prevTitle
#prevArt
#nextUrl
#nextTitle
#nextArt

Enjoy :P

PS : Pensez à supprimer le suffixe "-master" ajouté par Github au dossier du plugin.

Historique :
19/01/2014 : V 1.0

Réponses

  • bg62bg62 Membre
    février 2014 modifié
    grandS merciS à toi, une fois encore !
    peux-tu m'expliquer ce que signifie ceci :
    [== PHP ==]
    ."\n\t\t\t\t\t",
    
    pas tout compris là ...
    j'ai testé avec ceci :
    [== PHP ==]
    					<p>à voir également :<?php echo $plxShow->callHook('prevNext',array(
    				true,
    				'<p style="float:left;margin-top:0"><a href="#prevUrl" rel="prev">&laquo; #prevArt : #prevTitle </a></p>'."\n\t\t\t\t\t",
    				'<p style="text-align:right;"><a href="#nextUrl" rel="next">#nextArt : #nextTitle &raquo;</a></p>'
    			)); ?></p>
    
    mais j'aimerais pouvoir faire deux choses:
    - rendre les termes 'article précédent' et 'article suivant' non cliquables
    - réussir à mettre un séparateur entre les deux, juste simplement un " | " par exemple
    -- éventuellement y-a-t-il une option permettent d'afficher, le chapô ou les x premiers caractères des articles ?
    @+

    second essai :
    [== PHP ==]
    					<p>article précédent :<?php echo $plxShow->callHook('prevNext',array(
    				true,
    				
    								'<!--<p style="float:left;margin-top:0">--><a href="#prevUrl" rel="prev">&laquo; #prevTitle</a></p>'."\n\t\t\t\t\t",
    				
    			)); ?>
    												| article suivant :<?php echo $plxShow->callHook('prevNext',array(
    				true,
    				
    				
    								'<!--<p style="text-align:right;"margin-top:0">--><a href="#nextUrl" rel="next">#nextTitle &raquo;</a></p>'
    			)); ?></p>
    
    qui me convient déjà mieux, mais je ne sais pas où et comment supprimer l'affichage de " Article suivant " qui reste cliquable et à la fin des deux ...
  • StéphaneStéphane Membre, Ancien responsable de PluXml
    \n = retour chariot
    \t = tabulation
    ça permet d'avoir une belle indentation du code quand tu regardes les sources de la page générée par le plugin

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Stéphane a écrit:
    \n = retour chariot
    \t = tabulation
    ça permet d'avoir une belle indentation du code quand tu regardes les sources de la page générée par le plugin
    merci Stéphane, on s'est croisés :)
    je coince encore sur une chose, je viens juste d'éditer le post précédent, si tu peux voir
    @+
  • <p>à voir également :<?php echo $plxShow->callHook('prevNext',array(
    				true,
    				'<p style="float:left;margin-top:0">&laquo; #prevArt : <a href="#prevUrl" rel="prev">#prevTitle </a></p>|'."\n\t\t\t\t\t",
    				'<p style="text-align:right;"><a href="#nextUrl" rel="next">#nextTitle</a> : #nextArt  &raquo;</p>'
    			)); ?></p>
    

    Il n'y a pas d'option pour afficher le contenu du chapo/corps de l'article.
  • mais vous codez plus vite que votre ombre comme d'hab !!!
    si je mets ceci :
    [== PHP ==]
    					<p>à voir également :<?php echo $plxShow->callHook('prevNext',array(
    				true,
    				'<p style="float:left;margin-top:0">&laquo; <a href="#prevUrl" rel="prev">#prevTitle </a><!--</p>-->&laquo;|&raquo;'."\n\t\t\t\t\t",
    				'<!--<p style="text-align:right;">--><a href="#nextUrl" rel="next">#nextTitle</a>   &raquo;</p>'
    			)); ?></p>
    
    ça tourne, mais ai-je fait une erreur de syntaxe ou pas ???
    si c'est bon, j'adopte ;)
  • Jerry WhamJerry Wham Membre
    février 2014 modifié
    Vaut mieux faire ça alors :
    					<p>à voir également :<?php echo $plxShow->callHook('prevNext',array(
    				true,
    				'&laquo; <a href="#prevUrl" rel="prev">#prevTitle </a>&laquo;|&raquo;'."\n\t\t\t\t\t",
    				'<a href="#nextUrl" rel="next">#nextTitle</a>   &raquo;'
    			)); ?></p>
    
    
  • @Jerry Wham
    grandS merciS encore, c'est en ligne :)
  • Je profite que l'on reparle de ce plugin pour signaler un bug (en tout cas dans mon environnement de test) : lorsqu'un article est en attente de validation, il est pris en compte dans les liens "précédents/suivants".

    Exemple : à la fin de cet article (http://test.rock-anecdotes.fr/113-du-rock-au-superbowl), entre les informations sur l'auteur et le commentaires, on peut voir un lien vers "Child In Time ou l'histoire de loosers magnifiques...", alors que cet article n'est pas publié (d'ailleurs, le lien redirige vers la page 404)...

    Si l'auteur du plugin a une idée pour pallier à ce problème... ;)
  • Ah bien vu. Je vais me pencher sur le problème. Merci de la remontée du bug.
  • Merci pour ce plugin qui m'a fait gagner du temps :cool:

    Pas un bug mais une suggestion : renvoyer en sortie un tableau avec les liens "suivant" et "précédent" séparés de manière à faciliter leur utilisation lorsqu'ils ne sont pas affichés collés l'un à l'autre.

    Dans mon cas, un autre plugin est appelé entre les 2 liens. Je m'en suis sorti avec un explode mais ça serait + simple si ils étaient retournés déjà séparés.
  • Je me suis permis de reprendre le code, en supprimant les options qui ne m'intéressaient pas pour l'intégrer à un plugin tout prêt pour un thème.
    Bien évidemment, j'ai laissé les crédits !

    Ca te gêne ou pas ?
  • @Hamtaro : si ça me génait, je n'aurais pas partagé ]:D
  • Je pensais bien mais ça fait pas de mal de demander :p
  • helioshelios Membre
    juillet 2015 modifié
    Déjà merci pour ce plug in qui va me servir. C'est interressant de proposer un système de navigation post/post aux visiteurs.
    J'ai juste modifier la façon de faire car mes titres sont trop long (par souci d'un référencement optimiser) pour entrer en dessous du poste et donc génant pour la lecture. J'ai opter pour ma part sur ceci :
    [== PHP ==]
    <?php echo $plxShow->callHook('prevNext',array(
    				true,
    				'<p style="float:left;margin-top:0"><a href="#prevUrl" data-tip="#prevTitle" rel="prev">&laquo; ARTICLE PRECEDENT</a></p>'."\n\t\t\t\t\t",
    				'<p style="text-align:right;"><a href="#nextUrl" data-tip="#nextTitle" rel="next">ARTICLE SUIVANT &raquo;</a></p>'
    			)); ?>
    
    Donc rien de grandiose j'ai mis Précédent et suivant qui prends moins de place.
    Et, Je n'ai pas changer grand chose juste j'ai attribuer une info bulle avec l'attribut data-tip à qui j'ai affecté :#prevTitle et #nextTitle. Jusqu'à présent je ne pensais pas pouvoir changer l'infobulle traditionnelle titlle ou acronym mais grâce à alsacréations j'ai pu comprendre que c'étais possible avec data-tip en lui affectant un css correspondant:
    [== CSS ==]
    [data-tip] {position: relative;cursor: help;border-bottom: 1px dotted #aaa;}
    [data-tip]:hover:after {content: attr(data-tip);position:absolute;
    top: 1.5em; left: 0;white-space: nowrap;padding: 5px 10px;background: #008080;color: #fff;}
    

    Ce nest pas énorme mais si défois quelqu'un aurais le même soucis c'est une alternative correct.
    Pour infos ils vont plus loin ici http://codepen.io/raphaelgoetter/pen/KwzerV
    De plus en mettant en css il sera réutilisable pour la formation des articles pour les abréviations par exemples en infobulle donc rien de perdus.

    Dans tous les cas je feuillette votre site et apprends à me servir de pluxml. ;)
  • Merci helios pour cette astuce intéressante et bon apprentissage de PluXml ! :)
  • Bon ben j'ai finaliser le tout en personnalisant le code d'avant.
    [== CSS ==]
    [data-tip] {position: relative;border-bottom: 1px dotted #aaa;}[data-tip]:hover:after {content: attr(data-tip);position:absolute;top: 2.1em; left: 0;white-space: nowrap;padding: 5px 10px;background: #008080;color: #fff;}
    
    Comme on peut le voir j'ai virer cursor : help; qui mettais le ?.

    Comme cela on a le curseur plus généraliste.
    Dans le code Html incluant l'appel au fichier prev j'ai définis ainsi:
    [== PHP ==]
    <?php echo $plxShow->callHook('prevNext',array(
    				true,
    				'<p style="float:left;" class="more"><a href="#prevUrl" data-tip="#prevTitle" rel="prev">← ARTICLE PRECEDENT</a></p>'."\n\t\t\t\t\t",
    				'<p style="float:right;" class="more"><a href="#nextUrl" data-tip="#nextTitle" rel="next">ARTICLE SUIVANT →</a></p>'
    			)); ?>
    

    Tout simplement en icluant le CSS class="more" pour récupéré la classe de mon style bouton. Cela adhère mieux aux thème et permet d'avoir quelque chose de propret voila le résultat en passant le curseur pour aller dans article suivant.

    i6dm.png

    Ca c'est fait. Maintenant je vais m'attaquer à la personnalisation des boutons sociaux.Je regarde aussi entre 2 le tutoriel pour créé un plug in.
    En tout cas je commence à m'y habituer et il est plus accessible que dupral, phpbb et fluxbb.
  • bg62bg62 Membre
    et un petit soucis de plus ....
    jusque la version 5.4 = aucun soucis
    passage à 5.5 = message d'erreur :
    ......info5.5\plugins\prevNext\prevNext.php on line 87
    Si vous avez la solution ...
    @+
  • Mets l'ensemble du message d'erreur si tu veux une aide...
  • bg62bg62 Membre
    Jerry Wham a écrit:
    Mets l'ensemble du message d'erreur si tu veux une aide...
    voilà :)
    FDgiB0bAFaH_jerry.jpg
    j'espère que ça te suffira pour comprendre le problème ...
    @+
  • Tu peux commenter (en mettant // devant) la ligne 87 ou carrément la supprimer. Ça devrait fonctionner.
  • bg62bg62 Membre
    avril 2016 modifié
    Jerry Wham a écrit:
    Tu peux commenter (en mettant // devant) la ligne 87 ou carrément la supprimer. Ça devrait fonctionner.
    merci je vais essayer et je te tiens au courant ...
    OK nickel = ça fonctionne , MERCI !
    MAIS l'on m' a fait une remarque:
    // = peut foutre le bazar avec d'autres 'appels'
    # = là je ne sais pas
    est-ce que cela dépend des versions de php ou autres codages ???
    @+
  • fanyfany Membre
    Bonjour,

    J'ai profité de ce plugin aussi. Je trouve qu'il améliore la navigabilité d'un blog. Merci beaucoup.
    Installation sans soucis de mon côté.
  • Merci beaucoup Jerry Wham, c'est propre et tout.
  • Je t'ai fait une pull request sur le GitHub :)
  • krockroc Membre
    décembre 2019 modifié

    Bonjour,

    Pouvez-vous m'indiquer comment inverser les boutons "prev" et "next", ou en tout cas leur fonction ?

    J'ai l'impression qu'il y a un paramètre optionnel (sort, rsort) mais je ne parviens pas à l'utiliser.

    Merci d'avance !

    Mes sites propulsés par ce cher PluXml : www.krocui.com - www.lucasdebruyn.com - www.coolraool-publishing.com

Connectez-vous ou Inscrivez-vous pour répondre.