Module magento : création d’un module simple 1/3
novembre 4, 2009 31 CommentairesCréer un module magento peut paraître compliqué. Il faut créer du code un peut partout, mais en y regardant de plus prêt, ça n’est pas si difficile. Nous allons voir dans ce premier tutoriel consacré au module, comment créer un module simple (un controller, une action) qui affichera un texte. Vous devez au préalable avoir lu le tutoriel sur l’introduction au model vu controler MVC.
Déclarer le module à magento : code xml
Déclarer le module à magento : code xml
Les modules sont déclarés dans le dossier magento\app\etc\modules.
Nous allons déclarer ici notre nouveau module en ajoutant un fichier Magentocreation_Module.xml. Au lancement d’un site, magento lit le contenu de ce dossier et initialise tous les modules.
<?xml version="1.0"?> <config> <modules> <Magentocreation_Module> <active>true</active> <codePool>local</codePool> </Magentocreation_Module> </modules> </config>
Une fois déclaré le module est activable et désactivable dans le back-office => système => configuration => avancé=> avancé.

Module désactivable dans le back office de magento
Explication code module
On déclare ici le nouveau module dans la balise modules
On déclare le nom (nameSpace) de l’espace dans lequel le module sera classé « Magentocreation »(par convention on met une majuscule au début)
Le nom du module « Module » et on le rend actif (active true).
Ensuite on déclare dans quel dossier sera rangé le module. Trois dossiers ou l’on peut ranger les modules sont disponibles :
magento\app\code correspond au noyau de magento, c’est dans ce dossier que magento range ses modules
magento\app\code\local c’est ici que l’on range les modules que l’on développe
magento\app\code\community c’est ici que ce rangent les modules de magento connect (de la communauté magento)
Le module sera donc dans le dossier www\magento\app\code\local\
Configurer le module, le controller, le router, code xml : config.xml
Créer un fichier config.xml dans www\magento\app\code\local\Magentocreation\Module\etc\ mettre dedans ce code :
<?xml version="1.0"?> <config> <modules> <Magentocreation_Module> <version>1.0</version> </Magentocreation_Module> </modules> <frontend> <routers> <monrouteur> <use>standard</use> <args> <module>Magentocreation_Module</module> <frontName>Magentocreation-Module</frontName> </args> </monrouteur> </routers> </frontend> </config>
Dans ce code on déclare le router de la balise
MagentoCreation_Module correspond au nom du routeur. Vous pouvez spécifier le nom que vous voulez.
Standard correspond à la vue frontend opposé à admin pour le back office.
module MagentoCreation_Module indique à magento dans quel module aller chercher le controller
frontName MagentoCreation-Module nom du frontend. Vous pouvez mettre celui que vous voulez.
Création du controller
Vous devez créer le fichier IndexController.php du controller dans le dossier
www\magento\app\code\local\MagentoCreation\Module\controllers\
class MagentoCreation_Module_IndexController extends Mage_Core_Controller_Front_Action { public function indexAction() { echo "Je viens de créer un module, ici l'action index de mon controller affiche ce texte"; } }
Mise en application du module
Dans le frontend de magento tapez cette URL :
urlSite/magento/Magentocreation-Module/index
Le texte apparaît « Je viens de créer un module, ici l’action index de mon controller affiche ce texte » sans aucune mise en page, ce qui est normal nous n’avons rattaché aucun layout ,template notre page. Essayez de rajouter une méthode dans le controller et de l’appeler via l’URL de frontend.
Dans un prochain tutoriel consacré au module, nous verrons comment ajouter une action au controller qui chargera un layout lui permettant d’agencer la page en ajoutant des blocs via getChildHtml().

Mon module n’apparaît pas Magento ne le reconnait pas. Quand est ce que le module est ajoute ?
Salut
le module n’apparait pas ? tu as un message d’erreur ?
tu peux voir dans le back office si le module et activé ou pas. magento liste les modules dans systeme configuration avancé avancé
Meme probleme.
Magento v1.4.0 stable.
Le module n’apparait pas dans la liste des modules dans ysteme configuration avancé avancé.
system->cache management, coche configuration et action refresh
J’ai essayé de créer un nouveau module en suivant les indications ci-dessus. La seule différence est que j’ai changé les noms des répertoires et donc aussi des balises. Ca ne fonctionne pas.
Y a-t-il des choses à savoir en plus sur les noms des balises.(Des choses à ne pas faire des conventions à respecter, etc…)
J’ai suivi le tuto au caractere pres, j’ai refresh le cache mais sa marche toujours pas…
une idée?
il faut respecter ces noms est le chemin do module.
quel nom tu as mis ?
je viens de le refaire avec des copier coller (donc au caractère près) ça fonctionne.
la seule chose non mentionné dans le tutoriel du module c’est qu’il faut ouvrir la balise php dans indexcontroler.
et pour l’url de test moi j’avais mis
urlSite/magento/Magentocreation-Module/index
ce qui correspondait a :
localhost/magento/Magentocreation-Module/index
A adapter si le debut de votre url est différent.
Salut!!!
J’ai tout vérifié, et le module est bel et bien présent et activé dans système configuration avancé avancé pourtant je reçois cette erreur:
Not Found
The requested URL /magento/Magentocreation-Module/index was not found on this server.
A quoi est due cette erreur?
Salut
Tu es sur d’avoir le même code ?
tu peux faire des copier-coller
Le module est activé c’est déjà bien.
pour l’url il faut mettre toute l’url de ton site
Si tu travailles sur un serveur local et que tu as installé magento dans un dossier « magento »
http//localhost/magento/Magentocreation-Module/index
j’ai enlevé les : après http pour ne pas que ça génère un lien sur le blog.
ce lien http//localhost/magento/Magentocreation-Module/index
n ‘affiche rien .
ou est le probleme ???
Bonjour,
ton module magento est présent dans le back office ? est sur « activé » ?
Dans le lien que tu donnes il manque les :
J’ai fait exactement ce qui est écrit. J’ai vidé le cache et supprimé les sessions mais j’ai ceci en message d’erreur:
Not Found
The requested URL /magento/magento/Magentocreation-Module/index was not found on this server.
C’est normal qu’il y est 2 magento car j’ai un dossier magento dans un autre dossier magento
Bonjour,
Supprimes un magento et ça devrait marcher
magento/Magentocreation-Module/index
Bonjour(désolé de l’avoir oublié)
Je l’ai déja fait et ça fait la même chose
Dans le frontend je ne peux pas accéder à Mon Compte ou Connexion ça me renvoie la même erreur.
Aurais-je oublié de paramétrer quelque chose?
HS: normal que mon commentaire affiche 16h13 au lieu de 17h13?
Bonjour,
Tu as peut être oublier de fermer une balise, le module est dans le back office de magento sur activé ?
Essaye aussi de remplir tes fichier avec mes données, fait des copier coller
Bonjour,
Dans le back office il est activé.
Voici les codes:
Magentocreation_Module.xml:
true
local
config.xml:
1.0
standard
Magentocreation_Module
Magentocreation-Module
IndexController.php:
<?php
class MagentoCreation_Module_IndexController extends Mage_Core_Controller_Front_Action
{
public function indexAction()
{
echo "Je viens de créer un module, ici l'action index de mon controller affiche ce texte";
}
}
J'ai fait que des copier coller
J’ai fait justement que des copier coller et ça ne marche pas
Dans le frontend je ne peux pas accéder à Mon Compte ou Connexion ça me renvoie la même erreur. (je vais aller sur fragento pour cette erreur, cela résoudra peut être l’erreur pour la création de module.
Les dossier sont (on sait jamais):
C:\wamp\www\magento\magento\app\code\local\Magentocreation\Module\etc pour config.xml
et
C:\wamp\www\magento\magento\app\code\local\Magentocreation\Module\controllers pour IndexController.php
Dans IndexController.php, faut t’il fermer la balise <?php car dans les autre fichiers cela reste ouvert?
Attention à bien marqué « etc » et non pas « ect » comme moi, ca ma valu deux bonne heures incompréhension, vérifier bien le nom de vos dossiers.
Salut,
Pour tout ceux qui ont un problème essayez :
URL /magento/index.php/Magentocreation-Module/index
Ca a marché pour moi !
Bonjour,
Pour les personnes qui ont un problème de page 404, c’est un problème au niveau du controller que magento ne trouve pas. Il faut donc bien vérifier que le nom de votre controller commence bien par une majuscule (IndexController.php).
je viens de faire tous les étapes avec des copier coller mais le problème que lorsque j’actualise le frontend il m’écrit à l’extrémité de la page en haut le code entier c’est à dire:
class MagentoCreation_Module_IndexController extends Mage_Core_Controller_Front_Action
{
public function indexAction()
{
echo « Je viens de créer un module, ici l’action index de mon controller affiche ce texte »;
}
}
Bonjour,
Tu as ouvert une balise Php en haut du fichier ?
J’ai testé tous les tuto helloworld sur magento qui se trouvent sur le net et aucun d’eux n’a marché ! dire que magento est professionnel! Je n’ai jamais eu ce genre de problèmes avec prestashop
Il faut persévérer magento et mieux que prestashop mais aussi plus difficile à apprendre
Salut, je suis en train de customiser mon Magento 1.5.1, j’ai suivi à la lettre ton Tuto (génial d’ailleur) seulement je me retrouve avec des erreurs quand je me rend sur la page module du frontend
There has been an error processing your request
Controller file was loaded but class does not exist
Trace:
#0 /home/secutec/www/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(329): Mage::exception(‘Mage_Core’, ‘Controller file…’)
#1 /home/secutec/www/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(296): Mage_Core_Controller_Varien_Router_Standard->_includeControllerClass(‘/home/secutec/w…’, ‘Magentocreation…’)
#2 /home/secutec/www/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(200): Mage_Core_Controller_Varien_Router_Standard->_validateControllerClassName(‘Magentocreation…’, ‘index’)
#3 /home/secutec/www/app/code/core/Mage/Core/Controller/Varien/Front.php(176): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#4 /home/secutec/www/app/code/core/Mage/Core/Model/App.php(340): Mage_Core_Controller_Varien_Front->dispatch()
#5 /home/secutec/www/app/Mage.php(627): Mage_Core_Model_App->run(Array)
#6 /home/secutec/www/index.php(80): Mage::run( », ‘store’)
#7 {main}
une idée ?
Bonjour,
Tu as essayer de faire des copier coller des codes du tutoriel ?
Salut Cédric merci, pour cette réponse, oui j’avais déjà copier collé et je viens de le refaire attentivement, Toujours la même erreur.
Cela ne viendrait-il pas de la version ?
J’ai le même problème, enfin pas exactement, j’ai suivi le tuto Helloworld d’Alan Storm (articles de la Knowledge base sur magento.com), je suis en version 1.5.1 et j’ai le message d’erreur « 404 page not found » il ne me dit même pas que le controller a été chargé. J’ai tout vérifier, pdt je sais pas combien d’heures, nom des dossiers, code xml, code php, j’ai mis les fichiers d’Alan Storm, vérifier les permissions de fichiers etc… etc.. ah oui et j’ai essayé sur la version 1.5.0 , exactement le même module, et il marche …donc oui a priori ça vient de la version 1.5.1.
Quelqu’un à réussi sur la version 1.5.1 ?
Bonjour,
Je viens de lire le tuto, tres bien expliqué merci !
alors il y a je crois une erreur dans les chemins de déclaration du module dans le tuto il est écrit :
magento\app\local
magento\app\community
alors que ce ne serait pas plutôt ça :
magento\app\code\local
magento\app\code\community
dsl si je me trompe également …
Bonjour Alio,
Effectivement tu as raison il manquait /code dans le chemin. Je l’ai rectifié thks