Créer votre propre composant joomla!

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

  • Créer votre propre composant joomla!

    bonjour,

    Afin d'apprendre à écrire un composant, j'ai décidé d'en faire un tutorial. Je vous le livre donc dans sa première version, élaborée à partir du helloWorld officiel, entièrement commenté, adapté et traduit dans la langue de molière!

    Ses fonctionnalités sont pour l'instant rudimentaires(back-end uniquement!), mais l'exemple se veut avant tout formateur.

    en voici la structure:

    administrator
    | |-- components
    | | |-- com_moncomposant
    | | | |-- admin.moncomposant.php
    | | | | |-- admin.moncomposant.html.php
    | | | | | |-- tmpl/
    | | | | | | |-- bienvenue.html
    | | | | | | |-- bienvenue2.html
    | | | |-- toolbar.moncomposant.php
    | | | | |-- toolbar.moncomposant.html.php
    | | | | | |-- help/
    | | | | | | |-- moncomposant.html


    avec:

    admin.moncomposant.php
    Code PHP:
    <?php
    /**
    * @version 1.0.x
    * @package MonComposant
    * @copyright (C) 2006 to
    * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
    */
     
    /** interdiction d'accéder à ce script sans qu'il soit inclus par un script parent **/
    defined'_VALID_MOS' ) or
        die( 
    'Direct Access to this location is not allowed.' );
     
    // on inclut le fichier 'admin.hello.html.php':
    require_once( $mainframe->getPath'admin_html' ) ); //par convention, il est représenté par 'admin_html'
     
    // récupération de la tâche à effectuer:
    $task mosGetParam$_REQUEST'task''' );

    //on switch sur la tâche:
    switch ($task) {
        default:
            
    MonComposant::Bienvenue();
            break;
        case 
    'bienvenue2':
            global 
    $my;
            
    MonComposant::Bienvenue2$my->username );
            break;
    }
    ?>
    admin.moncomposant.html.php
    Code PHP:
    <?php
    /**
    * @version 1.0.x
    * @package MonComposant
    * @copyright (C) 2006 to
    * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
    */
     
    /** interdiction d'accéder à ce script sans qu'il soit inclus par un script parent **/
    defined'_VALID_MOS' ) or
        die( 
    'Direct Access to this location is not allowed.' );
     
    /**
     * @package  MonComposant
     */
    class MonComposant {
        
    /**
        * Méthode statique définissant un objet template
        * @return patTemplate
        */
        
    function &createTemplate() {
            global 
    $option$mosConfig_absolute_path;
            
            
    // on inclut la librairie pour les templates:
            
    require_once( $mosConfig_absolute_path '/includes/patTemplate/patTemplate.php' );
     
            
    $tmpl =& patFactory::createTemplate$optiontruefalse );
            
    $tmpl->setRootdirname__FILE__ ) . '/tmpl' );
     
            return 
    $tmpl;
        }
        
    /**
        * Message de bienvenue simple
        */
        
    function Bienvenue() {
        
            
    //création de l'objet template:
            
    $tmpl =& MonComposant::createTemplate();
            
            
    // Remplit le corps(<body>)de la page avec le fichier source 'tmpl/bienvenue.html':
            
    $tmpl->setAttribute'body''src''bienvenue.html' );
            
            
    // Affiche:
            
    $tmpl->displayParsedTemplate'form' );
        }
        
    /**
        * Message de bienvenue sophistiqué
        * @param string L'identifiant de la personne
        */
        
    function Bienvenue2$name ) {
            
            
    //création de l'objet template:
            
    $tmpl =& MonComposant::createTemplate();
            
            
    // Remplit le corps(<body>)de la page avec le fichier source 'tmpl/bienvenue2.html':
            
    $tmpl->setAttribute'body''src''bienvenue2.html' );
            
            
    // Assigne la balise {NAME} du template(cf. 'tmpl/bienvenue2.html') à la valeur $name, transmise en paramètre
            
    $tmpl->addVar'body''name'$name );
            
            
    // Affiche:
            
    $tmpl->displayParsedTemplate'form' );
        }
    }
    ?>
    tmpl/bienvenue.html
    Code HTML:
    <mos:comment>
    @version 1.0.x
    @package MonComposant
    @copyright Copyright (C) 2006 to
    @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
    </mos:comment>
    
    <h1>Bienvenue sur MonComposant!</h1>
    
    <input type="hidden" name="option" value="{OPTION}" />
    <input type="hidden" name="task" value="" />
    tmpl/bienvenue2.html
    Code HTML:
    <mos:comment>
    @version 1.0.x
    @package MonComposant
    @copyright (C) 2006 to
    @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
    </mos:comment>
     
    <h1>Bienvenue2 sur MonComposant!</h1>
     
    Bienvenue, <strong>{NAME}</strong>, sur MonComposant!
     
    <input type="hidden" name="option" value="{OPTION}" />
    <input type="hidden" name="task" value="" />
    toolbar.moncomposant.php
    Code PHP:
    <?php
    /**
    * @version $Id: toolbar.languages.php,v 1.4 2005/01/06 01:13:18 eddieajau Exp $
    * @package  MonComposant
    * @subpackage Languages
    * @copyright Copyright (C) 2006 to
    * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
    */
     
    /** interdiction d'accéder à ce script sans qu'il soit inclus par un script parent **/
    defined'_VALID_MOS' ) or
        die( 
    'Direct Access to this location is not allowed.' );
     
    // on inclut le fichier 'toolbar.moncomposant.html.php':
    require_once( $mainframe->getPath'toolbar_html' ) ); //par convention, il est représenté par 'toolbar_html'
     
    // récupération de la tâche à effectuer:
    $task mosGetParam$_REQUEST'task''' );
     
    switch (
    $task) {
        default:
            
    MonComposantToolbar::BarreDeMenu();
            break;
    }
    ?>
    toolbar.moncomposant.html.php
    Code PHP:
    <?php
    /**
    * @version 1.0.x
    * @package MonComposant
    * @copyright Copyright (C) 2006 to
    * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
    */
     
    /** interdiction d'accéder à ce script sans qu'il soit inclus par un script parent **/
    defined'_VALID_MOS' ) or
        die( 
    'Direct Access to this location is not allowed.' );
     
    /**
    * @package MonComposant
    */
    class  MonComposantToolbar {
        
    /**
        * Affiche la barre de menu
        */
        
    function BarreDeMenu(){
            
    mosMenuBar::startTable();
            
    // bouton de la page d'accueil de MonComposant
            
    mosMenuBar::apply'''Accueil' );
            
    mosMenuBar::spacer();
            
    //bouton de bienvenue2
            
    mosMenuBar::apply'bienvenue2''bienvenue2!' );
            
    mosMenuBar::spacer();
            
    //bouton d'aide de MonComposant
            
    mosMenuBar::help'moncomposant.html'true );
            
    mosMenuBar::endTable();
        }
    }
    ?>
    help/moncomposant.html
    Code HTML:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//FR"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="fr_FR" xml:lang="fr_FR">
    <head>
    <Title>Aide de MonComposant</title>
    <link href="../../../../help/css/help.css" rel="stylesheet" type="text/css" />
    <meta name="copyright" content="(C) 2006 to" />
    <meta name="license" content="http://www.gnu.org/copyleft/gpl.html GNU/GPL" />
    </head>
    <body>
     
    <h1>Bienvenue sur l'aide de MonComposant!</h1>
     
    Voici l'aide de MonComposant!
     
    </body>
    </html>
    et le petit script moncomposant.xml qui va avec
    Code HTML:
    <mosinstall type="component">
        <name>MonComposant</name>
        <creationDate>$Id: moncomposant.xml 15 2006-05-60 18:03:00Z  $</creationDate>
        <author>to</author>
        <copyright>(C) 20006 to</copyright>
        <authorEmail>antoine.bernier@gmail.com</authorEmail>
        <authorUrl>http://forum.joomla.fr/member.php?u=2579</authorUrl>
        <version>1.0.x</version>
        <description>Ceci est un tutoriel minimal pour la création d'un composant</description>
        <files>
        </files>
        <images>
        </images>
        <install>
        </install>
        <administration>
            <menu act="">MonComposant</menu>
            <files>
                 <filename>admin.moncomposant.php</filename>
                 <filename>admin.moncomposant.html.php</filename>
                     <filename>tmpl/bienvenue.html</filename>
                     <filename>tmpl/bienvenue2.html</filename>
                <filename>toolbar.moncomposant.php</filename>
                 <filename>toolbar.moncomposant.html.php</filename>
                    <filename>help/moncomposant.html</filename>
            </files>
            <images>
            </images>
        </administration>
    </mosinstall>
    Fichiers joints
    Dernière édition par to__ à 09/05/2006, 01h09
    Antoine Bernier(to) - design et développement web

  • #2
    Tu causes le EN supoer bien !

    Ah! C'est bien ça.
    I'am happy for you !
    Dernière réalisation : http://www.pierrickservais.com/

    Commentaire


    • #3
      merci papounet,

      Ce n'est qu'un début. Je vais vraiment essayer de l'étayer et d'en faire un document de référence, qui fait défaut à la communauté française: ce sera une exclu joomla!fr que le monde, que dis-je, l'univers tout entier nous enviera(par contre, j'vais être marron quand joomla!1.5 sortira, car il ne sera plus valide mon tuto :/). N'hésitez pas à apporter votre pierre à l'édifice en me donnant par exemple des liens utiles, ou des conseils...

      J'aurais peut-etre besoin d'un compte 'editor' car les posts sont limités à 10 000 caractères et j'en suis pas loin :/

      à bientôt

      to

      PS: mais pkoi je parle vachement bien l'EN?
      Dernière édition par to__ à 07/05/2006, 02h21
      Antoine Bernier(to) - design et développement web

      Commentaire


      • #4
        merci pour ton travail. ça va bien aidé les concepteurs débutants de composant.
        Bonne journée
        PA
        watchful Contrôle, backup, mise à jour et surveillance de vos sites joomla: http://www.watchful.li
        inetis Création et intégration professionnelles sous Joomla : http://www.inetis.ch

        Commentaire


        • #5
          Salut To__

          Excellent travail que tu nous présentes là ! Merci pour ton investissement personnel pour divulguer tes précieuses connaissances.

          @plus
          j!lm
          http://www.joomlabox.com

          Commentaire


          • #6
            Hey!!

            Mais dit moi c'est excelent tout ça !

            Tu pourrais bosser directement là :
            http://wiki.joomlafacile.com/index.p...veloper_Manual

            Non ?

            @+ et merci
            Pas de demande de support en MP ou par mail, le forum est là pour ça!
            http://www.teclib-edition.com : édition de logiciels libres et open source (GLPi, Kimios, Uhuru, FlyveMDM, Armadito)
            http://www.glpi-project.org : Gestionnaire Libre de Parc Informatique

            Commentaire


            • #7
              ah ben voilà oui, un wiki, ca sera plus simple ...

              Mais comment fait-on pour créer un nouvel article?
              Dernière édition par to__ à 08/05/2006, 21h44
              Antoine Bernier(to) - design et développement web

              Commentaire


              • #8
                Peut-être que cela va t'aider :
                http://fr.wikipedia.org/wiki/Utilisa...Wikip%C3%A9dia

                Mais bon le wiki maintenant que tu es Author sur le site...n'a plus grand interêt !
                Pas de demande de support en MP ou par mail, le forum est là pour ça!
                http://www.teclib-edition.com : édition de logiciels libres et open source (GLPi, Kimios, Uhuru, FlyveMDM, Armadito)
                http://www.glpi-project.org : Gestionnaire Libre de Parc Informatique

                Commentaire


                • #9

                  Ca me rapelle un post qui a disparu suite au crash du forum où j'avais soumis le fichier joint. On m'avait alors répondu que Wene(si mes souvenirs sont bons) avait déjà planché dessus mais je n'ai pas gardé le lien
                  Peut-être qu'à nous trois, on pourrait s'organiser pour pondre un gros tuto?
                  Pour info:
                  1. prenez tous ces fichiers sauf les toolbar*.*
                  2. déplacez les de /administrator/components/com_hello vers /components/com_hello
                  3. renommez les admin*.* en *.* (supprimez les préfixes admin)
                  4. dans hello.php, remplacez :
                    Code:
                    require_once( $mainframe->getPath( 'admin_html' ) );
                    par
                    Code:
                    require_once( $mainframe->getPath( 'front_html' ) );
                  5. créez un menu pour l'appeler
                  6. ... and enjoy! (comme y disent)

                  PS : bien sur, cette procédure ne fonctionne pas avec les fichiers de to__ puisqu'il a pris la peine de changer "hello" par "moncomposant"...
                  encore
                  Dernière édition par globule à 07/11/2006, 17h15
                  Que la forge soit avec vous.

                  Commentaire


                  • #10
                    [en travaux...]

                    hi,

                    Une nouvelle version améliorée du tutoriel ci-dessus est en cours de rédaction sur la rubrique 'support' du site.

                    Il sera bientôt disponible sous 'Guide du développeur > Composants'. Les utilisateurs enregistrés sur le site peuvent d'hors et déjà y accéder et contempler le chantier . Pour les autres il faudra attendre un petit peu...

                    J'apprend au fur et à mesure de sa rédaction, et ça risque donc de mettre un peu de temps, mais je vous promet, un tutoriel clair, propre(php séparé du html, grâce à patTemplate + traduisible) et synthétique.

                    Un petit apercu du composant générique tel qu'il existe aujourd'hui, pour vous mettre l'eau à la bouche.

                    à bientôt

                    to
                    Fichiers joints
                    Dernière édition par to__ à 10/05/2006, 01h24
                    Antoine Bernier(to) - design et développement web

                    Commentaire


                    • #11
                      C'est super !
                      Il faut aboutir les gars !
                      On compte dessus !
                      Papounet
                      PS : A plusieurs vous pouvez faire les 3 x 8 !
                      I'am happy for you !
                      Dernière réalisation : http://www.pierrickservais.com/

                      Commentaire


                      • #12
                        Envoyé par Yeti
                        Hey!!

                        Mais dit moi c'est excelent tout ça !

                        Tu pourrais bosser directement là :
                        http://wiki.joomlafacile.com/index.p...veloper_Manual

                        Non ?

                        @+ et merci
                        Je ne savais pas que c'était dans le wiki...
                        j'ai rattrapé le temps perdu. A vos corrections!
                        Que la forge soit avec vous.

                        Commentaire


                        • #13
                          bonjour,

                          pourriez-vous créer une rubrique spéciale sur le wiki afin que je puisse bosser dessus directement avec tous les avantages du wiki?

                          merci
                          Antoine Bernier(to) - design et développement web

                          Commentaire


                          • #14
                            Projet abandonné: on peut pas faire du propre avec du sale

                            dslé
                            Antoine Bernier(to) - design et développement web

                            Commentaire


                            • #15
                              Projet abandonné ?

                              pourquoi ? C'était sympa ton travail !

                              Quand on est newbies comme moi, c'est tellement important ce genre de tuto ..

                              Commentaire

                              Annonce

                              Réduire
                              1 sur 2 < >

                              C'est [Réglé] et on n'en parle plus ?

                              A quoi ça sert ?
                              La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

                              Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

                              Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
                              Comment ajouter la mention [Réglé] à votre discussion ?
                              1 - Aller sur votre discussion et éditer votre premier message :


                              2 - Cliquer sur la liste déroulante Préfixe.

                              3 - Choisir le préfixe [Réglé].


                              4 - Et voilà… votre discussion est désormais identifiée comme réglée.

                              2 sur 2 < >

                              Assistance au forum - Outil de publication d'infos de votre site

                              Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

                              Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

                              Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

                              UTILISER À VOS PROPRES RISQUES :
                              L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

                              Problèmes connus :
                              FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

                              Installation :

                              1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

                              Archive zip : https://github.com/AFUJ/FPA/zipball/master

                              2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

                              3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

                              4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

                              5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

                              6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
                              et remplacer www. votresite .com par votre nom de domaine


                              Exemples:
                              Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
                              Télécharger le script fpa-fr.php dans: /public_html/
                              Pour executer le script: http://www..com/fpa-fr.php

                              Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
                              Télécharger le script fpa-fr.php dans: /public_html/cms/
                              Pour executer le script: http://www..com/cms/fpa-fr.php

                              En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

                              Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
                              Voir plus
                              Voir moins
                              Travaille ...
                              X