création d'un plugin

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • création d'un plugin

    Bonjour
    Bon je crois que je ne vais pas avoir d'autres solutions pour résoudre différents problèmes non résolus que de me mettre à la création d'un plugin.
    Celà n'a pas l'air très difficile , néanmoins je n'ai pas vu beaucoup d'exemples pour démarrer. J'ai vu
    https://docs.joomla.org/J4.x:Creatin..._for_Joomla/fr mais i la déjà une orientation de recherche
    https://docs4.regularlabs.com/whatno...d/introduction le plugin que ne fait rien mais qui a quand même différentes options

    Je voudrai faire un plugin qui agisse à la sauvegarde de la création (ou modification) d'un article pour transférer des valeurs d'une dizaine champs personnalisés ... ailleurs
    Pour débuter, est-ce que quelqu'un pourrait me fournir le plugin (system ?) le plus basique qui soit , avec la détection de l'événement et la syntaxe de transfert de quelques champs
    Voici quelques besoins pour différentes situations

    a) subform tags => tags j!
    J'ai un champ personnalisé subform (j!) qui me permet d'obliger à saisir au moins 1 tag jusqu'à 9. Les transférer dans le champ tag de l'article joomla

    b) champ personnalisé calendar (j!) => le champ "Date de création" de joomla

    c) champ personnalisé image (j!) => image de contenu dans le répertoire de la catégorie de l'article
    transfert de l'image stocké dans un champ personnalisé vers le répertoire de contenu. Plus complexe car cela nécessitera ensuite de d'insérer la balise img dans le contenu de l'article puis supprimer l'image stocké dans le champ personnalisé

    c) accès correspondant au catégorie de l'article => champ accès j! (onglet publication)
    Un membre fait parti d'un groupe qui n'a le droit de voir que les articles liés a son groupe

    @+
    Faciliter l'adoption du meilleur du Libre auprès du grand public https://clibre.eu/ - Connaissez-vous des communicants ... pour promouvoir joomla ? https://forum.joomla.fr/forum/th%C3%...mouvoir-joomla

  • #2
    Bonjour Hervé,
    Personnellement, je ne me casserai pas la tête à créer un plugin (même si cela reste possible) mais m'orienterai plus simplement vers Flexicontent qui te permet de jongler avec tes champs plus simplement.

    Mais peut-être que d'autres ont des solutions différentes

    Sinon, pour le plugin, tu auras également besoin des "événements" : https://docs.joomla.org/Plugin/Events
    Cela correspond à l'action qui va déclencher ou qui va conditionner l'action du plugin.
    Et enfin, tu auras la doc complète (en anglais, je ne sais pas si elle est dispo en français) pour la création d'un plugin ici : https://docs.joomla.org/Category:Plugin_Development

    Bien cordialement,
    Chabi01 - http://www.xlformation.com

    Commentaire


    • #3
      Bonsoir
      Merci pour ta contribution
      Je tiens à rester le plus près possible de joomla sans apprendre et utiliser une autre extension d'autant que je commence a bien gérer les champs personnalisés de joomla.
      Je bute "juste" sur ces limites pour quelques champs !
      Je n'y vais pas de gaieté de cœur car ce n'est plus mon domaine et je fais cela bénévolement pour des sites communautaires associatifs , clibre.eu
      Comme cela je ne vois toujours pas comment commencer, j'ai bien vu le lien que tu mentionnes qui englobe celui que j'ai cité mais il me manque
      1. un squelette de plugin (système? je ne sais pas si cela correspond à ce que je souhaite ? et si cela impose un codage particulier ?)
      2. au moins 1 ou 2 exemples de transfert de contenu à la sauvegarde de l'article
      Pour le 1/, je n'en ai pas trouvé (comme j'avai testé il y a longtemps la création d'un module sous joomla 3). Celui dans l'aide joomla est déjà orienté et quand je regarde le code du plugin "qui ne fait rien", il est déjà un peu compliqué avec des paquets j3, j4, langues et affichage de paramètre dans le plugin. J'aurai besoin de plus simple
      De manière générale, peut-être qu'il est trop tôt mais je n'ai pas vu du tutoriel pour explique tout cela et finaliser avec un événement qui montre que le plugin fonctionne !
      Faciliter l'adoption du meilleur du Libre auprès du grand public https://clibre.eu/ - Connaissez-vous des communicants ... pour promouvoir joomla ? https://forum.joomla.fr/forum/th%C3%...mouvoir-joomla

      Commentaire


      • #4
        si tu t'intéresses au plugin, un must : https://github.com/yireo-joomla/JoomlaPluginsBook
        c'est le bouquin de Jisse Reitsma, avec plein d'exemples prêts à l'emploi
        le livre peut être téléchargé gratuitement en PDF sur le lien que je donne (cherche "pdf" sur la page si tu ne le vois pas tout de suite)
        chabi01 et herve aiment ceci.
        Présentations : slides.woluweb.be | Coordonnées complètes : www.woluweb.be

        Un message d’erreur sur votre site Joomla... ayez le reflexe de consulter la base de connaissance : https://kb.joomla.fr

        Ce forum, vous l'aimez ? Il vous a sauvé la vie ? Vous y apprenez régulièrement ? Alors adhérer à l'AFUJ, l'Association Francophone des Utilisateurs de Joomla : https://www.joomla.fr/association/adherer

        Commentaire


        • #5
          Wooo ! Je ne connaissais pas ce bouquin ! MERCI !!!!!
          Chabi01 - http://www.xlformation.com

          Commentaire


          • #6
            Envoyé par chabi01 Voir le message
            Wooo ! Je ne connaissais pas ce bouquin ! MERCI !!!!!
            Salut Xavier !

            Note bien que ce livre date de 2014... Depuis lors pas mal de changements dont J4...
            herve aime ceci.
            Christophe (cavo789)
            Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
            Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

            Commentaire


            • #7
              tssss, mauvaise langue cavo789
              pour 3.X, il est toujours valable

              Pour 4.X, il y a sûrement des changement (comme la façon de charger JS, CSS avec le Asset Manager), mais la logique reste
              Présentations : slides.woluweb.be | Coordonnées complètes : www.woluweb.be

              Un message d’erreur sur votre site Joomla... ayez le reflexe de consulter la base de connaissance : https://kb.joomla.fr

              Ce forum, vous l'aimez ? Il vous a sauvé la vie ? Vous y apprenez régulièrement ? Alors adhérer à l'AFUJ, l'Association Francophone des Utilisateurs de Joomla : https://www.joomla.fr/association/adherer

              Commentaire


              • #8
                J'alertais sur J4 justement ;-)
                Christophe (cavo789)
                Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
                Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

                Commentaire


                • #9
                  Bonjour
                  Effectivement je n'avais pas vu en commençant à le regarder la date. Je pense qu'il est effectivement adapté à un dev qui fera la part des choses et l'adaptera mais pas à moi. Je ne le sens pas, cela représente des risques. car dans les lectures rapides j'ai vu des problèmes signalés sur des dev fais avec joomla 3
                  Il y a un livre plus récent (et même pas cher) https://www.amazon.com/dp/B09F27HFFG Dommage que je ne peux pas ajouter aux difficultés techniques des difficultés de traduction.

                  J'espère qu' un dev, voudra bien communiquer ici le plugin minimal (mais sécurisé) avec un exemple (factice si mon transfert de données est déjà compliqué) d'action suite à un événement.
                  Pour débuter je ne sais même pas quel type de plugin ? à priori system? et comment comment le définir pour cela ?
                  Et l'événement il me semble que c'est https://docs.joomla.org/Plugin/Event...ntentAfterSave ? car la valeur doit quand même resté stocké dans le champ personnalisé ?
                  Faciliter l'adoption du meilleur du Libre auprès du grand public https://clibre.eu/ - Connaissez-vous des communicants ... pour promouvoir joomla ? https://forum.joomla.fr/forum/th%C3%...mouvoir-joomla

                  Commentaire


                  • #10
                    Envoyé par herve Voir le message
                    Comme cela je ne vois toujours pas comment commencer, j'ai bien vu le lien que tu mentionnes qui englobe celui que j'ai cité mais il me manque[LIST=1][*]un squelette de plugin (système? je ne sais pas si cela correspond à ce que je souhaite ? et si cela impose un codage particulier ?)
                    De manière générale, peut-être qu'il est trop tôt mais je n'ai pas vu du tutoriel pour explique tout cela et finaliser avec un événement qui montre que le plugin fonctionne !
                    ok tu donne déjà les bons liens.

                    J'ai également aussi des exemples et des techniques mais je ne fais que reprendre les ressources officielles... je m'explique :

                    tout comme Astrid (l'auteur du livre sur amazon),
                    Elle met également à disposition la documentation en ligne (en anglais : https://blog.astrid-guenther.de/en/joomla-plugins/ ).
                    Sur la page plugin, elle fait le lien à chaque fois avec la documentation officielle et explique très bien sous joomla4.
                    Pour le reste, c'est plutôt sympa de partager cela : https://blog.astrid-guenther.de/en/d...erweiterungen/

                    De mon point de vue, la 1ere ressource, c'est en réalité le cms Joomla4 en lui-même car chaque élément, plugin, composant, modules, templates sont des exemples enrichissants.
                    Après, les débuts sont toujours difficiles mais on commence par de petites choses pour comprendre et partager, puis on se lance dans des projets plus ambitieux...

                    Sur le compte github officiel de joomla, tu as des exemples (boilerplate) de type de plugin :
                    https://github.com/joomla-extensions...ree/master/src
                    C'est ce que j'utilise pour générer l'extension avec un script qui remplace les éléments de base (nom de l'extension, info du développeur, etc... comme expliqué ici :
                    Boilerplate files for Joomla! extensions. Contribute to joomla-extensions/boilerplate development by creating an account on GitHub.

                    L'avantage, c'est que tu as l'indication des evenements dans chaque exemple.

                    Par exemple, si je prends un plugin de contenu : https://github.com/joomla-extensions...ontent/foo.php
                    tu peux retrouver l'évenement qui te permet d'executer du code après que l'utilisateur est enregistré un article ( onContentAfterSave ).
                    La description de cet événement est dans la documentation : https://docs.joomla.org/Plugin/Events/Content

                    Tu as tes "squelettes" !



                    Je vais peut être un peu dur mais je n'irai pas plus loin dans l'accompagnement. Je n'ai pas trop de disponibilités et j'ai profité d'une pause pour répondre de façon complète sur plusieurs discussions. Le but était surtout d'indiquer comment trouver l'information, j'espère avoir été suffisamment clair dans mes explications pour que tu puisse avancer librement dans ton projet.





                    Dernière édition par daneel à 14/07/2022, 18h44
                    herve et woluweb aiment ceci.
                    Joomla User Group (JUG) Lille : https://www.facebook.com/groups/JUGLille/

                    Commentaire


                    • #11
                      Bonjour
                      Merci pour toutes ces informations
                      Je comprends parfaitement ta démarche et bien sûr toi ou tout autre dev' n'a aucune obligation de fournir ou répondre quoi que ce soit ! Tu donnes déjà beaucoup
                      Néanmoins comme tu l'a fais remarquer, c'est le démarrage qui est difficile. J'imagines que si j'arrive au bout de la démarche, je pourrai modifier ce plugin comme je le souhaite, mais j'en suis loin

                      En prenant en compte cela, si pas de disponibilités d’accompagnement de dev' sur ce sujet, je suggère d'ajouter cela dans un joomladay pour la communauté en général car je pense avec du recul que la création ou modification d'un plugin s'avère presque aussi indispensable que la surcharge d'article.

                      J'apprécie qu'Astrid a mis un lien, j'espère qu'elle en aura les retours financiers directs ou indirects. Je n'y ai pas vu le démarrage étape par étape pour la création d'un plugin mais cela me servira certainement. Bien sûr que la documentation officielle est fondamentale. J'avai mis les liens trouvés dans mes précédents messages mais cela n'aide pas à mon avis pour démarrer ... de rien.

                      J'ai pris le temps ce matin de regarder les liens. Je me permets de repréciser les questions qui sont bloquantes pour moi avant de continuer, sans un exemple plus proche, en espérant votre compréhension.
                      Questions peut-être un peu bête mais il y a tellement de possibilité que j'aimerai ne pas trop galérer, ni m'arrêter. Une réponse même courte à chacune de ces questions m'aiderait;

                      1/ Sans remarque de votre part, est-ce que je dois en conclure que c'est bien la création d'un plugin system avec l'utilisation de l’événement onContentAfterSave ? qui permettra d'avoir le résultat escompté de transférer du contenu de champs personnalisé dans d'autres champs joomla à la modification ou création d'un article joomla ?
                      Ou est-ce qu'il n'est pas possible en l'état de le dire ? Cela parait peut-être bête, mais c'est ma question fondamentale ?

                      Ensuite j'apprécie aussi beaucoup le lien de roland que je ne connaissais pas. Néanmoins il a été crée il y a 3 ans,
                      2/ Est-ce que cela veut dire que c'est 100% compatible joomla 4 ? ou dois-je être vigilant par rapport au code fourni ?

                      Si je pars de l'hypothèse que c'est bien un plugin system que je dois développer, https://github.com/joomla-extensions...plugins/system , je ne peux télécharger ce plugin de démo ! J'ai un message "Uploads are disabled." alors que j'ai un compte
                      3/ est-ce normal ? Si je n'ai pas le choix , est-ce que je dois télécharger chaque fichier et les mettre dans un zip pour le télécharger ?
                      Dernière édition par herve à 15/07/2022, 13h07
                      Faciliter l'adoption du meilleur du Libre auprès du grand public https://clibre.eu/ - Connaissez-vous des communicants ... pour promouvoir joomla ? https://forum.joomla.fr/forum/th%C3%...mouvoir-joomla

                      Commentaire


                      • #12
                        Il faut savoir à quel moment tu veux executer ton code. Je t'ai indiqué dans un exemple des évenements de contenu comme onContentAfterSave executés dans un plugin de contenu.

                        Voici la liste de type de plugin que j'ai déjà indiqué :
                        https://github.com/joomla-extensions...master/plugins

                        C'est ce que tu retrouve également dans le repertoire plugins de ton site joomla. Quand je te dis que le cms est une source précieuse pour comprendre !

                        Dans ces repertoires sur github, tu choisi "content" pour contenu, tu as la structure générique à respecter avec au minima le fichier php (foo.php) et le manifeste xml ( foo.xml ).

                        Le fichier script.php est utilisé pour des évenements à l'installation ou à la désinstallation de l'archive. On s'en sert par exemple pour installer la structure d'une table de données, activer automatiquement le plugin...
                        https://github.com/joomla-extensions...lugins/content

                        en editant foo.php (clique dessus), tu vois bien que la fonction onContentAfterSave est indiqué en exemple.

                        Donc tu peux commencer par un plugin de contenu pour intervenir à l'enregistrement d'un nouvel article ou à la sauvegarde des modifications de l'article avec l'evenement onContentAfterSave



                        L' événement onContentBeforeSave est généralement utilisé pour modifier les données qui sont sur le point d'être enregistrées dans la base de données ou pour faire quelque chose juste avant que les données ne soient enregistrées.

                        L' événement onContentAfterSave est utilisé pour faire quelque chose après l'enregistrement des données, par exemple, rediriger vers une page spécifique ou effectuer une ou plusieurs activités de base de données. Perso, je l'utilise pour diffuser l'article sur d'autres supports (notification smartphone, sur les reseaux sociaux).

                        dans :
                        https://github.com/joomla-extensions...ontent/foo.php

                        Entre les accolades, tu insère ton code.

                        Si tu hésite encore... voici une méthode créé spécialement pour toi !



                        1. Il suffit simplement de prendre les fichiers
                        https://github.com/joomla-extensions...lugins/content
                        de créer l'archive zip et d'utiliser l'installateur de ton site

                        Avec downgit, tu peux cliquer sur le lien ci-dessous qui va créer l'archive zip pour toi ( une astuce que j'utilise pour générer dynamiquement une archive depuis github ! ) :
                        Télécharger l'archive

                        2. Une fois que tu l'as installé (je pense que tu peux te débrouiller pour cela !), tu peux éditer le plugin qui s'appelera [PROJECT_NAME] vu que tu l'as pas personnalisé... tu as une valeur d'exemple dans les paramètres ( 42 ! ) qui correspond à ce qui est défini dans le fichier xm en exemple.

                        Pourquoi 42 ?
                        On le sait très bien avec la grande question sur la vie, l'univers et le reste !




                        3. Si tu teste l'enregistrement ou la modification d'un article, il ne se passer rien vu que tu n'as pas inséré de code mais tu t'assure au moins qu'il n'y a pas d'erreurs une fois le plugin activé. Ouf ! Pas d'erreurs, on continue !

                        4. Donc passons aux choses sérieuses vu que le plugin est installé sans erreurs.
                        Edite le fichier foo.php installé dans le repertoire de ton site
                        ..\plugins\content\foo

                        Utilise un ide (tu dois en connaître dans les logiciels libres) ou au pire notepad++ (oui c'est pas top mais on devrait tous avoir un bon editeur sous la main).

                        Insère entre { et } de l'évenement onContentAfterSave, un code pour afficher un message d'alerte... par exemple

                        Code PHP:

                        $msgherve 
                        'MON PREMIER EVENEMENT FONCTIONNE EUREKA !!';
                        JFactory::getApplication()->enqueueMessage($msgherve); 
                        ce qui donne :

                        Code PHP:

                        public function onContentAfterSave($context$article$isNew)
                        {
                        $msgherve 'MON PREMIER EVENEMENT FONCTIONNE EUREKA !!';
                        JFactory::getApplication()->enqueueMessage($msgherve);

                        Sauvegarde les modifications et teste en modifiant un article....
                        et là ... suspense insoutenable...hoooo ! bravo c'est ton premier plugin qui a produit son premier effet !

                        A noter que cela se produit quand tu créé ou modifie un contenu, cela fonctionne par exemple quand tu modifie un article mais également une catégorie... pour éviter cela, on récupère la valeur $context et on appliquera quand ce sera uniquement l'édition d'article en backend ou en front. Il y a aussi d'autres astuces mais évitons de s'embrouiller la tête.

                        Sortons les boissons fraîches (vu la chaleur de ce jour) et prenons le temps de savourer cette victoire !!

                        On ne s'emballe pas ! J'ai fait vite et on est loin de tes attentes.
                        Tu dois personnaliser les fichiers, le manifeste.

                        Donc copier les fichiers ou décompresser l'archive localement, editer et renommer chaque fichiers... pour archiver ton plugin et le tester mais avec son propre nom. Prends exemple sur ce qui existe et surtout prends le temps de comprendre. Comme je t'ai indiqué, ce serait trop long à te former en php ou à te guider pas à pas, c'est juste un exemple fonctionnel !
                        Dernière édition par daneel à 15/07/2022, 16h43
                        herve aime ceci.
                        Joomla User Group (JUG) Lille : https://www.facebook.com/groups/JUGLille/

                        Commentaire


                        • #13
                          Bonsoir
                          Ben tu sais ... en suivant ce tuto très détaillé (je savais quand même édité un fichier php sur le site ), j'y suis arrivé du 1er coup.
                          Mille merci et aussi pour les réponses indirectes que tout cela fonctionne bien sous joomla 4 et que c'est plutôt un plugin de contenu (j'avais discuté avec qq qui préférait travailler avec un plugin system (mais je dois certainement avoir mal compris le contexte).
                          En tout les cas, je pars en week end tranquille et heureux même si je ne suis pas au bout du travail.
                          La suite la semaine prochaine.
                          Faciliter l'adoption du meilleur du Libre auprès du grand public https://clibre.eu/ - Connaissez-vous des communicants ... pour promouvoir joomla ? https://forum.joomla.fr/forum/th%C3%...mouvoir-joomla

                          Commentaire

                          Annonce

                          Réduire
                          Aucune annonce pour le moment.

                          Partenaire de l'association

                          Réduire

                          Hébergeur Web PlanetHoster
                          Travaille ...
                          X