+ Répondre à la discussion
Page 1 sur 5 1 2 3 ... DernièreDernière
Affichage des résultats 1 à 10 sur 48

Discussion: Créer votre propre composant joomla!

  1. #1
    Membre régulier Avatar de to__
    Date d'inscription
    février 2006
    Localisation
    Paris
    Messages
    237
    Remerciements
    0
    Remercié 3 fois dans 1 message

    Par défaut Créez 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 attachés
    Dernière modification par to__ ; 09/05/2006 à 00h09.

  2. #2
    Bidouilleur ! Avatar de papounet
    Date d'inscription
    mars 2005
    Localisation
    En bas du Mont-Blanc
    Messages
    8 066
    Remerciements
    12
    Remercié 46 fois dans 46 messages

    Par défaut Tu causes le EN supoer bien !

    Ah! C'est bien ça.
    Nouvelle version de Mov'AMP Joomla! disponibles avec Joomla!1.5.20 dedans : http://www.joomladraft.com/
    Tutoriel concevoir son template : http://www.joomladraft.org/
    Annuaire de sites web sous joomla et de ressources utiles pour Joomla! : http://www.joomladraft.net/

  3. #3
    Membre régulier Avatar de to__
    Date d'inscription
    février 2006
    Localisation
    Paris
    Messages
    237
    Remerciements
    0
    Remercié 3 fois dans 1 message

    Par défaut

    merci papounet,

    Ce n'est qu'un d&#233;but. Je vais vraiment essayer de l'&#233;tayer et d'en faire un document de r&#233;f&#233;rence, qui fait d&#233;faut &#224; la communaut&#233; fran&#231;aise: ce sera une exclu joomla!fr que le monde, que dis-je, l'univers tout entier nous enviera(par contre, j'vais &#234;tre marron quand joomla!1.5 sortira, car il ne sera plus valide mon tuto :/). N'h&#233;sitez pas &#224; apporter votre pierre &#224; l'&#233;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&#233;s &#224; 10 000 caract&#232;res et j'en suis pas loin :/

    &#224; bient&#244;t

    to

    PS: mais pkoi je parle vachement bien l'EN?
    Dernière modification par to__ ; 07/05/2006 à 01h21.

  4. #4
    Membre régulier
    Avatar de paimages
    Date d'inscription
    mars 2005
    Localisation
    Vufflens-la-Ville, un petit village Suisse
    Messages
    1 968
    Remerciements
    10
    Remercié 10 fois dans 6 messages

    Par défaut

    merci pour ton travail. &#231;a va bien aid&#233; les concepteurs d&#233;butants de composant.
    Bonne journ&#233;e
    PA
    JMonitoring la solution pour surveiller vos sites joomla : http://www.inetis.ch/joomla/jmonitoring.html

    http://www.inetis.ch :Création et intégration professionelles sous Joomla

  5. #5
    Membre régulier
    Date d'inscription
    mars 2005
    Messages
    3 647
    Remerciements
    3
    Remercié 2 fois dans 2 messages

    Par défaut

    Salut To__

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

    @plus
    j!lm

  6. #6
    Admin Avatar de Yeti
    Date d'inscription
    février 2005
    Localisation
    Chartres (28)
    Messages
    773
    Remerciements
    0
    Remercié 0 fois dans 0 messages

    Par défaut

    Hey!!

    Mais dit moi c'est excelent tout &#231;a !

    Tu pourrais bosser directement l&#224; :
    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.joomla.fr : news, téléchargements, tutoriels, FAQ, traduction, documentation
    http://www.kadokado.com : Il faut jouer pour être sérieux....
    http://www.saba50.org : Un peu de sport ça ne fait pas de mal !

  7. #7
    Membre régulier Avatar de to__
    Date d'inscription
    février 2006
    Localisation
    Paris
    Messages
    237
    Remerciements
    0
    Remercié 3 fois dans 1 message

    Par défaut

    ah ben voil&#224; oui, un wiki, ca sera plus simple ...

    Mais comment fait-on pour cr&#233;er un nouvel article?
    Dernière modification par to__ ; 08/05/2006 à 20h44.
    Antoine Bernier(to) - design et développement web

  8. #8
    Admin Avatar de Yeti
    Date d'inscription
    février 2005
    Localisation
    Chartres (28)
    Messages
    773
    Remerciements
    0
    Remercié 0 fois dans 0 messages

    Par défaut

    Peut-&#234;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&#234;t !
    Pas de demande de support en MP ou par mail, le forum est là pour ça!
    http://www.joomla.fr : news, téléchargements, tutoriels, FAQ, traduction, documentation
    http://www.kadokado.com : Il faut jouer pour être sérieux....
    http://www.saba50.org : Un peu de sport ça ne fait pas de mal !

  9. #9
    Membre régulier Avatar de globule
    Date d'inscription
    août 2005
    Localisation
    Provence
    Messages
    1 872
    Remerciements
    0
    Remercié 2 fois dans 2 messages

    Thumbs up


    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 modification par globule ; 07/11/2006 à 16h15.
    Que la forge soit avec vous.

  10. #10
    Membre régulier Avatar de to__
    Date d'inscription
    février 2006
    Localisation
    Paris
    Messages
    237
    Remerciements
    0
    Remercié 3 fois dans 1 message

    Par défaut [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
    Miniatures attachées Miniatures attachées Cliquez sur l'image pour la voir en taille réelle

Nom : MonComposant.png
Affichages : 2333
Taille : 27,6 Ko
ID : 1192  
    Dernière modification par to__ ; 10/05/2006 à 00h24.
    Antoine Bernier(to) - design et développement web

+ Répondre à la discussion
Page 1 sur 5 1 2 3 ... DernièreDernière

Discussions similaires

  1. Comment créer un composant ?
    Par McGyver dans le forum Questions générales
    Réponses: 3
    Dernier message: 06/06/2006, 14h39

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages