Jump to content

Améliorer / simplifier le système de Hook des modules


Recommended Posts

Salut,

après quelques heures à étudier le code de la 1.4, j'ai une remarque concernant le système de Hook pour les modules.

J'ai remarqué que les modules ne pouvaient pas toujours être positionnés sur tous les HOOK, car il doivent forcement implémenter la méthode hookNomDuHook pour ca .
Donc alors qu'on peux le positionner ou on veux via le backoffice un module n'apparait pas forcement en Front , c'est troublant .


Je propose donc une solution plutôt simple à mettre en place qui permettrait de positionner un module n'importe ou sans avoir a modifier le code de celui ci à chaque fois en ajoutant la méthode pour tel ou tel hook.
( Meme problème si on crée un nouveau hook, il faut modifier tous les modules qui devront y être positionné )

Dans la classe mère ModuleCore il faudrait ajouter une méthode magique __call() qui appelerait une méthode hookDefault() du module si il n'y a pas de méthode spécifique pour le hook qui est appelé.

Inconvénient : tous les modules devraient donc implémenter une méthode hookDefault(), ou du moins déclarer une des methodes hook comme étant celle par defaut ( via une constante ou une propriété par exemple ) mais c'est loin d'être dur à mettre en place , comparer au gain de souplesse.
Ou sinon la la méthode _call pourrait elle même chercher une méthode hook et éxécuterait la première qu'elle trouve ( bref il y a des solutions )

Qu'en pensez vous ? J'espère avoir été clair .

( Si vous voulez je peux vous donner un exemple de ce à quoi pourrait ressembler la méthode _call() )

Link to comment
Share on other sites

Donc alors qu’on peux le positionner ou on veux via le backoffice un module n’apparait pas forcement en Front , c’est troublant .

Que veux-tu dire par la ?

Il y a le système de Greffe de module qui permet de placer un module initialement prévu pour la colonne de gauche par exemple sur celle de droite.
Du coup, il est possible via le BO de placer les modules où on veut vraiment.

De plus, ta solution est paradoxale :
sans avoir a modifier le code de celui ci à chaque fois


tous les modules devraient donc implémenter une méthode hookDefault()
Link to comment
Share on other sites

Donc alors qu’on peux le positionner ou on veux via le backoffice un module n’apparait pas forcement en Front , c’est troublant .

Que veux-tu dire par la ?


Et bien si le module n'a pas été prévu pour un emplacement tu peux l'assigner via le Backoffice , mais il n'apparaitra pas sur le Front office.
Il y a donc bien là un problème fonctionnel, car d'un coté on me permet de greffer un module dans un emplacement , de l'autre il ne s'affiche pas car le module en question n'a pas la méthode lui permettant de s'afficher a cet emplacement.

Exemple concret : assigne le module "Block Categories" a "Homepage content", rien n'apparait en Frontoffice.



De plus, ta solution est paradoxale :


Il sagit là d'une idée , à implémenter dans une future version qui nécessite effectivement quelques changements.
C'est une logique à long terme , on change le tout une fois pour éviter d'avoir à changer à chaque fois, rien de paradoxale là dedans , c'est ce qu'on appel du développement.
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...