Connexion S'inscrire

Connectez-vous

Login *
Mot de passe *
Se souvenir de moi

Créer un compte

Les champs marqués d'un astérisque (*) sont requis.
Nom *
Login *
Mot de passe *
Vérification mot de passe *
Email *
Vérification email *
Captcha *

Création d'un composant Joomla (partie 24) Paramètres de menu


Dans cette partie,  nous allons voir comment surcharger les paramètres du composant sur un élément de menu, grâce aux paramètres de menu. Cette partie se passe au côté client mais vers la fin, nous retournerons dans le dossier administrator pour modifier un fichier de langue. Si vous êtes arrivés directement sur cette page, peut-être que vous aimeriez commencer par le début: Partie 1 | Partie 2 | Partie 3 | Partie 4 | Partie 5 | Partie 6 | Partie 7 | Partie 8 | Partie 9 | Partie 10 | Partie 11 | Partie 12 | Partie 13 | Partie 14 | Partie 15 | Partie 16 | Partie 17 | Partie 18 | Partie 19 | Partie 20 | Partie 21 | Partie 22 | Partie 23

1 - Introduction

Parfois il peut arriver que pour une raison ou une autre on voudrai qu'un page s'affiche avec des paramètres différents de ceux configurés dans le composant. La solution dans ce cas est de passer par les paramètres de menu. Nous allons voir ici comment réaliser cela.

Nous allons travailler sur la vue détail (page d'un guitariste). Nous aurons besoin de créer un fichier XML de menu avec les paramètres permettant de créer un lien de menu vers un guitariste. Nous modifierons le fichier view.html.php pour tenir compte des paramètres du menu et au final nous modifierons le fichier de langue (fr-FR.com_djguitariste.sys.ini) en rajoutant les nouveau clés.

 

2 - Le fichier default.xml

Nous n'avons pas encore créé de fichier XML de menu pour la vue guitariste. Dans ce fichier XML, nous aurons une section "request" pour permettre de sélectionner le guitariste et une autre section nommée "params" qui va contenir les paramètres de l'affichage de la page. Pour faciliter le travail, le nom des paramètres (name="") doivent être exactement les mêmes que ceux dans le fichier config.xml. Donc nous allons dans le dossier view/guitariste/tmpl pour créer le fichier default.xmlet y rajouter le contenu suivant:

<?xml version="1.0" encoding="utf-8"?>
<metadata>
  <layout title="COM_DJGUITARISTE_GUITARISTE_DEFAULT_TITLE">
    <message>
      <![CDATA[COM_DJGUITARISTE_GUITARISTE_VIEW_DEFAULT_DESC]]>
    </message>
  </layout>
  
  <fields name="request">
    <fieldset name="request">
      <field name="id"
             type="sql"
             label="COM_DJGUITARISTE_SELECT_GUITAR_PLAYER"
             require="true"
             query="SELECT id, name FROM #__djguitariste_items"
             key_field="id"
             value_field="name" />
    </fieldset>
  </fields>
  
  <fields name="params">
    <fieldset name="guitariste"
              label="COM_DJGUITARISTE_GUITARISTE_PARAMS"
              description="COM_DJGUITARISTE_CONFIG_GUITAR_SETTINGS_DESC">
       <field
        name="show_author"
        type="radio"
        label="COM_DJGUITARISTE_SHOW_AUTHOR_LABEL"
        description="COM_DJGUITARISTE_SHOW_AUTHOR_DESC"
        class="btn-group btn-group-yesno"
        default=""
        >
        <option value="">JGLOBAL_USE_GLOBAL</option>
        <option value="1">JSHOW</option>
        <option value="0">JHIDE</option>
      </field>
      
      <field
        name="show_created"
        type="radio"
        label="COM_DJGUITARISTE_SHOW_CREATED_LABEL"
        description="COM_DJGUITARISTE_SHOW_CREATED_DESC"
        class="btn-group btn-group-yesno"
        default=""
        >
        <option value="">JGLOBAL_USE_GLOBAL</option>
        <option value="1">JSHOW</option>
        <option value="0">JHIDE</option>
      </field>
      
      <field
        name="show_category"
        type="radio"
        label="COM_DJGUITARISTE_SHOW_CATEGORY_LABEL"
        description="COM_DJGUITARISTE_SHOW_CATEGORY_DESC"
        class="btn-group btn-group-yesno"
        default=""
        >
        <option value="">JGLOBAL_USE_GLOBAL</option>
        <option value="1">JSHOW</option>
        <option value="0">JHIDE</option>
      </field>         
    </fieldset>
  </fields>
  
</metadata>

À noter qu'ici on a une option par défaut qui est d'utiliser les "paramètres globaux" et c'est la seule différence qu'on a comparé au paramètres du composant. "Paramètres globaux" signifie utiliser ceux du composant.

3 - le fichier view.html.php

Nous devons modifier la méthode display() pour tenir compte des paramètres du menu. nous fusionnons les paramètres du composant avec ceux du menu grâce à la méthode merge(). Voici le contenu du fichier  view.html.php. La zone concernée par la modification est en couleur:

<?php
defined('_JEXEC') or die;

class DJGuitaristeViewGuitariste extends JViewLegacy
{
  public function display($tpl = null)
  {
    $app = JFactory::getApplication();
    
    $guitariste = $this->get('Item');
    $this->guitariste = &$guitariste;
    
    $params = JComponentHelper::getParams('com_djguitariste');
    
    $menuParams = new JRegistry();
    
    $active = $app->getMenu()->getActive();
    $currentLink = $active->link;
    $menuParams->loadString($active->params);
    
    if($active && (strpos($currentLink, 'view=guitariste') && (strpos($currentLink, '&id='.(string)$guitariste->id)))){
      $params = $params->merge($menuParams);
    }else{
      $params = $menuParams->merge($params);
    }
      
    $this->params = &$params;
    
    //meta description
    if($guitariste->metadesc){
      $this->document->setDescription($guitariste->metadesc);
    }
    
    //mots clés
    if($guitariste->metakey){
      $this->document->setMetadata('keywords',$guitariste->metakey);
    }
    
    //Ajouter le nom du guitariste dans le title
    $title = $guitariste->name . " - " .  $this->document->getTitle();
    $this->document->setTitle($title);
    
    parent::display($tpl);
    
  }
}

4 - Le fichier de langue fr-FR.com_djguitariste.sys.ini

Nous devons rajouter les cinq lignes suivantes dans le fichier fr-FR.com_djguitariste.sys.ini qui se trouve dans administrator/language/fr-FR. Les deux premières ligne concernent les textes qui s'afficheront dans le popup de sélection du type d'élément menu. Le troisième est le label de la liste de guitaristes. Le deux derniers concernent l'onglet "Paramètre Guitariste" dans lequel on pourra modifier les paramètres d'affichage.

COM_DJGUITARISTE_GUITARISTE_DEFAULT_TITLE="Un guitariste"
COM_DJGUITARISTE_GUITARISTE_VIEW_DEFAULT_DESC="Cette page affiche un seul guitariste"
COM_DJGUITARISTE_SELECT_GUITAR_PLAYER="Sélectionnez un guitariste"
COM_DJGUITARISTE_GUITARISTE_PARAMS="Paramètres Guitariste"
COM_DJGUITARISTE_CONFIG_GUITAR_SETTINGS_DESC="Paramètres d'affichage du guitariste"

 

Voilà nous venons de finir cette partie. Pour tester, rajoutez un nouvel élément au menu et sélectionnez "Un guitariste" comme Type de lien de menu. Sélectionnez le guitariste dans la liste. Sous l'onglet "Paramètres guitariste" par défaut les paramètres sont à "Paramètres Globaux".

1 - le type de lien de menu

2 - sélection du guitariste

3 - Paramètres de menu

Accédez à la page sur le site en cliquant sur le lien de menu que vous venez d'ajouter. Modifier les paramètres de menu dans l'administration sous l'onglet "Paramètres Guitariste" et actualiser la page sur le site pour voir le résultat. 

Si vous avez des questions, utilisez le formulaire de contact ou notre page Facebook.

Lire la suite...


  • Dernière modification le lundi, 06 novembre 2017 18:35
  • 304
Docteur Joomla

Après plus de 10 ans d'expérience en Joomla, je lance ce Blog pour partager mes connaissances avec les autres développeurs Joomla.