plxShow->navPrevious() et plxShow->navNext() ?
assodefis
Member
dans Modifications
Bonjour,
Serait-il possible, en s'inspirant de plxShow->pagination() de créer deux fonctions qui permettent de passer d'un article à un autre au sein de la même catégorie?
plxShow->navPrevious() permettrait d'aller à l'article plus ancien et plxShow->navNext() à celui tout juste un peu plus récent.
Je demande si c'est possible d'avoir deux fonctions distinctes de façon à laisser la possibilité au personnes qui conçoivent des thèmes soit de placer les deux en bas de chaque article (avant ou après commentaire...) soit de les placer dans des colonnes de part et d'autres de chaque article?
Merci pour vos réponses et votre aide,
Thatoo
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
+1 :-)
Idée intéressante !
Tant qu'à faire, cela serait bien d'avoir aussi $plxShow->navFirst() et $plxShow->navLast(), pour les premier et dernier articles.
Pour avoir quelque chose de plus homogène, je conserverai plutôt $plxShow->artUrl() en lui rajoutant un troisième paramètre dans le fichier core/lib/class.plx.show.php
public function artUrl($echo=true, $extra='', $position=false) {} avec pour $position :
La liste des articles ci-dessus et à afficher serait à stocker dans le tableau $result dans l'objet $plxShow->plxMotor->plxRecord_arts.
La taille de ce tableau devra être augmenté de 4 par rapport au nombre d'articles à afficher dans la page. Il est rempli par la fonction plxMotor::getArticles().
Il faudra aussi modifier la fonction plxRecord::f() pour démarrer à l'indice 2.
Et si tu veux afficher les articles sur plusieurs colonnes sauf pour le premier article qui prendra toute la largeur, il faut faire un petit calcul pour connaitre l'indice du premier article à afficher dans la fonction plxMotor::getArticles(). Là il faudra créer un nouveau paramètre dans la configuration avancée de PluXml pour définir le nombre de colonnes (1, 2, 3, 4, ...)
Je note l'idée. Mais je ne le ferai que sur ma version de PluXml.
Je ne peux pas le faire sur la version officielle de PluXml.
Certains se plaignent déjà que je vais trop loin pour améliorer PluXml et qu'ils ne peuvent plus suivre.
D'où grand rétro-pédalage de la prochaine version de PluXml ce week-end.
P.S. : Ce nouveau vert dans Mini-site fait trop bling-bling. Il faudrait une couleur plus froide et écrire en blanc.
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
J'ai réussi à afficher mes articles sur 2 colonnes de façon élégantes avec seulement le premier article de chaque page en pleine largeur.
Et j'ai réussi à créer ma condition pour "si première page" :
avec
Pour en savoir plus, voir https://forum.pluxml.org/discussion/6722/recuperer-le-numero-de-page-dans-template-frontend/p1?new=1
Il me reste maintenant à trouver comment faire
Comment faire?
Enfin, pourquoi PluXml éprouve le besoin de m'afficher tout à la fin (en dernière page) les articles 3 et 2 (si 1 est le plus ancien), je ne comprends pas mais ce sera pour ma part, un bug acceptable [mais pourquoi 3 et 2 et pas 2 et 1???? mystère].
Oui c'est une bonne idée, je note.
Je crois que je viens de comprendre ton commentaire @bazooka07
"
Et si tu veux afficher les articles sur plusieurs colonnes sauf pour le premier article qui prendra toute la largeur, il faut faire un petit calcul pour connaitre l'indice du premier article à afficher dans la fonction plxMotor::getArticles(). Là il faudra créer un nouveau paramètre dans la configuration avancée de PluXml pour définir le nombre de colonnes (1, 2, 3, 4, ...)
"
Bon, ben, du coup, je crois que mon histoire de if etc, ça ne sert à rien. A moins que... On ne pourrait pas donner un argument à plxRecord_arts pour qu'il modifie la valeur de bypage? Auquel cas, on pourrait mettre dans un if.
A y réfléchir à nouveau, c'est un peu plus compliqué
Si PluXml est en mode article, le 1er article, article suivante, article affiché, article suivant,et dernier article dans le tableau $result correspondent bien avec 1er, 2ème, avant-dernière cellule et dernière cellule du tableau correspondent bien aux articles. Et la taille du tableau est égale à 5 puisqu'un seul article affiché.
Par contre dans les autres modes home, catégorie, archive, tag il y a plusieurs articles affichés. Donc la taille du tableau doit être supérieure ou égale à 5.
La première cellule doit donc contenir l'adresse de la 1ère page, la deuxième la page précèdente, l'avant dernière la page suivante et la dernière la dernière page.
Et donc si fait l'adresse de la page précèdente nulle, on peut considérer qu'on est sur la 1ère page et qu'on affiche le 1er article.
Pour pouvoir gérer le CSS3, il faut à l'intérieur de la boucle "$plxShow-<plxMotor-<plxRecord_arts-<loop())" ajouter une class supplémentaire à <article> pour dire d'afficher cet article sur toute la largeur.
On pourrait également mettre des balises <link> avec prev et next dans le <head> de la page
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
... si tu le dis. J'avoue ne pas tout comprendre malheureusement.
[En revanche, j'ai fait une première contribution très modeste sur github pour offrir le choix que le thumb d'un article soit cliquable pour ouvrir l'article plutôt que de pointer vers elle même. C'est utile pour qui veut faire un template de type gallerie.]
@bazooka07 est-ce que tu accepterais de me pointer vers la branche (me donner les droits de lecture) sur laquelle tu travailles sur ces sujets. Je serais curieux de voir si je comprends les modifications que tu fais. Ça m'aiderait sans doute à mieux comprendre comment tout ça fonctionne.
Pour ta contribution cela ne va pas passer
On peut pas modifier l'ordre des paramètres nommés dans une fonction
Si quelqu'un met à jour PluXml et pas son thème, il y a une forte chance que cela bogue.
Et j'entends déjà les grincheux râler "c'était mieux avant !"
Donc les nouveaux paramètres doivent être rajouter à la fin et avoir une valeur par défaut. Et il faudra préciser obligatoirement la valeur des paramètres précédents à chaque fois qu'on utilisera la fonction. Et quand on regarde $format c'est pas cool.
La première chose à faire est de remplacer la valeur de celui-ci par une constante de class.
2ème point, il serait logique que ce que tu demandes soit le comportement par défaut.
Ensuite, il vaut mieux baser tes propositions sur la branche master.
Donc plxShow::artThumbnail() peut s'écrire :
ART_THUMBNAIL_FORMAT est une constante de class. Elle a une portée globale.
Voir la branche "plxShow-artThumbnail-2024" sur mon dépôt github
Par contre, je découvre un autre souci. Si $filename est vide, on affiche rien ! Pas cool.
Je pense qu'il faut qu'on puisse paramètrer PluXml pour afficher une vignette par défaut si elle n'existe pas pour un article ou une catégorie. A défaut, on affiche le logo de PluXml. Cela évitera de casser la mise en page côté site.
Je vais regarder cela d'ici la fin de semaine.
Pour en revenir aux articles précèdent et suivant, cela reste au niveau de l'idée, même si c'est très clair pour moi.
Il faut que je code cela pour tester.
Par contre, tout le code que je t'ai déjà anvoyé est sur mon dépôt Framagit et je ne l'ai pas encore cloné sur mon dépôt Github.
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
P.S. : Il y a le même souci avec plxShow::catThumbnail(..)
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Ok, merci pour tes remarques. Elles sont importantes.
Ton code est aussi plus élégant. Merci.
Je vais le mettre à jour dans mon projet. Par contre, n'ayant pas besoin de plxShow::catThumbnail(..) dans l’immédiat, je vais laisser comme c'est en attendant une mise à jour de PluXml.
La fonction article précèdent/suivant, ce serait top. Ce sera comme une mise à jour....
Du coup, pour éviter des surprises à ceux qui ont des habitudes avec PluXml, il vaudrait mieux mettre $arturl=false par défaut, non?
Pour l'affichage du Thumbnail dans une catégorie, ma demande est logique mais pour l'affichage du thumbnail dans l'article lui même, ça n'a pas de sens de renvoyer vers l'article puisqu'on y est, donc le fonctionnement originel est logique.
Ainsi, Avec
On garde le fonctionnement originel, dans un article quand on clique sur le thumbnail, ça ouvre l'image en grand.
Si on veut, dans une catégorie, appeler la fonction artThumbnail() et qu'en cliquant sur l'image, ça ouvre l'article, il suffit d'écrire
n'est-ce pas?
Autre toute petite modif
* @param echo si à VRAI affichage à l'écran
devient
* @param echo si vrai, affichage à l'écran
Ok, on va laisser par défaut l'ancien comportement.
Même dans une catégorie l'ancien comportement se défend si on veut utiliser un diaporama (slide show). Par ex sur ce site.
Au final, le principal intérêt sera d'afficher coûte que coûte une vignette pour un article plutôt qu'un texte alternatif,
Egalement on peut choisir dans les médias le logo à afficher sur la page d'authentification. Et même sur le thème si je rajoute une petite fonction plxShow::logo().
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Pas mal le slideshow. Tu sais comment il est fait?
Pour l'instant, je n'ai aucun js sur mon site et si jamais les boutons prev et next sont dispo, je pense ne pas en avoir besoin.
Avec https://forum.pluxml.org/discussion/comment/60423 et https://forum.pluxml.org/discussion/comment/60427/#Comment_60427 étant résolu, il ne me manque que ces deux navPrevious et navNext pour terminer ma maquette de site. Je suis super content et satisfait de PluXml. C'est super léger et simple. Merci pour tout le travail qui a été réalisé. Je suis curieux de suivre l’évolution.
Bonjour tout le monde,
J'ai travaillé à une solution, certes insatisfaisantes car elle fonctionne en se basant sur l'ordre des artID et pas sur l'ordre de publication, mais qui, en attendant le sans aucun doute excellent travail de @bazooka07 , peut servir de preuve de travail. En voici une démo : https://mini-site.defis.info/article11/premiere-realisation
et voici mes modifications de code apportées à lastArtList() et mes trois créations de fonctions qui en découlent PreviousPage(), PreviousArt() et enfin NextArt() :
@bazooka07 dans mon dépot gitlab, la branche master est à jour avec ces modifications, prenant en compte le choix du dépot master de PluXml quant à artThumbnail($type='', etc...) plutôt que ta proposition, prenant en compte tes remarques de design quant au panneau admin (n'hésites pas à m'en refaire, je cherche toujours à m'améliorer), avec le .htaccess que j'ai publié sur le forum et avec les plugins kzcontact et share_me installés et modifiés par mes soins (utilisation de Placeholders plutôt que de labels dans kzcontact, mise à jour des icones de share_me, les originaux sont un peu vintages:-), ainsi que correction de la ligne 457 de share_me.php de
à
).
N'hésitez pas à me faire des retours sur mon travail. J'apprécie toutes vos remarques. Je me rends compte en écrivant ici que j'ai changé les noms de fonctions... navPrevious() et navNext() c'était peut-être mieux que PreviousArt() et NextArt()...
Après vos retours et quelques finalisations, je rendrai notre code public.
Bonjour,
Je viens d'envoyer un Pull-Request qui fait le taf. Voici le lien :
https://github.com/pluxml/PluXml/pull/447
En bref :
Dans la fonction plxMotor::demarrage :
si on est en mode categorie, tag, home, archives, on stocke dans une variable de session le mode, la cible, le motif pour filtrer les articles et le tri.
Si on est en mode article, on exploite les informations stockés précèdemment pour récupérer les premier, précèdent, suivant et dernier articles par rapport à l'article demandé et on stocke leurs noms de fichiers.
Pour exploiter tout cela, on a une nouvelle fonction plxShow::artPagination qui affiche dans la page de l'article sélectionné , les liens de ces articles selon le format demandé. Soit dans la balise <body> soit dans la balise <head>.
Il y a également une fonction plxShow::artNavigationRange qui affiche la position de l'article et le nombre d'articles dans la série (catégorie, mot-clé, archives, accueil).
Il y a également une fonction plxShow::canonical pour avoir l'adresse canonique de la page
Quand on est dans une page article, on a également un lien pour revenir dans la série et à la bonne page si on a navigué d'article en article.
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Bonjour et merci mille fois pour ce travail. Je vais l'essayer prochainement et faire mes retours (si il y a).
Je viens d'essayer et tout fonctionne super bien (cf imprim'écran ici https://github.com/pluxml/PluXml/pull/447#issuecomment-630898206).
Bien que les boutons soient inscrit dans le code, est-ce possible de les changer avec du CSS et la police Fontello?
Surtout, est-ce possible de séparer les boutons?
Est-ce que, par exemple, $format='
#icon' ne devrait pas être composé dans la fonction artNavigation($rel='all') avec $rel pouvant être "all" ou "first" ou "prev" etc... ?Ainsi on pourrait écrire
<?php $plxShow->artNavigation($rel='prev'); ?>
<?php $plxShow->artNavigation($rel='next'); ?>
Qu'en penses-tu @bazooka07 ?
Si j'ai raté un truc, je veux bien que tu m'expliques.
Le plus simple est de modifier la signature de la fonction comme suit :
Cela laisse la liberté pour choisir la façon dont sont affichés les boutons et les boutons qu'on veut afficher et leur ordre.
Par défaut, on affiche tous les boutons.
On peut comme cela mettre des balise <link> dans le <header>.
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
J'ai mis le Pull-Request à jour.
Pour afficher seulement les boutons précèdent suivant, il suffit de faire :
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Super, ça avance bien. Merci @bazooka07
Il y a cependant un problème, si j'affiche seulement les boutons "précèdent" et "suivant", alors, il est impossible d'aller sur le dernier et le premier article car lorsqu'on se trouve sur le second article, "précédent" ne s'affiche pas puisque dans la fonction, seul "first" est censé s'afficher et lorsqu'on se trouve sur l'avant dernier article, "suivant" ne s'affiche pas puisque dans la fonction, seul "last" est censé s'afficher.
Effectivement j'ai juste envisagé le cas où tous les boutons étaient affichés comme dans la page d'accueil.
Je vais regarder cela dès que possible.
As-tu récupérer la branche master sur le dépôt Github de PluXml ?
https://github.com/pluxml/PluXml
Il doit y avoir ces boutons de navigation.
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
oui, merci, je travaille avec les modifications "merged".
Dans le fichier core/class.plx.motor.php, modifie la boucle foreach($aFiles as $key=>$value) dans la fonction artNavigation() en inversant les tests first et prev d'une part, et entre next et last d'autre part (ligne 429), comme suit :
Je ferai un pull request ultérieurement.
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Ça fonctionne parfaitement maintenant!
Merci!
Super boulôt, cette fonctionnalité est vraiment utile pour un CMS.
J'espère qu'elle pourra être intégrée dans une prochaine version.
Hello, cette fonctionnalité sera bien présente dans la prochaine version, j'y ai déjà ajouté le code de @bazooka07, merci à lui.