web-dev-qa-db-fra.com

Comment puis-je ajouter des options de menu personnalisées?

Nous souhaitons rendre les vues de notre composant aussi réutilisables que possible, en affichant les données différemment, en fonction de la manière dont la vue est utilisée. Les paramètres des composants conviennent à l'affichage général, mais le mode d'affichage à utiliser dépend de la manière dont l'option de menu de la vue est configurée.

En outre, de nombreux fournisseurs de données tiers sont installés en option. La plupart d'entre eux peuvent être configurés, activés/désactivés et des paramètres API variables peuvent être spécifiés.

Comment cela fonctionne-t-il, comme je l'ai vu accomplir avec des extensions telles que des modules de menu et des modèles?

2
GDP

Vous pouvez utiliser les paramètres du menu. Ils sont similaires aux paramètres du composant mais peuvent être configurés différemment pour chaque élément de menu. Les paramètres de menu peuvent être définis dans le fichier XML de modèle de votre vue (par exemple, /components/com_yourcomponent/views/yourview/tmpl/default.xml).

Tutorial: https://docs.joomla.org/J3.x:Developing_a_MVC_Component/Adding_a_variable_request_in_the_menu_type

4
fruppel

Une vue peut avoir plusieurs mises en page dans le répertoire de la vue du temple, et les mises en page peuvent être remplacées au niveau du modèle.

2
Anibal

Les éléments de menu sont également traités avec un plug-in de contenu, ce qui permet d'ajouter des options personnalisées à l'aide d'un formulaire XML spécifié:

// no direct access
defined ( '_JEXEC' ) or die ( 'Restricted access' );
class plgContentMyPlugin extends JPlugin {
    function onContentPrepareForm($form, $data) {
        $option = JFactory::getApplication()->input->get('option');
        if($option == 'com_menus'){
            if(is_object($data)) return;
            JForm::addFormPath(__DIR__ . '/forms'); // Path to XML
            $form->loadFile('my_menuoptions', false);
            return true;
        }
    }
}

** Form XML of custom menu Options **
plugins\content\myPlugin\forms\my_menuoptions.xml
<?xml version="1.0" encoding="utf-8"?>
  <form>
   <fields name="params">
       <fieldset name="MyMenuOptions" label="My Options">
            <field name="custom1" type="text" size="10" label="My Custom Field 1"class="inputbox" labelclass="control-label" />
            <field name="custom2" type="radio" class="btn-group" default="1" label="My Custom Field 2">
                <option value="1">One</option>
                <option value="2">Two</option>
            </field>
        </fieldset>
  </fields>
</form>
2
GDP