Fonctions artCat(), artActiveCatIds() et artCatIds().

cfdevcfdev Member
Salut,
je voudrais réaliser une liste des catégories avec des couleurs comme l'image ci-dessous
1457533453.jpg
Pour avoir ce rendu je pioche directement dans le xml, c'est bien pour avoir les derniers articles, mais pour la partie blog avec le système de pagination je ne peux pas faire pareil.

voici le code html que je souhaiterai obtenir:
[== Indéfini ==]
 <ul class="cat_list"><li class="cat-001">Général</li></ul>

Le fonction artCat() n'est pas assez personnalisable... et je 'narrive pas à utiliser les artActiveCatIds() et artCatIds() fonctionne pas chez moi :(
une idée?

Réponses

  • PierrePierre Member
    Si les catégories sont déjà connues et assez fixes (pas dynamiques), moi j'irais avec une succession de plusieurs instances de la fonction lastArtList() en fixant la catégorie en la nommant par son numéro dans chaque instance. Par exemple, ça utiliserait par défaut le dernier article de chacune de ces catégories, son titre peut servir de lien vers la page unique d'article.
  • StéphaneStéphane Member, Former PluXml Project Manager
    Hello

    Englobe la fonction artCat dans une div qui permettra de définir des propriétés css sur les liens des catégories
    <div class="art-cats"><?php $plxShow->artCat('') ?></div>
    

    nb: on passe '' comme paramètre à la fonction artCat pour ne pas avoir la , de séparation entre chaque catégories

    ensuite un petit coup de css
    .art-cats {
    	display: inline-block;
    }
    
    .art-cats a {
    	background-color: #4E7890;
    	color: #fff;
    	padding: 5px;
    	margin: 0 3px 0 3px;
    }
    

    Enjoy ;)

    ps: modif pour le fichier home.php (et les autres qui utilise artCat) en supposant que l'affichage est pour la liste des catégories de chaque article

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • cfdevcfdev Member
    mars 2016 modifié
    @Stephane merci pour la mise en page :D mais c'est pas cela que je souhaite sinon je n'aurais pas posté sur le forum:
    [== Indéfini ==]
    <ul class="cat_list">
     <li class="cat-001">Général</li>
     <li class="cat-007">Ressources</li>
    </ul>
    

    Je veux identifier mes catégories avec leur ID pour definir des class de couleurs, je l'ai déjà fait sur la page d'acceuil ça marche nikel, mais je voudrais l'utiliser avec des fonctions de plxShow.

    @Pierre lastArtList() ne me sort pas les id des cat
  • StéphaneStéphane Member, Former PluXml Project Manager
    <div class="art-cats"><?php $plxShow->artCat('') ?></div>
    
    .art-cats {
        display: inline-block;
    }
    .art-cats a {
        padding: 5px;
        margin: 0 3px 0 3px;
    }
    .art-cats a[title="Général"] {
        background-color: #4E7890;
        color: #fff;
    }
    .art-cats a[title="Ressources"] {
        background-color: #597821;
        color: #fff;
    }
    

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • PierrePierre Member
    Ah, je comprend, tu veux influencer la couleur de chacun des boutons de catégories actives. Par "couleur", je pensais qu'on parlait de l'image d'arrière-plan en rose qui serait influencée par une catégorie ou une autre.

    Bonne chance avec la solution offerte par Stéphane, tu es entre bonnes mains. Je compte bien prendre en note la méthode en question, on sait jamais.
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    mars 2016 modifié
    Pour afficher la liste des catégories, il te suffit d'appeler la fonction $plxShow->artCat('', $format); avec $format qui va bien en t'inspirant de la valeur par défaut pour mettre l'attribut class à <li> :
    [== PHP ==]
    ?>
    <ul>
    <?php
    $format =  '<li id="#cat_id" class="#cat_status cat-#cat_id"><a href="#cat_url" title="#cat_name">#cat_name</a></li>''
    ?>
    $plxShow->catList('', $format);
    <ul>
    

    Tu peux également afficher une image pour chaque catégorie en modifiant $format. Note que le dossier des images s'obtient par
    [== PHP ==]
    $mediasRoot = $plxMotor->racine.$plxMotor->aConf['racine_medias'];
    $format =  '<li id="#cat_id" class="#cat_status cat-#cat_id"><img src="'.$mediasRoot.'#cat_id.jpg"/><a href="#cat_url" title="#cat_name">#cat_name</a></li>';
    
    Dans ta feuille de style CSS, il faudra définir une couleur pour chaque class cat-1, cat-2, .....
  • PierrePierre Member
    Ah celle-là je l'aime beaucoup, j'ai souvent des pictogrammes qui représentent les catégories et je fais des pirouettes pour les afficher au lieu des noms, c'est beaucoup mieux comme ça. J'avais pas pensé de créer le $format au préalable, génial.
  • cfdevcfdev Member
    Merci je pense pouvoir me débrouiller avec ça ?
    Après pour catlist il me semble pas avoir vu #cat_id dans la doc... Il faut que jouvre les yeux.
    ++
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Je ne sais pas ce qu'il y a dans la doc. :(
    J'ai regardé directement la fonction catList dans le fichier core/lib/class.plx.show.php
    Il y a la liste de tous les formats reconnus par catLIst
  • StéphaneStéphane Member, Former PluXml Project Manager
    Attention la fonction catList liste toutes les catégories (sidebar), tandis que la fonction artCat liste les catégories d'un article.
    Dans ce que demande cfdev (si j'ai bien compris sa demande) c'est de pouvoir styliser l'affichage des catégories de ses articles.
    On ne peut donc pas ici utiliser la fonction catList.
    D'où le code donné dans le post #5, pour avoir un affichage différent en fonction du nom de la catégorie. On se base ici sur le contenu de la balise title car il n'y a pas d'id sur les liens. Cette alternative a ses inconvénients mais elle répond à la demande initiale.

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • cfdevcfdev Member
    mars 2016 modifié
    @Stéphane +1
    Ok c'est fait merci. ;)

    Juste pour information, Stéphane à quoi servent artActiveCatIds() et artCatIds() du coup ?
  • StéphaneStéphane Member, Former PluXml Project Manager
    artCatIds() : retourne la liste des catégories de l'article séparées par des virgules
    artActiveCatIds() : retourne un tableau contenant les numéros des catégories actives de l'article
    artCat() : affiche la liste des catégories actives de l'article sous forme de lien cliquable

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • PierrePierre Member
    Quel beau candidat pour un formatage dans une future version, quelque chose du genre:

    artCat('#artCatId, ','all')
    artCat('#artCatId','active')
    artCat('<a href="#cat_url" title="#cat_name">#cat_name</a>, ','active')

    On peut même rêver à tout balancer et utiliser catList(). Ça reste à débattre et à peaufiner mais c'est l'idée. Tellement de fonctions de PluXml profiteraient d'une telle simplicité et flexibilité. C'est vrai qu'on finit toujours par s'habituer aux pirouettes demandées par les incongruitées de PluXml mais il est parfois difficile de motiver l'existence de ces façons différentes de faire la même chose. Je répète la même rengaine, toutes les fonctions avec un $format et fini les ECHO dans ces fonctions, les remplacer par des RETURN. Si on veut tout de suite afficher, on s'en occupera à la sortie dans le gabarit.

    Mais ce sera pour une future conversation, vivement la version 5.5 en attendant, j'ai tellement hâte, je ne voudrais pas la retarder!
Connectez-vous ou Inscrivez-vous pour répondre.