Développer un plugin Joomla
Fermé
legende
-
31 août 2021 à 17:10
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 6 sept. 2021 à 16:52
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 6 sept. 2021 à 16:52
A voir également:
- Développer un plugin Joomla
- Plugin chatgpt - Guide
- Plugin flash - Télécharger - Divers Web & Internet
- Hp dropbox plugin - Forum Logiciels
- Télécharger plugin - Télécharger - PDF
- Excel développer réduire lignes - Forum Excel
3 réponses
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
524
1 sept. 2021 à 18:06
1 sept. 2021 à 18:06
Bonjour,
Avec Joomla, les plugins, modules et composants sont trois types d'extensions bien différentes : https://docs.joomla.org/Extension_types_(general_definitions)/fr
Les plugins permettent d'exécuter du code PHP à des moments précis dans Joomla, via le gestionnaire d'événements.
Les événements Joomla sont propres au CMS et sont déclenchés/interceptés en PHP sur le serveur. C'est donc très différent des événements "onclick", "onfocus", etc... qui sont déclenchés/interceptés en JavaScript dans le navigateur.
Par exemple, l'événement Joomla onUserLogin permet d'exécuter du code lorsqu'un utilisateur se connecte, onAfterRender lorsque la page est affichée, etc...
La liste est longue : https://docs.joomla.org/Plugin/Events
On peut aussi déclencher et intercepter ses propres événements dans les composants/modules/plugins que l'on développe : https://docs.joomla.org/Supporting_plugins_in_your_component
Les plugins et le gestionnaire d'événements sont des fonctionnalités avancées de Joomla, pas l'approche la plus simple pour commencer.
En tant que débutant, le mieux est de commencer par s'intéresser aux modules et aux templates.
Pour répondre à ton besoin, la solution la plus directe est de modifier ou de surcharger le template.
Par exemple pour afficher le lien vip dans le pied de page, on peut modifier directement la base de notre template (fichier templates/monTemplate/index.php) :
-> on récupère l'utilisateur via JFactory, on vérifie que l'utilisateur est connecté (un utilisateur connecté ne peut pas avoir un id égal à 0) et on vérifie que la valeur 14 est dans la liste des groupes affectés à l'utilisateur.
Dans mon exemple, la valeur 14 correspond à l'identifiant du groupe d'utilisateur VIP.
Créer un module serait une meilleure solution : on pourra ainsi profiter des fonctionnalités des modules (choisir à quel position il s'affiche dans le template, choisir sur quelle page le module s'affiche, etc...).
On pourra aussi définir un paramètre de type "usergroup" dans le module pour choisir le groupe d'utilisateur autorisé à voir ce module (il faudra alors utiliser ce paramètre à la place de la valeur 14 inscrite en dur dans mon exemple).
Pour créer un module, tu peux commencer par suivre le guide sur la doc : https://docs.joomla.org/J3.x:Creating_a_simple_module/Introduction/fr
Puis voir les exemples proposés sur cette page : https://docs.joomla.org/Accessing_the_current_user_object
Pour finir, la solution la plus simple est sûrement la moins intéressante en tant que développeur, car elle ne nécessite aucun code : en effet, Joomla possède par défaut un module nommé mod_custom qui permet d'afficher du contenu html et qui utilise un paramètre de type "usergroup", ce module pourrait donc aussi répondre à ton besoin.
Pour cela, il suffit d'aller dans l'administration de Joomla, créer un nouveau module de type Custom, coller le lien html dans l'éditeur puis affecter une position du template à ce module.
Enfin dans le champ Accès, choisir la catégorie autorisée à voir le lien (VIP) puis enregistrer le module : le lien devrait désormais apparaître à la position indiquée uniquement pour utilisateurs VIP.
Avec Joomla, les plugins, modules et composants sont trois types d'extensions bien différentes : https://docs.joomla.org/Extension_types_(general_definitions)/fr
Les plugins permettent d'exécuter du code PHP à des moments précis dans Joomla, via le gestionnaire d'événements.
Les événements Joomla sont propres au CMS et sont déclenchés/interceptés en PHP sur le serveur. C'est donc très différent des événements "onclick", "onfocus", etc... qui sont déclenchés/interceptés en JavaScript dans le navigateur.
Par exemple, l'événement Joomla onUserLogin permet d'exécuter du code lorsqu'un utilisateur se connecte, onAfterRender lorsque la page est affichée, etc...
La liste est longue : https://docs.joomla.org/Plugin/Events
On peut aussi déclencher et intercepter ses propres événements dans les composants/modules/plugins que l'on développe : https://docs.joomla.org/Supporting_plugins_in_your_component
Les plugins et le gestionnaire d'événements sont des fonctionnalités avancées de Joomla, pas l'approche la plus simple pour commencer.
En tant que débutant, le mieux est de commencer par s'intéresser aux modules et aux templates.
Pour répondre à ton besoin, la solution la plus directe est de modifier ou de surcharger le template.
Par exemple pour afficher le lien vip dans le pied de page, on peut modifier directement la base de notre template (fichier templates/monTemplate/index.php) :
<!-- [...] --> <footer class="footer"> <!-- [...] --> <?php $user = JFactory::getUser(); if ($user->id != 0 && in_array(14, $user->getAuthorisedGroups())) { echo '<a href="https://forums.commentcamarche.net">Liens pour VIP !</a>'; } ?> </footer>
-> on récupère l'utilisateur via JFactory, on vérifie que l'utilisateur est connecté (un utilisateur connecté ne peut pas avoir un id égal à 0) et on vérifie que la valeur 14 est dans la liste des groupes affectés à l'utilisateur.
Dans mon exemple, la valeur 14 correspond à l'identifiant du groupe d'utilisateur VIP.
Créer un module serait une meilleure solution : on pourra ainsi profiter des fonctionnalités des modules (choisir à quel position il s'affiche dans le template, choisir sur quelle page le module s'affiche, etc...).
On pourra aussi définir un paramètre de type "usergroup" dans le module pour choisir le groupe d'utilisateur autorisé à voir ce module (il faudra alors utiliser ce paramètre à la place de la valeur 14 inscrite en dur dans mon exemple).
Pour créer un module, tu peux commencer par suivre le guide sur la doc : https://docs.joomla.org/J3.x:Creating_a_simple_module/Introduction/fr
Puis voir les exemples proposés sur cette page : https://docs.joomla.org/Accessing_the_current_user_object
Pour finir, la solution la plus simple est sûrement la moins intéressante en tant que développeur, car elle ne nécessite aucun code : en effet, Joomla possède par défaut un module nommé mod_custom qui permet d'afficher du contenu html et qui utilise un paramètre de type "usergroup", ce module pourrait donc aussi répondre à ton besoin.
Pour cela, il suffit d'aller dans l'administration de Joomla, créer un nouveau module de type Custom, coller le lien html dans l'éditeur puis affecter une position du template à ce module.
Enfin dans le champ Accès, choisir la catégorie autorisée à voir le lien (VIP) puis enregistrer le module : le lien devrait désormais apparaître à la position indiquée uniquement pour utilisateurs VIP.
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
31 août 2021 à 17:21
31 août 2021 à 17:21
Bonjour,
Afficher/masquer un bouton.. c'est du CSS et/ou un IF en PHP dans le template
Le "onclick" .. c'est du Javascript.
Ouverture d'une popup... c'est du Javascript
Afficher/masquer un bouton.. c'est du CSS et/ou un IF en PHP dans le template
Le "onclick" .. c'est du Javascript.
Ouverture d'une popup... c'est du Javascript
6 sept. 2021 à 13:37
6 sept. 2021 à 16:52