Jump to content

Question sur de développement de modules


Draganshadow

Recommended Posts

Bonjour à tous !

Puisque c'est mon premier post,
j'en profite pour féliciter l'équipe de prestashop qui à su rendre simple l'administration de e-boutique.

J'aime beaucoup la clarté d'ensemble.

Je suis actuellement dans une phase de test de plusieurs solutions de e-boutique (Magento, VirtueMart, Prestashop) en vue d'en choisir une avec laquelle travailler (créer des boutiques personnalisées au niveau template et modules).


Les fonction de templates offerte par smarty sont suffisantes à mon gout (simple et complet).

Cependant j'ai de gros doutes quand au modules à savoir :

peut on créer un module qui modifie des élément du backend (genre l'admin des clients pour ajouter des fonctions) ?

j'ai eu rapidement l'impression qu'un module n'est accessible que via le lien config du panneau "module", est il possible de créer son propre onglet ou de se rajouter sous un des onglets ?

Pour idée je souhaite créer une gestion étendue des clients avec des fonctions spécifiques à la vente d'abonnements à des services (pouvoir suspendre, changer des droits....) le tout bien sur avec des tables spécifiques.

Je développe un peu sur dotclear 2 que je trouve une bonne référence au niveau des plugins.
Peut on en faire autant sur prestashop ?


merci de votre aide.

Link to comment
Share on other sites

Bonjour,

J'étudie la solution Prestashop depuis le début d'année. Grâce à la manière dont le produit a été développé, il est assez "simple" d'ajouter de nouvelles fonctionnalités. La création de modules se réalise aussi assez facilement (enfin tout dépend de ce que vous voulez faire). Pour le moment, j'en ai créé surtout 3 pour lesquels j'ai ajouté des tables (un module de paiement, un module d'affichage et une gestion d'abonnement).

Mais attention : je vous conseil de ne surtout pas casser leurs scripts. En effet, c'est ce que j'ai fait avec la version 0.9; lorsque la V1 est sortie, il m'était alors impossible d'effectuer la mise à jour.

Phinette

Link to comment
Share on other sites

Quand tu dis

il faut pas casser leur code
ça signifie que coder certaines fonctionnalités tien plus du hack que du plugin non?

Il faut insérer du code dans le core ?

Les plugins que tu as faits sont public ou pour ton propre usage ?

Je cherche un petit exemple de plug utilisant une quelconque table supplémentaire et une admin à lui pour me faire une idée.
Tu pourrais me partager une version de ton travail ?

question subsidiaire : existe il un site qui référence déjà les plugins existant ?

désolé pour cet amas de question j'essaie de me mettre au niveau rapidement et de faire des rapprochement avec ce que je connais.
Prestashop est de toute façon la solution ayant la meilleure courbe de compréhension.
Link to comment
Share on other sites

Les plugins que tu as faits sont public ou pour ton propre usage ?

Je suis en train de mettre en œuvre Presta pour ma boite donc c'est à titre professionnel.


existe il un site qui référence déjà les plugins existant ?

Je ne sais pas mais tu peux peut-être demander à l'équipe Presta.


Il faut insérer du code dans le core ?


Prenons l'exemple du plugin de paiement par CB.

J'ai besoin de conserver une partie des numéros de CB des clients, les numéros de transaction et d'autorisation et de savoir si le paiement a été réellement effectué afin de valider la commande.

Pour cela, j'ai donc créé 2 tables :
- CB client dans laquelle j'ai l'ID du client ainsi que son numéro de CB
- infos commande dans laquelle j'ai l'ID de la commande, ses numéros de transaction et d'autorisation et un flag actif.

Lorsqu'un client choisit le paiement par CB, le plugin insère des données dans ces 2 tables. Je n'ai donc pas touché au core de Presta mais uniquement à mon plugin.

Ensuite, les hooks te permettes d'effectuer différentes actions (à mon sens, ça ressemble un peu aux triggers si tu connais). Par exemple, lorsque le paiement est accepté, il y a un hook qui met à jour l'historique de la commande à "Paiement effectué" : en même temps je mets à jour ma table "info commande".


Par contre, je n'ai pas encore trouver le moyen de ne rien toucher du tout au core si tu veux gérer d'autres types de produit.
Dans mon cas, je veux pouvoir vendre des abonnements. Je gère ça à peu près de la même manière que les produits virtuels mais dans des tables différentes. Du coup, j'ai été obligé de modifier certaines classes. Mais dans le souci de ne pas vraiment tout casser...voici ce que j'ai fait (en espérant que tu connaisses la prog objet):

- j'ai copier les fichiers de classe que je souhaitais modifier sous un autre nom en modifiant le nom de la classe (ex: la classe Order devient POrder)
- j'ai recréé le même fichier avec le bon nom de classe (ex: Order). Par contre, à l'intérieur, ne se trouvent que les fonctions que je veux modifier
- et j'indique que cette classe hérite de la précédente (ex: class Order extends POrder).

(je ne sais pas si c'est très clair...)

Je ne sais pas si c'est la bonne solution mais pour le moment ça a l'air de fonctionner. Je pourrais t'en dire un peu plus peut-être dans quelques jours car je suis en train de tout recréer "proprement"!

D'ailleurs si les créateurs de Presta pouvaient donner leur avis à ce sujet (car j'ai déjà demander mais je n'ai pas eu de réponse...)

Voila quelques réponses à tes questions. Ce n'est que ma vision des choses donc peut-être que d'autres ont fait autrement; je suis curieuse d'avoir d'autres avis.

Phinette
Link to comment
Share on other sites

Merci beaucoup pour c'est infos tout a fait claires (pas problème pour les hook et l'héritage ;-) ).
Je vais donc faire du hook & hack moi aussi.

Une petite dernière (a rallonge) pour la route :

As tu personnalisé un peu l'admin du genre ajouter un panneau pour la gestion de tes abonnés ?
Comme pour le reste tu as du tenter de modifier un peu sans casser ?

Je crois que je vais commencer par faire un module OS qui propose un onglet ou d'autres modules peuvent se rajouter facilement.

Link to comment
Share on other sites

Concernant l'admin, j'ai tout cassé dans la V0.9 : je voulais que tout soit géré avec Smarty donc j'ai vraiment tout casser.

Pour la V1, je ne m'y suis pas encore penchée. Mais il va falloir que je le fasse pour paramétrer par ex. les abonnements!

Je vais essayer de faire en sorte de casser le moins possible, mais bon... (apparemment tu vas surement effectuer des modifs, donc si tu as des idées, ce sera sympa de les partager :D )

A+
Phinette

Link to comment
Share on other sites

MERCI encore.

Pas de problème je ferai suivre mon avancement.

Je vois plus une modif qui donne globalement plus de possibilités au plugins. Un peu comme le cfg dans spip qui permet de gérer facilement des varaiable de config.
Ici le besoin c'est un peu l'inverse la config est gérée c'est plus au niveau interface et interaction qu'il semble y avoir du manque.

Mais au moins il n'y a que lui qui taperai un peu dans le core ensuite les autre module utilisent les fonctions de ce module en plus de celle de prestashop. Ils restent bien indépendants.


Je vais réfléchir autour de ça.

Le truc embêtant c'est que c'est nécessaire dessuite pour pouvoir développer donc je vais le faire mais ça devrai faire partie de prestashop donc l'équipe va forcément implémenter ces fonctions au fur et à mesure. Et le plug ne servira plus à rien.

Link to comment
Share on other sites

  • 1 month later...

Je relance un peu ce post, puisqu'on on doit être nombreux à avoir ce besoin....

La question est donc "comment rajouter par module un onglet dans la partie Admin ?"
La solution suggérée par phinette semble "propre" mais impose de créer des fichiers en dehors du répertoire "modules".

L'équipe Presta, avez-vous une suggestion sur la meilleure manière de faire ?

En particulier :
1/ une telle fonctionnalité est-elle dans la philosophie des modules ?

2/ Un module peut-il inclure des fichiers contenant de nouvelles classes et des classes dérivées de AdminTab ? (répertoires ./adminxx/tabs et ./classes)

3/ Comment raccrocher un nouvel onglet dans la hiérarchie des onglets par soft, sans passer par le panneau de gestion des onglets ?

4/ Quelque chose est-il prévu sur le sujet pour la 1.1 ?

Phinette, Draganshadow, comment vous en êtes vous sortis finalement sur la V1.0 ?

Merci

Link to comment
Share on other sites

1/ une telle fonctionnalité est-elle dans la philosophie des modules ?
Oui et non. Le seul détail gênant se pose au niveau des droits des dossiers, car il est en effet en théorie interdit de copier des fichiers ailleurs que là ou c'est prévu.
En dehors de ça, j'ai développé de nombreux modules créant des onglets. Tout comme on peut créer un produit avec un objet product on peut créer un onglet avec un objet Tab. Reste ensuite à copier en PHP le fichier AdminTonModule au bon endroit (et son icone).
Mais ça reste du ponctuel. Après on peut toujours surcharger la classe module pour gérer ça pour tout le monde, mais je pense que ça deviendrait... ingérable :)
2/ Un module peut-il inclure des fichiers contenant de nouvelles classes et des classes dérivées de AdminTab ? (répertoires ./adminxx/tabs et ./classes)
Ben oui, rajouter du code dans des fichiers séparés ne casse rien.
3/ Comment raccrocher un nouvel onglet dans la hiérarchie des onglets par soft, sans passer par le panneau de gestion des onglets ?
Jetez un oeil aux fichiers d'upgrade de l'installeur, c'est juste la requête SQL qui va bien :)
4/ Quelque chose est-il prévu sur le sujet pour la 1.1 ?
Il y a bien quelques modifications sur les tabs et modules, mais rien de transcendant.
Link to comment
Share on other sites

Merci Damien pour ces éclaircissements. ;-)

Pour résumer :

- si on se raccroche aux hooks du back-office, le code des fonctions ajoutées se trouve dans le répertoire ./modules/monModule

- pour des fonctions plus poussées, il faut créer des fichiers AdminMaFonction.php et maClasse.php dans ./adminxx/tabs/ et ./classes.
Si on souhaite les "livrer" avec un module, à charge à l'install de ce module de faire les copies de ./module/moModules vers ./admin/tabs et ./classes (d'où le pb des droits en écriture)

Link to comment
Share on other sites

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
×
×
  • Create New...