Afficher ou styliser le dernier article écrit uniquement
Bonjour, je suis un nouvel utilisateur de PluXml, j'aime beaucoup la simplicité de ce CMS.
J'essaye de créer un thème personnalisé mais je rencontre quelques difficultés. Je me débrouille assez bien avec le HTML et le CSS mais pas du tout en PHP, hors j'essaye de modifier l'affichage de la page d’accueil et je ne sais pas comment m'y prendre.
J'ai regardé la documentation mais je n'ai pas trouvé ce dont j'avais besoin, je vous explique:
J'aimerais distinguer sur la page d'accueil (home.php) le dernier article écrit des autres. Pour ce faire, je pourrais éventuellement le faire en .css avec l'attribut :first-of-type . Oui mais le problème c'est que cela modifierai également le premier article sur la seconde page, ainsi que l'affichage de l'article sur la page dédiée a l'article seul.
Pour éviter ces problèmes, je cherchais une fonction plxShow qui me permettrait d’afficher uniquement le dernier article, et du coup une boucle pour afficher tous les autres articles sans le premier (pour ne pas l'afficher a double sur la homepage).
De cette manière, lorsque j'arrive sur la page d'accueil (home.php) je verrais le dernier article mis en valeur par rapport aux autres.
Je ne sais pas si je me suis bien fait comprendre ^^, est-ce que c'est facilement faisable avec les fonctions plxShow ?
Réponses
Bonsoir,
$plxShow ne fait qu'afficher les articles dans une liste ou un seul article selon le mode
La liste d'articles à afficher est créer par la fonction getArticles() de $plxMotor. Il te faut modifier la valeur de $start selon la page à afficher et également remplacer le paramètre $this->byPage quand la fonction $this->plxGlob_arts->query() selon le numéro de la page.
Par contre,comme le nombre d'articles est différent sur la page n°1, le nombre de pages calculés dans $plxShow::navigation() va être faux. C'est un peu plus compliqué à calculer, il va falloir faire quelques essais. Au pire, il y aura un message sur la dernière pour dire que "la page demandée n'existe pas".
C'est plus une logique de raisonnement qu'un lanage PHP à maitriser
Et quand les articles sont affichés par catégorie ou par tag, tu vois les choses comment ?
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Wow, je m'attendais pas a une réponse si rapide
Merci pour vos explications, je crois comprendre dans les grandes lignes. Pour dire la vérité ça me semble un peu hors de portée pour mes maigres connaissances, mais je vais tout de même essayer de fouiller dans les répertoires de PluXml pour essayer de trouver quel fichiers modifier.
En ce qui concerne les pages catégorie ou par tag je n'ai pas besoin de la mise en avant du dernier article, je pensais simplement les lister indistinctement.
fichier core/lib/class.plx.motor.php :
On se limite aux modes "home" et "categorie"
Note que tu peux jouer sur le nombre d'articles affichés en première page en modifiant la valeur $count0.
Il faut aussi modifier la fonction plxShow::pagination() sinon les derniers articles ne seront pas visibles.
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Et pour la fonction navigation, il y a quelques modifications mineures à faire :
Je vais regarder pour mettre cela dans la prochaine version de PluXml. Cela peut intéresser d'autres gens.
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Merci beaucoup @bazooka07 , j'apprécie beaucoup votre aide. C'est très gentil mais c'est vraiment au-dessus de mes capacités, et je ne veux pas vous embêter plus pour rien.
Je pensais nativement que ca allait être plus simple a modifier, qu'il y aurait peut-être une fonction "plxShow lastAricle()" que j'aurais pu ajouter dans ma home.php et ainsi pouvoir le styliser facilement.
Voir peut-être un paramètre a modifier dans la boucle d'affichage des articles, mais je m’aperçois que c'est plus compliqué que ca (en tout cas pour moi qui n'y comprends rien en php et en programmation en général ^^).
En tout cas si ca peut déboucher sur une nouvelle fonctionnalité et enrichir ce chouette projet, mon intervention n'aura pas servi a rien au moins
Mille mercis
salut @Troll
sinon une solution simple sera de paramétrer PluXml pour n'afficher qu'un seul article sur la page home (si derrière cela ne te gêne pas que les pages suivantes n'affichent aussi qu'un article)
Administration > Paramètres > Options d'affichage :
Template de la page d'accueil : home.php
Nombre d'articles affichés par page : 1
Nombre d'articles affichés par page dans les archives : x
Bonjour @kowalsky ,
Merci pour la proposition, je comprends l'astuce ^^ malheureusement ce serait un peu trop contraignant pour le visiteur s'il se retrouve avec un seul article par page
Mon but était vraiment de pouvoir mettre en avant le dernier article de blog sur la page d’accueil.
Voir cette rapide maquette :
https://imgur.com/Ki5TZfI
Les 3 petits rectangles en bas vont contenir des articles ?
Cela ressemble au thème Masonic :
https://kazimentou.alwaysdata.net/pluxml/index.php?categorie1/pluxml
Dans le sidebar à droite, sélectionner le thème kzMasonic dans la liste déroulante.
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
@bazooka07 , oui, effectivement les 3 petits rectangles seraient également des articles.
J'ai jeté un œil au theme kzMasonic, c'est a peu près ce que je cherche a faire sauf qu'ici apparemment c'est stylisé via css. C'est a peu près ce que j'ai fait jusqu'ici, j'ai utilisé la propriété css (:first-of-type) pour styliser le premier article de la page home.php de manière différente.
Mais comme je l'indiquais dans mon premier message, le problème est que lorsque l'on passe a la page 2 du site, le premier article est de nouveau mis en avant, puisque le css s'applique également a la page 2 etc... Hors j'aimerais éviter cela justement.
Voir maquette :
https://imgur.com/AxhyZVr
Une autre idée serait d'avoir une option dans l'interface d'administration pour sélectionner n'importe-quel article ou peut-être même page statique pour qu'il soit mis en avant sur la page d’accueil (avant les autres), ce pourrait être super également et j'imagine pratique dans pas mal de cas.
Edit: je pensais aussi a une autre solution,ce serait d'ajouter la classe .css #lastArticle uniquement au dernier article écrit. Cette classe pourrait être utilisée par ceux qui veulent styliser facilement le dernier article sur la home.php uniquement. Mais je ne sais pas si c'est techniquement faisable, car lorsque l'on écrit un nouvel article il faudrait enlever cette classe de l'ancien... ^^
Désolé si je dis des bêtises, encore une fois je ne suis pas développeur, c'était juste des idées jetées en l'air, je me rends pas forcément compte du travail nécessaire derrière tout ça.
Le thème kzMasonic convient bien pour ce que tu veux faire.
Voir démo
Télécharger PluXml modifié (archive : pluxml-5.8.9-troll.zip) :
https://kazimentou.fr/static8/download
Thème kzMasonic :
https://kazimentou.fr/repo/index.php?theme=kzMasonic&download
Dans PluXml, il faut régler "Nombre d'articles affichés par page" à 9 dans les "options d'affichage".
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Omg, merci beaucoup mais comment tu t'y est pris ?
En modifiant les fichiers /core/lib mentionnés plus haut ?
Edit: je viens d'essayer en local avec Xampp, j'ai installé l'archive PluXml modifiée (pluxml-5.8.9-troll.zip) et le thème kzMasonic , j'ai modifié le nombre d'articles par page a "9", mais bizarrement chez moi le premier article n'est pas différent des autres, pas comme sur ta démo.
Je ne sais pas ce que j'ai fait de faux.
Il faudrait au moins 4+9=13 articles pour voir la .démo correctement.
J'ai mis un jeu de données datas.zip à cette adresse :
https://kazimentou.fr/static8/download
Attention cette archive contient un fichier data/configuration/parametres.xml qui contient le mot de passe crypté pour l'administrateur. Il fau
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Je viens d'ajouter pleins d'articles, effectivement ça fonctionne correctement maintenant.
Je vous remercie beaucoup pour votre aide @bazooka07