Une catégorie dans des catégories

flipflipflipflip Member

Bonjour à tous,

Pour un thème, lorsque je suis dans certaines catégories j'ai besoin d'afficher le titre, la description, la vignette et l'url d'une autre catégorie.

J'ai pensé utiliser le plugin catégorie/sous catégorie (https://forum.pluxml.org/discussion/6932/plugin-categories-meres-filles-suite-dun-precedent-sujet) mais mes sous-catégories peuvent avoir plusieurs parents.

Est-ce qu'il y a quelques choses de prévues dans le core ou bien est-ce que je m'inspire de la fonction plxShow->catList ?

Merci d'avance.

J'ai un string de l'array

Réponses

  • bonjour,

    c'est effectivement a partir de la fonction plxShow->catList que tu vas pouvoir extraire ce que tu recherches avant l'affichage.

    Ton interrogation rejoint celle que j'avais et dans PluXml , la premiere méthode que j'avais trouvé pour filtrer les catégories à l'affichage dans un théme est via : <?php $plxShow->catList('','<a href="#cat_url" >#cat_name</a>'); ?> en y ajoutant en dur le numéro des catégories a afficher, par exemple la catégorie 001 et 004 donnerait : <?php $plxShow->catList('','<a href="#cat_url" >#cat_name</a>','001 | 004'); ?> .

    Donc oui, à mon avis il te faut faire cette boucle sur les catégories et y extraire les valeurs enfant et retiré tout les parent qui ne matche pas .
    Cependant, le plugin que tu évoques ne laisse le choix a une catégorie de n’être enfant que d'une seule autre . Les articles , quant à eux, peuvent être rattaché a plusieurs catégories.

    Tu ne dis pas comment tu fait ta liaison entre tes catégories, as tu aussi modifié le tag <categorie>?

    Cdt

    covid-19 survivor mais récupération longue ...

  • flipflipflipflip Member

    Tu ne dis pas comment tu fait ta liaison entre tes catégories, as tu aussi modifié le tag ?

    J'utilise le plugin kzChampPlus (je l'adore ce plugin). Je créé un champ qui sera destiné à contenir l'id de la catégorie enfant avec un éventuel séparateur si j'ai besoin d'afficher plusieurs catégories filles.

    Le problème de catList est qu'il n'y a pas le tag pour la vignette, en tout cas en version 5.8.2

    J'ai un string de l'array

  • 26 mars modifié

    Dans ce cas, tu reprend toute la fonction dans le hook que tu modifies pour y ajouter les champs manquant.

    la partie à reprendre et modifier (voir commentaires)

            # Si on a la variable extra, on affiche un lien vers la page d'accueil (avec $extra comme nom)
            if (!empty($extra)) {
                echo strtr($format, array(
                    '#cat_id' => 'cat-home',
                    '#cat_url' => $this->plxMotor->urlRewrite(),
                    '#cat_name' => plxUtils::strCheck($extra),
                    '#cat_status' => ($this->catId() == 'home') ? 'active' : 'noactive',
                    '#art_nb' => '',
             #ajout nouveau champs ici 
                ));
            }
    
            # On verifie qu'il y a des categories
            if ($this->plxMotor->aCats) {
                $currentCats = $this->catId(true);
                foreach ($this->plxMotor->aCats as $idCatStr => $v) {
                    # On vérifie qu'on peut afficher cette catégorie et qu'elle est active
                    if (in_array($v['menu'], array('oui', 1)) && $v['active']) {
                        $idCatNum = intval($idCatStr);
                        $pattern = '@\b0*' . $idCatNum . '\b@';
                        if (empty($include) or preg_match($pattern, $include)) {
                            if (empty($exclude) || !preg_match($pattern, $exclude)) {
                                if ($v['articles'] > 0 || $this->plxMotor->aConf['display_empty_cat']) {
                                    # on a des articles pour cette catégorie ou on affiche les catégories sans article
                                    # On modifie nos motifs
                                    echo strtr($format, array(
                                        '#cat_id' => 'cat-' . $idCatNum,
                                        '#cat_url' => $this->plxMotor->urlRewrite('?categorie' . $idCatNum . '/' . $v['url']),
                                        '#cat_name' => plxUtils::strCheck($v['name']),
                                        '#cat_status' => !empty($currentCats) && in_array($idCatStr, $currentCats) ? 'active' : 'noactive',
                                        '#cat_description' => plxUtils::strCheck($v['description']),
                                        '#art_nb' => $v['articles'],
    
             #ajout nouveau champs ici 
                                    ));
                                }
                            }
                        }
                    }
                } # Fin du while
            }
    

    et a la fin du hook tu ajoutes
    return true ;
    ce qui ne lanceras plus la fonction dans plxShow derrière la tienne.

    (vu dans la doc https://wiki.pluxml.org/developper/developpement/#interrompre-une-fonction-de-pluxml )
    Cdt

    p.s. je ne me suis pas servi de kzChampPlus car je souhaitais ajouter mes champs aux attributs et avoir une vision global dés la page categories.php (au moins deux click de moins et visibilité des relation mère/fille/soeurs d'un simple coup d’œil sur l'ensemble des catégories)

    covid-19 survivor mais récupération longue ...

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