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
Bonjour chère communauté, je suis développeur et je fais du code brute en générale. je me suis tout nouvellement familiarisé au CMS Joomla. J'essaie de développer mon propre plugin me basant sur la documentation Joomla fr-en. Et depuis sans succès, je ne m'en sort pas. ça reste assez déroutant pour moi. D'abord, je ne sais pas comment lier les évènements déclencheur à ma vue afin de détecter les actions. Ensuite, l'évènement déclencheur que je recherche est du type onclick par exemple. je ne trouve pas ca parmi les events joomla. Ça fait longtemps que je cherche et sans succès, je ne comprends pas tout seul. Je souhaite faire exactement une fonctionnalité qui rend visible un bouton seulement si vous êtes dans un groupe vip en base de donnée (bouton invisible sinon). et lorsque ce bouton est visible si vous cliquez dessus, cela ouvre un pop-up vers un autre site. Je travaille sous Joomla 3.9.18 et je vous prie de m'aider à atteindre mes objectifs avec du code expliqué au maximum possible svp.

merci!!!
A voir également:

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
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) :
<!-- [...] -->

<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.
1
merci j'ai pu atteindre mon objectif en suivant vos conseils et cela s'est fait avec peu de code. Mais dernière chose, quelle source puis je étudier afin de pouvoir cerner Joomla et devenir et développeur Joomla digne de ce nom. si vous avez une référence à me conseiller.
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524 > legende
6 sept. 2021 à 16:52
La documentation me semble être un bon début : https://docs.joomla.org/Portal:Developers
0
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
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

0
wahhoooo !!!
Vous êtes génial, je vais essayé ça rapidement et vous faire un retour.
déjà merci énormément je sens la piste :)
0