web-dev-qa-db-fra.com

Comment commander les ensembles de champs pour un module joomla manuellement?

enter image description here

Je développe actuellement un module joomla. Pour les paramètres détaillés, j'ai créé deux champs - comme vous pouvez le voir sur ma capture d'écran. Est-il possible de trier les ensembles de champs pour amener les "données du graphique" et les "options du graphique" aux 2e et 3e places? L'ordre devrait être Module, données de graphique, options de graphique, ...

le code actuel est simple:

<config>
    <fields name="params">
        <fieldset name="MOD_NX_CHARTS_DATA_LABEL">

J'ai déjà vérifié les guides de développement de joomla mais je n'ai trouvé aucune information si cela est possible ou non ...

Quelqu'un a des suggestions si/comment cela pourrait être possible?

Merci pour toute aide

3
Proximate

Il est techniquement possible d'y parvenir, mais les modules ne sont pas vraiment conçus dans cet esprit, vous devez donc remplacer la vue com_modules. Personnellement, je pense que vous devez avoir de bonnes raisons de changer le comportement par défaut de Joomla, car cela peut rendre la mise à jour du site plus complexe.

En tous cas....

L'ordre de tabulation est défini dans administrator\components\com_modules\views\module\tmpl\edit.php, dans le bit de code suivant.

        <?php if (isset($long_description) && $long_description != '') : ?>
            <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'description', JText::_('JGLOBAL_FIELDSET_DESCRIPTION')); ?>
            <?php echo $long_description; ?>
            <?php echo JHtml::_('bootstrap.endTab'); ?>
        <?php endif; ?>

        <?php if ($this->item->client_id == 0) : ?>
            <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'assignment', JText::_('COM_MODULES_MENU_ASSIGNMENT')); ?>
            <?php echo $this->loadTemplate('assignment'); ?>
            <?php echo JHtml::_('bootstrap.endTab'); ?>
        <?php endif; ?>

        <?php if ($this->canDo->get('core.admin')) : ?>
            <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'permissions', JText::_('COM_MODULES_FIELDSET_RULES')); ?>
            <?php echo $this->form->getInput('rules'); ?>
            <?php echo JHtml::_('bootstrap.endTab'); ?>
        <?php endif; ?>

        <?php
        $this->fieldsets = array();
        $this->ignore_fieldsets = array('basic', 'description');
        echo JLayoutHelper::render('joomla.edit.params', $this);
        ?>

Les trois premières sections de code créent les onglets par défaut, avant que le code suivant ajoute des onglets supplémentaires sur mesure:

        <?php
        $this->fieldsets = array();
        $this->ignore_fieldsets = array('basic', 'description');
        echo JLayoutHelper::render('joomla.edit.params', $this);
        ?>

Pour ce faire, il appelle la présentation sous layouts\joomla\edit\params.php, qui génère un onglet avec echo JHtml::_('bootstrap.addTab', 'myTab', 'attrib-' . $name, $label); pour chaque ensemble de champs.

Si vous copiez le fichier edit.php dans votre modèle admin, par exemple, administrateur/modèles/isis/html/com_modules/module/edit.php (si vous utilisez isis), vous pouvez modifier cet ordre. autour, ou écrivez une logique supplémentaire pour traiter des modules spécifiques différemment.

Comme je l'ai dit, je pense que cela ne vaut probablement pas la peine de le faire à moins que cela ne vous procure un avantage considérable en termes de facilité d'utilisation, car il semble que ce soit le genre de chose qu'il est facile d'oublier que vous avez fait à l'époque des correctifs.

1
Richard B