[Résolu] Lister les pages statiques de certains groupes dans sidebar

RégisRégis Member
juillet 2012 modifié dans Entraide
Bonjour,
Je découvre PluXml dont j'ai installé la v5.1.6 en localhost.

Facile à prendre en main, il correspond au besoin de mon petit projet.
Sauf que... j'ai un besoin spécifique que je n'arrive pas à résoudre. Je précise que je ne suis pas développeur (PHP très très basique ;-)), que je n'ai pas réussi à trouver un plug-in (peut-être l'ai-je raté) qui puisse m'aider et que je n'ai pas réussi à utiliser correctement les fonctions trouvées dans devzone.pluxml...

Mon besoin :
Je souhaiterai que dans le sidebar s'affiche la liste des pages statiques d'un groupe si et seulement si on est sur le groupe en question (mais pas la liste des pages des autres groupes).
J'espère que je suis clair...

=> Exemple : Je suis sur une des pages statiques du groupe dont l'ID est 3 et je veux que seul la liste des pages du groupe ID 3 apparaissent dans le sidebar (pas celles du groupe 1, 2 ou 4, etc.)

J'ai bien essayé d'utiliser des if et autres else, staticId et autres staticList... sans y arriver

J'ai l'impression que ce n'est pas difficile à faire... mais c'est au delà de mes compétences.
Existe-t-il un plug-in qui pourrait répondre à ma demande ou quelqu'un peut-il coder ou m'aiguiller...

Merci d'avance

Réponses

  • Jerry WhamJerry Wham Member
    juillet 2012 modifié
    <?php $plxShow = plxShow::getInstance();
    if ($plxShow->mode() == 'static') :
        ob_start();
        $plxShow->staticGroup();
        $group = ob_get_clean();
        if (!empty($plxShow->plxMotor->aStats)) {
            foreach($plxShow->plxMotor->aStats as $k => $v) {
                if ($v['group'] == $group) {
                       echo '<a href="'.$v['url'].'">'.$v['name'].'</a>';
                 }
             }
        }
    endif;?>
    

    Essaie ça dans ta sidebar ou là où tu veux que tes pages apparaissent
  • Merci Jerry Wham,
    Je teste cela ce soir... après mon job
  • Voilà, j'ai testé (j'ai placé le code dans sidebar.php).

    OK, j'obtiens bien la liste des pages statiques du groupe dans lequel je suis... mais j'ai un souci... : l'URL des pages n'est pas correcte (et donc non fonctionnelle).

    => J'obtiens, par exemple, ceci : pluxml-01/bstatica
    => au lieu de cela : pluxml-01/index.php?static4/bstatica

    Comment puis-je résoudre ce problème ?
    Encore merci Jerry Wham
  • Régis,

    Essaies avec ce code
    <?php $plxShow = plxShow::getInstance();
    if ($plxShow->mode() == 'static') :
        ob_start();
        $plxShow->staticGroup();
        $group = ob_get_clean();
        if (!empty($plxShow->plxMotor->aStats)) {
            foreach($plxShow->plxMotor->aStats as $k => $v) {
                if ($v['group'] == $group) {
                       echo '<a href="'.intval($k).'/'.$v['url'].'">'.$v['name'].'</a>';
                 }
             }
        }
    endif;?>
    
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour
    Utilisez la fonction urlRewrite pour le lien, et de protégez les affichages écran avec plxUtils::strCheck pour éviter les failles XSS (entre autre)
    '<a href="'.$plxShow->urlRewrite('?static'.intval($k).'/'.$v['url']).'">'.plxUtils::strCheck($v['name']).'</a>';
    

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Jerry WhamJerry Wham Member
    juillet 2012 modifié
    Stéphane a écrit:
    Bonjour
    Utilisez la fonction urlRewrite pour le lien, et de protégez les affichages écran avec plxUtils::strCheck pour éviter les failles XSS (entre autre)
    '<a href="'.$plxShow->urlRewrite('?static'.intval($k).'/'.$v['url']).'">'.plxUtils::strCheck($v['name']).'</a>';
    
    En effet, j'aurais dû y penser. Merci de nous remettre dans le droit chemin ! :p
  • C'est pas mieux avec
    echo '<a href="'; $plxShow->urlRewrite('?static'.intval($k).'/'.$v['url']); echo '">'.plxUtils::strCheck($v['name']).'</a>';
    

    ou ça
    $plxMotor = plxMotor::getInstance();
    echo '<a href="'.$plxMotor->urlRewrite('?static'.intval($k).'/'.$v['url']).'">'.plxUtils::strCheck($v['name']).'</a>';
    

    ?
  • StéphaneStéphane Member, Former PluXml Project Manager
    le code est appelé à partir de la sidebar, donc inutile de déclarer une instance de plxMotor.
    plxShow contient la méthode urlRewrite()

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Par contre on a oublie le $ devant plxShow
  • StéphaneStéphane Member, Former PluXml Project Manager
    Jerry Wham a écrit:
    Par contre on a oublie le $ devant plxShow

    Exact, j'ai corrigé dans mon post

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Et moi dans le mien !
  • RégisRégis Member
    juillet 2012 modifié
    Bonjour,
    Désolé de ne pas avoir répondu plus tôt (journée très chargée...).
    Je viens de tester avec le code donné par Stéphane : OK ça marche ;-)
    Merci à tous pour votre participation à la résolution du problème.
    Ps : j'ai rajouté [résolu] dans le titre du topic.
  • cpalocpalo Member
    Bonjour

    J'ai pratiquement le même besoin que Régis.
    Je suis en cours de réalisation de mon thème , pour voir:iici
    ( pb de li à rajouter quelque part pour que les pages s'affichent les unes au-dessous des autres dans la sidebar)

    Je souhaiterai que
    - lorsqu'on clique sur le nom du groupe( framework, groupe2) ce soit l'une de ses pages qui s'affichent et que dans la sidebar ce soit la liste de ses pages qui s'affiche.
    - que dans le menu horizontal il n'y ait que le nom des groupes (cliquable) ou des pages isolées qui s'affichent

    Le plus: ce serait que dans la sidebar ce soit le nom du groupe séléctionné qui s'affiche au lieu du titre que j'ai mis.

    Merci

    Pour le menu horizontal: j'ai vu quelques idées sur le forum ( en particulier cele du site Samare)
    s pages qu
Connectez-vous ou Inscrivez-vous pour répondre.