Jump to content

[Résolu] Hook et affichage des modules


ope

Recommended Posts

Bonjour,

 

Actuellement (version 0.9), l'affichage d'un module sur le FO s'effectue, par exemple, grace la la fonction hookLeftColumn, ne l'autorisant donc à s'afficher uniquement dans le hook "LeftColumn".

 

Il parait assez simple de modifier cette contrainte en modifiant la classe Module, en remplaçant la ligne :

 

$output .= call_user_func(array($moduleInstance, 'hook'.$hook_name), $hookArgs);

 

de la fonction hookexec() par :

 

$output .= call_user_func(array($moduleInstance, '[b]mafonction[/b]'), $hookArgs);

 

Pourquoi avoir imposé cette contrainte ? (cad associer un module à une position sur le FO)

La modification du code peut il avoir d'autres répercutions ?

 

Link to comment
Share on other sites

Bonjour esso

 

Toucher cette ligne revient a remettre en cause la totalite du fonctionnement des modules :(

 

Pour rappel comment fonctionnent les modules :

A un moment donne (nous reviendront plus tard la dessus), on a besoin d'un module X pour faire Y choses (que ce soit sur le front-office ou le back-office)

On code donc notre module pour qu'il puisse effectuer notre Y.

Ensuite on appelle le module a l'endroit desire en lui passant les parametres requis et il fait son business.

 

Comment cela se presente concretement dans PrestaShop :

Pour eviter que tout le monde modifie le coeur de la solution (on perd donc ici la notion de modules) en appelant son module la ou il le veut dans le code, nous avons implemente un systeme de "hooks".

Ainsi dans le coeur de la solution, on retrouve a differents endroits strategiques des appels a des hooks particuliers correspondant au evenements en cours (paiement, colonne de droite, ...).

Apres il suffit dans le code du module de specifier quel hook doit l'appeler (registerHook()) et a l'installation du module la correspondace est automatiquement creee.

Ainsi a chaque appel du hook concerne, tous les modules associes sont appeles 8)

 

Le module n'est donc pas "impose" a une position (que ce soit sur le FO ou le BO).

Actuellement, pour les blocs c'est vrai qu'il ne peuvent etre appeles qu'a gauche ou a droite mais c'est temporaire.

On reflechis a une maniere plus souple de definir quels hooks appelent les modules (nottement pour les blocs).

Il devrait y avoir une petite reorganisation la dessus vers la release 1.0 ;)

Link to comment
Share on other sites

Merci pour ces réponses.

J'avais pensé à cette solution surtout pour les modules de type block.

 

C'est vrai que cela n'est pas génant pour les autres types de modules, il y a peu de chance qu'on ai à les changer de hook.

 

Peut on dire qu'un hook est un "emplacement" dans un template ? si oui, peut on en rajouter pour répondre à une mise en page spécifique (toujours pour des types block) ?

 

Pour quand est prévue la version 1.0 ?

 

Merci encore.

Link to comment
Share on other sites

Pour les templates (et uniquement pour les templates) on peut effectivement dire qu'ils correspondent a peu pres a un emplacement.

 

si oui, peut on en rajouter pour répondre à une mise en page spécifique (toujours pour des types block) ?

Surtout pas !

 

Premierement les hook ne sont pas la pour faire du design, il n'est donc pas question de les utiliser pour cela.

Deuxiemement ils sont tres gourmands en ressources CPU, et s'ils sont utilises abusivement, ils peuvent fortement alterer la vitesse d'acces au siteweb.

Des hooks ne doivent etre rajoutes qu'a des fins de developpement de fonctionnalites, et encore, de maniere tres restrictive.

 

Une documentation les concernant verra "bientot" le jour.

 

Concernant la 1.0, je ne peux pas vous repondre. Nous travaillons actuellement a la 0.9.1 qui corrigera bon nombre de bugs (dont les deux principaux a savoir installation impossible sur certains hebergements et login impossible) et qui devrait sortir dans les prochaines jours.

 

Link to comment
Share on other sites

Premierement les hook ne sont pas la pour faire du design, il n'est donc pas question de les utiliser pour cela.

 

D'accord mais... actuellement il existe les hooks "colonne gauche" et "colonne droite". Comment peut on gérer un FO qui comporte une colonne de plus ?

Link to comment
Share on other sites

Bonjour esso

 

Non elle n'est pas stupide, c'est tout simplement que nous ne l'avions pas (encore) lu :P

 

Premierement les hook ne sont pas la pour faire du design, il n'est donc pas question de les utiliser pour cela.

 

D'accord mais... actuellement il existe les hooks "colonne gauche" et "colonne droite". Comment peut on gérer un FO qui comporte une colonne de plus ?

Pourriez vous detailler un peu plus ? Car je vois mal un site web avec une colonne a gauche, une a droite, une autre (centrale ?) plus le contenu de la page.

Peut-etre vouliez vous parler d'une zone au dessus ou au dessous de votre contenu ?

Link to comment
Share on other sites

Je n'ai pas d'exemples concrets, j'essaye de voir si j'ai bien saisi le concept des hooks... (apparement ça peut servir  :))

 

Donc j'essayais de mettre dans le cas suivant : mon site m'impose (par sa mise en page) de rajouter un groupe de modules de type "block".

Cela peut être une colonne supplémentaire, ou en effet un block au dessus ou au dessous de mon contenu.

Plus précisement : un emplacement dans mon template qui va accueillir des modules de type block.

 

 

Link to comment
Share on other sites

N'importe ou ! à un emplacement que vous n'avez pas pris en compte (si ça peut être le cas ??)

 

Je voudrai juste rajouter dans mon template un emplacement pour mettre des modules de types block...

(désolé, je n'arrive pas a l'exprimer plus clairement !)

 

En testant j'ai vu qu'en créant un hook, je pouvais rajouter un nouvel emplacement pour y ajouter des modules de type block... mais vous me dites qu'il ne sont pas la pour faire du design...

 

Comment faire pour ajouter une colonne supplémentaire à la mise en page actuelle ?

Doit on baser toute nouvelle mise en page, uniquement sur les hook existants ?

Link to comment
Share on other sites

Voici a peu pres la tete que peut avoir "au max" votre template actuellement

 

===============================

=.........................HOOK...............................=

===============================

=.H.=.................HOOK........................=.H.=

=.O.=========================.O.=

=.O.=.....................................................=.O.=

=.K.=...................HOOK.......................=.K.=

=....=.......................................................=....=

=....=.......................................................=....=

=....=.......................................................=....=

===============================

=............................HOOK............................=

 

Avec respectivement les hook:


  • [li]header[/li]
    [li]leftColumn[/li]
    [li]top[/li]
    [li]rightColumn[/li]
    [li]home ?[/li]
    [li]footer (il me semble que celui-ci n'est pas encore de base)[/li]

 

Je ne vois pas vraiment ou il manque des hooks ::)

 

 

Sinon je suis d'accord que si vous souhaitez afficher des modules de type block, il vous faut un hook, mais je ne pense pas qu'il soit necessaire d'en rajouter. Ceux presents de base devraient suffires non ?

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