ajouter un tag de module

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • ajouter un tag de module

    Bonjour

    dans l'admin > gestion des modules (on choisi un module) > Paramètres avancés > Tag de module

    on a une liste posible

    Code:
    <select id="jform_params_module_tag" name="jform[params][module_tag]" class="chzn-done" style="display: none;">
    	<option value="div" selected="selected">div</option>
    	<option value="section">section</option>
    	<option value="aside">aside</option>
    	<option value="nav">nav</option>
    	<option value="address">address</option>
    	<option value="article">article</option>
    </select>
    comment peut on ajouter des valeurs supplémentaires ?

    si je sais ou est cette liste je peux faire un overrides

    merci

  • #2
    Re : ajouter un tag de module

    Bonjour ErickB,

    Voici où se trouvent ces options de formulaire :

    1) Le champ module_tag est défini dans le composant de gestion des modules : administrator/components/com_modules/models/forms/advanced.xml
    Code:
    <field
        name="module_tag"
        type="moduletag"
        label="COM_MODULES_FIELD_MODULE_TAG_LABEL"
        description="COM_MODULES_FIELD_MODULE_TAG_DESC"
        default="div"
    />
    2) Le type moduletag du champ module_tag est défini dans : libraries/cms/form/field/moduletag.php
    Code:
    $tags = array('div', 'section', 'aside', 'nav', 'address', 'article');
    3) L'utilisation du moduleTag est définie dans le style chrome des modules, par exemple voir le style chrome well des modules de Protostar dans : templates/protostar/html/modules.php (variable $moduleTag).

    Le 1) et 2) sont des fichiers natifs de Joomla qu'il n'est pas recommandé de modifier.

    Pour ajouter une valeur supplémentaire, il me paraît plus simple de créer dans le template un nouveau style chrome en réutilisant un moduletag déjà existant mais non utilisé par ailleurs.

    Amicalement,
    Rajoz

    Commentaire


    • #3
      Re : ajouter un tag de module

      Merci pour ta réponse

      j'ai bien sur mon propre module.php dans chacun de mes templates (d'ailleur je detourne bootstrap comme ça)
      mai sa part un overrides de cette liste qui manque de souplesse
      $tags = array('div', 'section', 'aside', 'nav', 'address', 'article');

      je ne vois pas comment recuperer d'autre valeurs
      cette liste pourrait parfaitement etre de base dans un JText:_ et donc facilement modifiable

      Commentaire


      • #4
        Re : ajouter un tag de module

        Pour ajouter une valeur supplémentaire, il me paraît plus simple de créer dans le template un nouveau style chrome en réutilisant un moduletag déjà existant mais non utilisé par ailleurs
        je ne vois pas ce que tu veux dire dans ce cas

        Commentaire


        • #5
          Re : ajouter un tag de module

          Bonjour ErickB,

          je ne vois pas ce que tu veux dire dans ce cas
          Par exemple, si tu ne te sers pas de <address> et que tu as besoin de <p> tu peux remplacer le moduletag dans le code de module.php. Pour chrome well de Protostar cela donnerait (en rouge) :
          Code:
          function modChrome_well($module, &$params, &$attribs)
          {
              $moduleTag     = $params->get('module_tag', 'div');
              $bootstrapSize = (int) $params->get('bootstrap_size', 0);
              $moduleClass   = $bootstrapSize != 0 ? ' span' . $bootstrapSize : '';
              $headerTag     = htmlspecialchars($params->get('header_tag', 'h3'));
              $headerClass   = htmlspecialchars($params->get('header_class', 'page-header'));
          
             [COLOR=#ff0000] if($moduleTag == 'address')
              {
                  $moduleTag = 'p';
              }
          [/COLOR]
              if ($module->content)
              {
                  echo '<' . $moduleTag . ' class="well ' . htmlspecialchars($params->get('moduleclass_sfx')) . $moduleClass . '">';
          
                      if ($module->showtitle)
                      {
                          echo '<' . $headerTag . ' class="' . $headerClass . '">' . $module->title . '</' . $headerTag . '>';
                      }
          
                      echo $module->content;
                  echo '</' . $moduleTag . '>';
              }
          }
          C'est vrai que ce n'est pas très souple : le nombre d'options reste de 6 et il faut configurer une option pour obtenir un autre résultat. Mais c'est très facile à faire.

          Avec plus de programmation, il est possible de créer un plugin pour ajouter un champ supplémentaire au composant com_modules et d'utiliser ce champ à la place de module tag dans module.php. La doc pour ajouter des champs à un composant se trouve sur https://docs.joomla.org/Adding_custo...using_a_plugin

          J'avoue que je ne vois pas très bien ce que tu veux faire. Les 6 options habituelles pour les balises encadrant les modules sont habituellement suffisantes. Quelles sont les options que tu souhaites ajouter ?

          Amicalement,
          Rajoz

          Commentaire


          • #6
            Re : ajouter un tag de module

            oui avec modChrome de cette manière bien sur

            c'était pour ajouter plus de souplesse a ce menu, je trouve generalement Joomla trop figé de ce cote là
            heureusement des plugin comme le MVC overrider permettent deja beaucoup

            Commentaire


            • #7
              Pout info dans Joomla 4 c'est dans libraries/src/Form/Field/ModuletagField.php

              Commentaire

              Annonce

              Réduire
              Aucune annonce pour le moment.

              Partenaire de l'association

              Réduire

              Hébergeur Web PlanetHoster
              Travaille ...
              X