Jump to content

[DOC] -> Création de module Prestashop - old version


Recommended Posts

Création de module sous Prestashop

A. Création de module sous Prestashop
A.1 Arborescence de Prestashop
A.2 Type de modules
A.3 Design pattern
A.4 Les traductions des modules
A.5 Le code de notre module

B. Le Back-office
B.1 Terminologie
B.2 Les Modules

C. Le front-office
C.1 Présentation
C.2 Ajout de méthode pour le front-office
C.3 Modifier sa position
C.4 Importer vos propres styles

D. Les méthodes génériques
D.1 Généralités
D.2 Utilisation de ces méthodes
D.3 Etude de Cas

Version Wiki en cours sur http://wiki.psfrance.org

creationdemodule_0-4.zip

Share this post


Link to post
Share on other sites

C'est du bon travail ça, même si je ne me suis pas encore penché sur les Modules.
Lors de la dernière présentations de la solution PrestaShop à Paris, les développeurs de module m'ont fait mal à la tête avec toutes leurs ligne de code.

J'approfondirai ça quand j'aurrais plus de temps.

Cordialement

DAV

Share this post


Link to post
Share on other sites

Merci merci... surtout à Laurent (alias Kzone), l'auteur du tutorial!
On a essayé d'etre le moins lourd possible afin de ne pas vous assommer avec de la technique pure et que des lignes de codes.

On attend tous vos réactions et commentaires pour ameliorer ce doc !

Pour ceux qui ont téléchargé une précédente version merci de reprendre cette version.

PY et Julien (qui doivent bosser également sur un doc de ce type)... Avez-vous lu celui-ci et
qu'en pensez-vous ?

Share this post


Link to post
Share on other sites

Salut Ludo :)

Si tu veux réellement savoir, Julien et moi bossons effectivement ensemble, mais hélas pas encore sur un doc pour PrestaShop. Nous comptons sortir plusieurs projets qui nous sembles plus "importants" pour le moment!

Sinon après avoir lu ton dossier, je le trouve plutôt facile à lire ce qui est un bon point. Il semble plus ou moins complet, même si je doute réellement qu'avec les bases à savoir sur un module un novice pourrait arriver à en créer un :)

Mais c'est surement un tout bon début pour comprendre réellement le fonctionnement de ces ***** modules :D

En tout cas, merci énormément de cette contribution!

Share this post


Link to post
Share on other sites

ERRATA doc :

chapitre : back-office


De plus, il m’a fallu modifier la syntaxe du nom du répertoire module et du fichier éponyme et .php (bien entendu le nom de la classe également).
+ unmodule => blockunmodule
unmodule.php => blockunmodule.php
... a vérifier donc !!!


... lors de l'installation du module , le nom est verifié valide par un eregi() , mais pour qu'il apparraise dans le tableau du back-office ,
c'est la classe AdminModules qui fait fait l'appel à une méthode de la classe abstraite Module ...
/* Scan modules directories and load modules classes */
       $modules = Module::getModulesOnDisk();



en suivant les cailloux du petit poucet : public static function getModulesOnDisk() et public static function getModulesDirOnDisk()
on s'apercoit que le listing du répertoire se fait :

if (file_exists($moduleFile = _PS_MODULE_DIR_.'/'.$name.'/'.$name.'.php'))



donc cqfd : le nom du module et le nom de la classe doit avoir le même nom puisqu'il cherche uniquement trucmodule/trucmodule
avec truc module = $name

cela vaut avec ou sans block en début de nom
le reste n'est que littérature et billevesée ( et billevesée dans une phrase c'est 50 points ... :P )
++

ps : il s'agit ici des modules présent sur le disque et pas obligatoirement installé :exclaim:

Share this post


Link to post
Share on other sites

Bonjour a tous!

Excelente initiative ce tuto.

Neanmoins je me permet de corriger quelques details qui me semblent tout de meme important :

- dans la method __construct, le numero de la version doit se situer entre simples quotes, de mainiere a autoriser les version '1.0.0.1' par exemple. J'admets que nous possedons encore des modules avec $this->version = 1.0, ce qui est obsolete, et nous nous en excusons.

- dans un module "de base" il est inutile de surcharger la method install() comme est fait dans le tuto. Faire un "si install ok alors ok sinon pas ok" n'est pas tres astucieux, autant laisser la Class Module faire l'install et renvoyer directement "ok" ou "pas ok"

- le prefix "block" est purement indicatif, si votre module est un block vous pouvez tout aussi bien l'appeler "tetris" :P

- le "{l s='My text' mod='my_module'}" n'est pas aborde :'-( (alors qu'element plus qu'important)

- "Configuration ::get()nom_configuration" possede un espace avant l'operateur de resolution de portee (attention a la "parse error")

- definir $message = "bonjour" est une mauvaise idee, pourquoi ne pas plutot utiliser $this->l() comme explique plus haut dans le tutorial ??

- Db::getInstance()->Execute(ma_requete_qui_effectue_un_select_mysql) suivi d'un "mysql_fetch_array" est egalement une mauvaise idee (desole) puisqu'il existe deja Db::getInstance()->ExecuteS(ma_requete_qui_effectue_un_select_mysql) qui s'occupe de ca, et que deplus "mysql_fetch_array()" est depuis un moment deja "deprecated" au profil de "mysql_fetch_assoc()" :P

- le switch($nombre_commande[0]) ne serait-il pas mieux directement en Smarty ? Cela ne fait que genere de l'affichage non ?

- Et pour finir a mon avis le plus important, le rediger en anglais pour faire profiter nos amis non francophones :P

Share this post


Link to post
Share on other sites

bonjour

et merci pour toutes ses précisions importantes !
je vais modifier le tutoriel en conséquence et ainsi remédier a ces "quelques" erreurs et approximations

J'espère l'étoffer au plus tôt, mais pour cela il faut que je m'imprègne d'avantage du code prestashop ;-)
Concernant la version en anglais , je ne peux rien promettre ... tout cela dépendra de mon emploi du temps

A nouveau n'hésitez pas à apporter vos commentaires , conseils et rapport d'erreurs ou d'approximations
C'est de cette façon que nous progresserons tous ensemble

ps : concernant le nommage des modules j'avais fait un "errata" ci-dessus reprécisant les modalités (apparemment
pas assez explicite)

laurent

Share this post


Link to post
Share on other sites


ps : concernant le nommage des modules j'avais fait un "errata" ci-dessus reprécisant les modalités (apparemment
pas assez explicite)


Nan c'est ma faute j'avais lu l'errata avant le tuto et donc je n'y ai pas repense apres coup.


Derniere chose, prendre les screenshots au format png au lieu du jpg permettrai une plus grande lisibilite (il n'y aurai pas ces horribles artefacts :P)

Share this post


Link to post
Share on other sites

Pour ajouter une petite touche personnelle sur ce qui a été dit...

Pierre-Yves et moi même sommes entrain d'élaborer un projet complet concernant les modules afin de vous simplifier la vie, et pourquoi pas voir la naissance d'un générateur de modules qui sait ? :P

De plus je rappel que le problème actuel est que le back-office est totalement figé. Nous allons donc voir en tant que externe ce qu'il est possible de faire.
Il est certain que nous essayons d'agir à moindre coût, c'est à dire en touchant le moins possible au cœur.

D'autre part, un projet* aurait consisté à faire tourner Prestashop sur une base de type PostgreSQL, mais malheureusement, la solution n'a pas du tout été prévue à cet effet... ([dev]le singleton DB aurait du être un factory/singleton et être plus flexible et pourquoi pas utiliser le vrai PDO ![/dev])

Par ailleurs... encore un autre projet* aurait laissé pensé que l'on peut intégrer un CMS dans la solution, mais au vue de la gestion des URL internes de la solution, je pense qu'il vaux mieux le mettre sur la white-paper de la version deux... ([dev]pas d'url handler et de gestionnaire d'objet, aucun cache effectué mise à part le "faux" cache de smarty[/dev])

Enfin merci pour cette doc... et la version une sortie, au travail.

Amicalement.

* Dès que j'ai des vacances, je m'y met !
PosgrestaShop V0.1 et SpitaShop V0.1 :-p


Edit:
- Correction d'orthographe (j'ai du mal avec le français)

Share this post


Link to post
Share on other sites

Pierre-Yves et moi même sommes entrain d'élaborer un projet complet concernant les modules afin de vous simplifier la vie, et pourquoi pas voir la naissance d'un générateur de modules qui sait ? :P


Oups... Tu en dis trop!! :cheese:

Share this post


Link to post
Share on other sites

  • 2 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More