Jump to content

Un même Module utilisable plusieurs fois sur une page


Recommended Posts

Re salut !

Je reviens avec une deuxieme post et plein de nouvelles questions :)

- Est-il possible de créer UN module qui puisse figurer PLUSIEURS fois sur la page d'accueil?
j'aimerai par exemple, sur ma page d'accueil, montrer les produits de deux categories en particulier.
De mon coté pour l'instant j'ai réussi à faire un module Categorie (en partant du module homefeatured), qui permet de montrer les produits d'une categorie en particulier et j'aimerai la "hooker" deux fois en gros, sans avoir a en faire deux (cas. dupliquer le dossier et les fichiers du module). Je pensais rajouter la selection de la categorie concernée dans les reglages du module dans le BO.

- Dans le même ordre d'idée j'aimerai créer un module "re-hookable" si possible, qui n'affiche d'un seul produit en particulier, idem à regler dans les reglages du module dans le BO.

Est-ce que c'est envisageable ? Des conseils ? :)

merci !

Link to comment
Share on other sites

Des infos ici :
http://www.prestashop.com/forums/viewthread/12000/developpement_et_modules/dupliquer_un_module_est_ce_possible_

Il yen a bien d'autres encore ;)

Cherche bien avec : "dupliquer module"

C'est quoi: re-hookable ?

Qui se place dans différents hooks en même temps ?
Si c'est çà, il te suffit de le greffer sur un autre hook, dans module/ position/ greffer un module.

Link to comment
Share on other sites

merci blasto pour la recherche, mais j'ai du mal m'expliquer. Je vais changer le titre, le mot dupliquer est trompeur.

J'ai aucun problème pour dupliquer un module. Mais le truc c'est que c'est un meme module que j'aimerai avoir plusieurs fois dans ma page d'accueil (dans la colonne centrale).

C'est un meme module qui fait la meme chose sauf qu'il n'y a juste un parametre qui fait varier le resultat.
ex: sur la page d'accueil, j'ai ajouté un module custom qui affiche les 3 premiers produits de la categorie #2. Et j'aimerai raccrocher ("re-hooker"... plus ou moins) ce meme module en dessous ou à coté, mais qui affiche les 3 premiers produits de la categ #6.
C'est le meme code qui fait la meme chose deux fois sauf que je change juste la categorie concernée.
Donc la solution trouvée pour le moment c'est effectivement de dupliquer le module, mais c'est super dommage car si je veux modifier son code, faut que je le fasse dans toutes les copies du module, dont le seul parametres changeant c'est la categ.

Est-ce un peu plus clair?

Link to comment
Share on other sites

Pour les besoins de la nouvelle version de mon module (testable ici : http://demo.sotew.com et configurable là : http://demo.sotew.com/back/), j'ai du faire plusieurs appels au même module.


Prestashop n'est PAS fait pour avoir plusieurs inscriptions d'un même module dans un même hook, aussi il faut ruser.

La solution la plus propre, serait si un des appels au module se trouve en début ou en fin d'un hook. Par exemple, si tu veux mettre le bloc catégorie dans le home tout à la fin, son affichage sera géré par la variable smarty {$HOOK_HOME}, contenu dans le fichier index.tpl.
En ajoutant à la suite dans ce tpl un Hook que tu créé manuellement, et que tu inscrit le module catégorie à ce hook, tu auras ton double affichage.

Maintenant, il existe une autre solution un peu plus complexe puisqu'il faudra modifier plusieurs inscriptions à ta base de données.
Prestashop possède la table ps_module qui contient les inscriptions des modules, en lui donnant un identifiant et son nom. le nom correspond à celui du dossier contenant le module. La table ps_hook_module contient les inscriptions des modules dans les hooks avec leurs positions. c'est ici les identifiants qui identifie les module, et tu ne peux pas avoir le même identifiant avec le même hook dans cette table.

2 solutions me sont alors apparues pour faire un double appel : soit lever l'interdiction même identifiant et même hook, mais ceci pose de gros problème pour l'inscription et la désinscription des autres modules (crois moi, j'ai testé, ça casse tout ;) )

La seconde, celle que j'ai retenue, est de faire une nouvelle inscription du même module dans la table ps_module. même nom, mais pas même identifiant. Le défaut de cette méthode est qu'il est impossible de gérer correctement les positions des inscriptions d'un module ayant deux inscriptions dans le backoffice (prestashop est vraiment parti du principe qu'un module est unique par son nom.), j'ai donc du ajouter un outil pour gérer moi-même les positions des deux inscriptions dans mon module.


Indique ici si tu veux faire la première méthode (création d'un nouveau hook) ou la seconde (plusieurs inscriptions du module), et je te donnerais les étapes exactes, d'autant plus qu'il va ensuite falloir que tu différencie le premier appel au module du second pour différencier tes affichages. Pas de panique, je me suis aussi penché sur la question ;)


Bonne continuation !!

Link to comment
Share on other sites

  • 3 weeks later...

Slt SotEW,

Merci pour ce topo tres précis et emprunt d'experience :)

Ma foi ya deux options et je les tenterai bien :)

Je dois mettre en place une solution assez rapidement, et la toute premiere option que tu cites me paraît abordable et rapide.

Celle de faire un hook à la main que je positionne plusieurs fois dans le fichier tpl, qui du coup ne demanderait aucune modification de la bdd si je ne m'abuse...
Le probleme étant par contre que ce n'est pas du tout administrable via le backoffice.
Mais ça peu me convenir vu que mon client ne s'interresse qu'à la gestion de son catalogue et que je m'occupe de tout façon de tt ce qui est mise en page/layout etc...

Donc j'avoue que je penche pour celle ci dans un premier temps.


Après je suis curieux de savoir comment faire la solution qui d'apres moi serait la plus propre et la plus perenne: rajouter des entrées dans la table des hooks et rajouter un module custom pour gérer le positionnement !

Merci d'avance pour ton aide !!

Pour info, je compte l'utiliser pour un module que je bricole en ce moment:
http://www.prestashop.com/forums/viewthread/37676/

Link to comment
Share on other sites

Si tu fais toi même ton module, tu dois comprendre comment fonctionne prestashop sur la gestion des modules et des différentes entrées qui lui correspondent.

Prend un site vierge et fait des tests, créé un module tout simple qui affiche du texte, un simple mot, dans la colonne de droite par exemple, et essaie de le faire appeler deux fois en dupliquant l'entrée du module dans la table ps_module en modifiant juste l'identifiant. Entraine toi à voir si tu peux le faire lors de l'installation du module ( un enregistrement en plus de l'automatique réalisé par parent::install() ), puis de faire l'enregistrement du module duplique dans la table des hooks (ps_hook_module) pour la colonne de droite. Si tu arrives à dupliquer ton affichage, je te dirais comment faire la différence entre le premier appel et les suivants. Si tu n'y arrive pas, je te ferrais les étapes détaillées point par points après. Mais le mieux, c'est d'apprendre, tu comprendras mieux ce que tu fais.

SotEW

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...