IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

gérer modes d'affichage dans module Joomla 4


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 35
    Points : 21
    Points
    21
    Par défaut gérer modes d'affichage dans module Joomla 4
    bonsoir
    j'ai fait un petit module qui affiche les données d'une de mes tables
    j'appelle ce module dans un article avec {load module}
    j'aimerais faire deux affichages différents de ces données et donc appeler dans {load module} le paramètre affichage choisie

    j'ai créé un paramètre dans le xml avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <field name="listes" type="list" default="1" label="Affichage liste" description="Affiche le module en format liste"> 
         <option value="affichage1">Yes</option> 
         <option value="affichage2">No</option> 
    </field>​
    le premier affichage se fait avec le /tmpl/default.php
    le second affichage doit se faire dans /tmpl/default2.php

    mais comment appeler ce second fichier, lorsque j'ai choisi le paramètre affichage 2

    merci LJ

  2. #2
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 321
    Points : 642
    Points
    642
    Par défaut
    Bonjour,

    Les fichiers tmpl/default.php et tmpl/default2.php sont appelés des layouts dans Joomla.

    Lorsque tu crées une instance de ton module dans l'administration Joomla (Contenu -> Modules 'Site' -> Nouveau), tu peux choisir le layout utilisé par le module via le champ Type de mise en page de l'onglet Avancé.

    Une solution simple est donc de créer 2 instances de ton module dans l'administration avec chacun leur layout et leur propre titre.
    Puis il suffit d'indiquer le titre du module en 2ème paramètre de loadmodule après le type de module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    {loadmodule mon_super_module, titre1}
    {loadmodule mon_super_module, titre2}

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    merci, cela je le comprend bien
    ce qu'il me faut en sus c'est ce que que je dois écrire dans le fichier mod_monsupermodule.php pour qu'il dirige vers l'affichage 2?
    au passage j'utilise LJ

  4. #4
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 321
    Points : 642
    Points
    642
    Par défaut
    Tu peux récupérer le layout sélectionné dans les paramètres du module $layout = $params->get('layout', 'default'); puis l'utiliser dans la méthode ModuleHelper::getLayoutPath.

    Exemple pour mod_login : https://github.com/joomla/joomla-cms.../mod_login.php

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    merci
    j'ai renommé dans mon xml, lorsque je le change il s'enregistre bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	<field name="layout" type="list" default="" label="Affichage liste" description="Affiche le module en format liste">
    		<option value="1">1</option>
    		<option value="2">2</option>
    	</field>
    mon mod_module.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    //defined('_JEXEC') or die;
     
    use Joomla\CMS\Helper\ModuleHelper;
    use Joomla\Module\Tasawaq\Site\Helper\TasawaqHelper;
     
    $document = JFactory::getDocument();
    $document->addScript('/modules/mod_tasawaq/tmpl/script.js'); 
     
    $test = TasawaqHelper::getText();
    $layout = $params->get('layout', 'default');
     
    if ($layout=2) {
        $layout .= '_2';
    }
     
    require ModuleHelper::getLayoutPath('mod_tasawaq', $layout);
    j'ai renommé le second layout default_2, mais a prioir aps de changement !?
    j'ai sans doute manqué un truc !

    LJ

  6. #6
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 321
    Points : 642
    Points
    642
    Par défaut
    Ton champ xml est inutile puisque le paramètre pour définir le layout est déjà intégré pour tous les modules (champ Type de mise en page dans l'onglet Avancé).
    Tu dois créer 2 instances de ton module dans l'admin avec chacun leur propre layout sélectionné dans le champ Type de mise en page.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    tu parles donc de cela que j'ai du intégrer car il n'y été pas
    du coup je vois bien le paramètre avancé, mais un seul choix possible !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    			<fieldset name="advanced">
    				<field
    					name="layout"
    					type="modulelayout"
    					label="JFIELD_ALT_LAYOUT_LABEL"
    					class="form-select"
    					validate="moduleLayout"
    				/>
    			</fieldset>
    	</fields>

  8. #8
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 321
    Points : 642
    Points
    642
    Par défaut
    C'est bien ce champ, il faut bien l'inclure dans ton xml si il n'est pas intégré automatiquement par le CMS (erreur de ma part, je n'ai plus utilisé Joomla depuis un moment).
    Du coup essaye de renommer ton 2ème layout default2.php ou autrechose.php. Le layout default_2.php (avec _) est considéré comme un sous-layout de default.php

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    oui cela fonctionne avec default2
    merci LJ

    dans ma base de données j'ai un champ catégorie, est-il possible dans le code {loadmodule} de lui indiquer une de ces catégories pour qu'il n'affiche que cette dernière ?

  10. #10
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 321
    Points : 642
    Points
    642
    Par défaut
    Si il s'agit des catégories des articles Joomla, tu peux ajouter un field de type category dans ton xml, sinon un field de type sql ou créer ton propre type field.
    https://docs.joomla.org/Standard_form_field_types

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    merci je vais tester le field de type sql
    LJ

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'affichage dans Word (mode page)
    Par Nanaruto dans le forum Word
    Réponses: 5
    Dernier message: 09/04/2018, 09h14
  2. [Joomla!] Affichage dans module Joomla
    Par lightalex01 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 16/05/2013, 11h07
  3. Réponses: 1
    Dernier message: 06/04/2012, 04h58
  4. comment faire aparaitre un module joomla dans une page statique
    Par Nadjia.ccce dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 31/05/2007, 19h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo