Cibler enfants d'une page ID du menu pour afficher un module dans les pages enfants

Réduire
Ce sujet est fermé.
X
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Cibler enfants d'une page ID du menu pour afficher un module dans les pages enfants

    Hi @all,

    Mon titre n'est peut être pas très explicite... difficile à formuler en une phrase

    L'idée : Afficher un module sur des pages spécifiques, en les ciblant depuis leur item de menu parent.
    Pour cibler une page "active" du menu, ça OK :

    Code PHP:
    <?php
    $app 
    JFactory::getApplication();
    $menu $app->getMenu();
    $active $menu->getActive();
    if (
    $active->id == 105) { 
    // bout de code...
    ?>
    Sauf que, je ne veux pas cibler cette page à l'ID 105 (qui est un affiche Blog catérogie), mais les sous-pages (les enfants), autrement-dit quand l'article est afficher complet.

    Et ces fameuses sous-pages ne sont pas dans mon menu, et les ID, il y en aura des nouvelles à chaque fois qu'il y aura un nouvelle article.
    Donc impossible de cibler leurs ID.

    Je n'ai pas trouvé comment cibler les "enfants".

    Des pistes ?

    Merci d'avance.

  • #2
    Re : Cibler enfants d'une page ID du menu pour afficher un module dans les pages enfa

    Bonjour,
    Peut-être que Advanced Module Manager de Nonumber.nl pourrait t'aider...


    Cordialement,
    Chabi01 - http://www.xlformation.com

    Commentaire


    • #3
      Re : Cibler enfants d'une page ID du menu pour afficher un module dans les pages enfa

      Bonjour psykopathik,

      Voici plusieurs pistes.

      1) Avec Joomla! tout seul en utilisant l'assignation des modules : créer une architecture à deux niveaux des des catégories et utiliser un menu caché pour le deuxième niveau. L'organisation proposée est :
      Catégorie A --> lien dans le menu visible (avec inclure les sous-catégories) --> le module ne lui est pas assigné
      • Catégorie B --> lien dans un menu caché --> le module lui est assigné
        • Article 1
        • Article 2

      Dans le menu visible le lien blog sur la catégorie A permet d'afficher les articles en blog. Quand on clique sur un des articles en blog, Joomla! remonte au premier lien de menu au-dessus de l'article pour l'afficher en entier, donc le lien de menu du menu caché et il affiche le module qui est assigné à ce menu caché.

      2) Joomla! avec un module comme MetaMod
      http://extensions.joomla.org/extensi...anagement/3391
      On doit aussi pouvoir le faire avec d'autres extensions de http://extensions.joomla.org/extensi...les-management, mais c'est MetaMod qui m'est venu en premier.
      MetaMod permet d'afficher les modules en fonction d'un code PHP, par exemple on peut mettre :
      Code:
      if ($view == 'article' and $Itemid == "xxx") return yyy;
      $view == 'article' : il faut que la vue soit 'article' puisque l'on veut que le module ne s'affiche que pour les articles affichés complets
      $Itemid == 'xxx' : il faut que l'id du lien de menu soit xxx puisque l'on veut que le module ne s'affiche que pour ce lien de menu
      return yyy : si les deux conditions sont vraies MetaMod retourne (affiche) le module dont l'id est yyy

      3) Si l'objectif est d'ajouter un 'bout de code' comme dans l'exemple de ton post il faut penser que comme pour MetaMod les articles entiers sont affichés avec une view=article et dépendent d'un lien de menu Itemid=xxx (105 dans ton exemple) :
      Code:
      <?php
      $app    = JFactory::getApplication();
      $view   = $app->input->getCmd('view', '');
      $itemid = $app->input->getCmd('Itemid', '');
      if ($view =='article' && $itemid='105') {
          // bout de code ...
      }
      ?>
      Atuce : C'est parfois utile de se mettre en mode non-SEF et de regarder de contenu de l'URL. Ici, ça m'a donné la view et l'itemid des pages ciblées. Avec Protostar, on peut aussi regarder les valeurs des variables lignes 20 à 26 de templates/protostar/index.php en ajoutant des 'echo' pour voir ce qu'il y a dedans.

      Amicalement,
      Rajoz

      Commentaire


      • #4
        Re : Cibler enfants d'une page ID du menu pour afficher un module dans les pages enfa

        Hello,

        Tout d'abord merci à tous d'avoir pris le temps de me répondre.

        J'avoue que ca m'embête de passé par un module tiers, quand on peut simplement le faire en PHP et que c'est un paramètre qu'il n'y a pas besoin d'administrer (dans mon cas).

        @Rajoz :
        La solution 1 n'est pas possible, trop fastidieuse... créer un nouvel item à chaque fois que l'on créé un article, c'est un coup à oublié 1 fois 5, et à très rapidement avoir un menu à 3000 items

        Je teste avec ta piste en PHP.
        Pour le moment j'ai des erreurs, mais on trifouillant avec les sources des modules évoqués, je vais peut-être trouver la bonne façon d'écrire ma petite condition.

        Je vous tiens au courant.

        Commentaire


        • #5
          Re : Cibler enfants d'une page ID du menu pour afficher un module dans les pages enfa

          Merci Rajoz !
          Ton code PHP fonctionne nickel en fait !

          J'avais bêtement oublié une parenthèse pour fermer

          Si ca peut servir :

          Code PHP:
          <?php
          $app 
          JFactory::getApplication();
          $menu $app->getMenu();
          $active $menu->getActive();
          $view   $app->input->getCmd('view''');

          if (
          $active->id == 105 || $active->id == 106 || $active->id == 252 || $active->id == 253) {
          if (
          $view =='article') { ?>

          // MON MODULE

          <?php }
          ?>

          Commentaire

          Annonce

          Réduire
          Aucune annonce pour le moment.

          Partenaire de l'association

          Réduire

          Hébergeur Web PlanetHoster
          Travaille ...
          X