[Astuce] Connaître le nombre d'articles de la catégorie active
danielsan
Member
Bonjour,
je souhaitais faire une mise en page intermédiaire entre un site à son lancement ( 2 articles ) et son avenir.
C'était précisément pour afficher les liens articles suivants/précédents et la liste des articles de la catégorie active.
Avec seulement 2 articles cela n'était pas nécessaire mais plus tard, oui.
Et je n'avais pas très envie de revenir sur le boulot une fois livré au client
N'ayant pas trouvé de fonction toute faite ni de réponse sur le forum, voici comment récupérer le nombre d'articles de la catégorie:
Les explications sont soufflées par le lapin bleu ici ->
Qu'en pensez-vous ?
Cordialement,
_____
D.San
je souhaitais faire une mise en page intermédiaire entre un site à son lancement ( 2 articles ) et son avenir.
C'était précisément pour afficher les liens articles suivants/précédents et la liste des articles de la catégorie active.
Avec seulement 2 articles cela n'était pas nécessaire mais plus tard, oui.
Et je n'avais pas très envie de revenir sur le boulot une fois livré au client
"Un sportif intelligent se dispense de tout effort inutile"
comme dirait le prof. de sport du PtitSpirou
N'ayant pas trouvé de fonction toute faite ni de réponse sur le forum, voici comment récupérer le nombre d'articles de la catégorie:
$nbArt = $plxShow->plxMotor->aCats[sprintf("%03d", $plxShow->artCatId())]["articles"];
Les explications sont soufflées par le lapin bleu ici ->
Qu'en pensez-vous ?
Cordialement,
_____
D.San
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Comme il est maintenant très occupé avec ses pizzas, j'ai trouvé un code de remplacement pour compter le nombre d'articles actifs d'une catégorie donnée (la catégorie fournie n'étant pas nécessairement la catégorie active).
La fonction lastArtList donne ici une suite d'identifiant d'articles, chaque identifiant étant suivi d'une virgule (1er paramètre : #art_id,).
Il suffit ensuite de compter le nombre de virgules pour avoir le nombre d'articles.
Mais si quelqu'un a une méthode plus directe, je suis preneur.
Voilà comment afficher le nombre d'articles publiés d'une categorie
Remplace 002 par le n° de la catégorie souhaitée
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Plus concis et plus rationnel, c'est pas douteux...
Par exemple, la page catégorie ligne comme ceci: Catégorie: Arbres (30).
Remplacer : Par :
Le code précédent:
Comment intégrer:
Parce que simplement remplacer la ligne : par ce nouveau code ne fonctionne pas
Merci
Ton expression régulière dans le premier paramètre n'est pas correcte.
? s'applique à un caractère ou méta-caractère. Si tu veux l'appliquer à (, alors il faut échapper par \(.
Par contre, je n'ai pas approfondir plus loin pour voir si le reste était ok. En particulier dans, home|,) la virgule me parait mal venue mais je peux me tromper.
Il y a des outils en ligne pour tester les expressions régulières : Reg101 par exemple.
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
en voulant réutiliser ce script dans la sidebar, au lieu de ne m'afficher que les 4 derniers articles de chaque catégorie et le lien voir tous les autres articles, il m'affiche tous les articles de la catégorie.
Lorsque je teste ce code, cela m'affiche bien le nombre correct d'article de la catégorie
Cordialement
Si dans : je n'indique qu'une seule catégorie, là fonctionne correctement.
Pareil si j'indique deux catégories cela fonctionne
Dans le code qui fonctionne, la 1° ligne est à mettre après la ligne indiquant le nombre d'items.
Et seconde erreur il y a '20' d'indiqué au lieu de ¤nb_item
Toutes mes excuses pour avoir "pollu" le sujet avec cette erreur d'étourderie
Cordialement
Bonjour,
Est-ce que quelqu'un peut m'expliquer?
Je comprends $cat et je comprends ce qu'est '[0-9]{3}' , c'est le $userId qu'on retrouve dans /core/admin/index.php
Par contre, je ne comprends pas ni
avant $cat, ni
après, ni les deux '' vide ni le before...
Est-ce que quelqu'un pourrait nous l'interpréter pour qu'on puisse mieux le comprendre et pouvoir l'adapter comme par exemple pouvoir afficher le nombre d'article d'une catégorie choisie appartenant à un utilisateur donné et possédant un statut particulier, publié, brouillon, en attente de modération...
Merci par avance pour votre aide,
Bonjour,
nbArticles est une procédure de la class plxMotor.
Tu trouveras la description des différents paramètres dans le fichier core/lib/class.plx.motor.php en recherchant la fonction nbArticles :
'' : on ne recherche que les articles qui sont validés ou modérés
'before' : publiés avant aujourd'hui
(?: ) on ouvre des parenthèses pour proposer différentes variantes permises mais on ne mémorise pas la variante trouvée. Il faut en trouver une.
entre les parenthèses on précise les différentes catégories permises :
[0-9] : n'importe quelle catégorie
home : la catégorie home
(?:$cat) une série de catégories recherchées. Il faut au moins en trouver une dans la série.
Note que l'expression régulière est mal écrite. Pour être précis et concis, il convient de l'écrire comme ceci :
Il n'y a aucune chance de trouver le dernier home vu comme sont générés les noms de fichiers articles
et dans PluXml on devrait écrire :
Dans une expression régulière "." correspond à n'importe quel caractère (joker) et pas seulement le point.
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Je crois que j'ai à peu près compris ce que sont
etc
ça correspond au possibilité de nom de fichier d'un article : numerodarticle.numerodecateorie.numerodutilisateur etc c'est bien ça?
Mais pourquoi y-a-til l'option home dans la partie concernant numerodutilisateur?
par contre, je ne comprends pas du tout les deux derniers
home est une catégorie spéciale qui permet d'afficher l'article en page d'accueil. Ce n'est pas un numéro d'utilisateur
'' correspond au paramètre $mod de la fonction. PluXml a 5 niveaux de profil différents. Pour les plus bas, on a la possibilité de valider les articles par "le chef" avant de les publier. Cela s'appelle modérer, d'où le nom de la vairable $mod.
'before' : "Oh my Dear, you can't read english !" before signifie avant. On ne va retenir que les articles publiés jusqu'à aujourd'hui.
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
D'accord, merci beaucoup, je comprends mieux.
Est-il possible d'obtenir le nombre d'articles publiés d'une catégorie ultérieurement à la publication d'un article donné?
Si on connait le nombre d'articles plus récents qu'un article donné, avec l'aide de $plxMotor->bypage, on peut calculer sur quelle page, cet article se trouve.
L'idée est de pouvoir créer un bouton retour dans un article vers sa page dans sa catégorie (pour l'instant mon bouton retour renvoi vers la première page de sa catégorie).
Serait-il possible de modifier la fonction plxShow->lastArtList() (ou s'inspirer pour en créer une nouvelle) de façon à retourner le nombre des derniers articles, non pas par rapport à un $max mais par rapport à un $artID?
@bazooka07 , je me permets de revenir sur ce 'before'. Je sais bien ce que signifie ce mot en anglais mais je ne comprends pas son utilité. Autrement dit, dans quel cas on n'utiliserait pas before mais after puisqu'a priori, aucun article n'appartient à after étant donné que ces before et after sont liés à la date du jour (de consultation du site c'est ça?) et non pas à une date donnée (celle de publication d'un article par exemple). Ce n'est pas très clair pour moi.
Du coup, j'ai du mal à comprendre comment modifier plxShow->lastArtList().
Dans
$plxGlob_arts->query($motif,$type='',$tri='',$depart='0',$limite=false,$publi='all')
$depart='0' signifie que la requête se fait à partir de l'indice 0, c'est à dire, l'article le plus récent, n'est-ce pas?
Donc, pour obtenir ce que je veux, il faut
soit compter de $depart='indice d'artID' à $limite=false et le soustraire à
$plxMotor->nbArticles('(?:[0-9]|home|,)(?:'.$cat.')(?:[0-9]|home|,)', '[0-9]{3}', '', 'before');
dans les deux cas, mon problème dépend de la connaissance de l'indice d'artID dans le tableau $plxGlob_arts, c'est ça?
J'ai bien compris comment ça fonctionne?
C'est possible de connaître l'indice d'artID?
J'ai réussi à faire ce que je voulais. Je vais détailler après comment.
Pour réussi à mes fins, j'ai modifié plxShow->lastArtList() en lui ajoutant une variable de la façon suivante :
Puis, dans article.php, j'ai écrit la div de mon bouton retour de cette façon :
Je me demande comment remplacer '002' dans $plxMotor->aCats['002']['bypage'] pour automatiser l'affaire?
Que pensez-vous de cette modification apportée à plxShow->lastArtList() ? Peut-être vaudrait il mieux faire une autre fonction qui permet spécifiquement de calculer le nombre d'article plus récent ou plus ancien qu'un article précis mais pour moi, c'était plus simple d'adapter du bon code existant que d'en créer.
@bazooka07 , si tu veux regarder de plus près, j'ai commit/push ces modifications sur la branche thème_mini-site_Défis .
pour remplacer '002' par $cat, écrire :
avant. Soit pour une div de bouton retour: