Jump to content

Greffer un module sur un hook qui n'est pas prévu


Recommended Posts

Bonjour à tous,

 

tout est dans le titre : j'aimerai greffer un module sur un hook pour lequel il n'est pas prévu (par exemple le block newsletter sur le hook DisplayHome).

 

Je viens de lire qu'il était possible d'overrider les modules avec PS 1.6.0.11, mais je ne sais pas trop comment faire...

 

Je dois copier le fichier blocknewsletter.php dans override/modules et rajouter le hook dedans ? Ou juste créer un nouveau fichier blocknewsletter.php ou il n'y aurait que le nouveau hook ?

 

Merci de m'éclairer sur ce coup là :)

Link to comment
Share on other sites

Salut,

 

Dans ton module, ouvre le fichier blocknewsletter.php et trouve :

    public function hookFooter($params)
    {
        return $this->hookDisplayLeftColumn($params);
    }

juste en dessous, ajoute :

    public function hookHome($params)
    {
        return $this->hookDisplayLeftColumn($params);
    }

et là tu pourras greffer sur le DisplayHome ;)

 

Link to comment
Share on other sites

  • 2 years later...

Bonjour à tous,

Soyez indulgent avec moi car je suis nouveau sur le forum et dans l'utilisation de Prestashop, je travaille sur les versions 1.6 et 1.7.

Je suis actuellement en stage pour un diplôme de concepteur développeur informatique.

On me demande :

1) de gérer entièrement et dynamiquement les méthodes des différents hooks, (on doit pouvoir greffer le module sans avoir à créer la méthode du nouveau hook).

2) de pouvoir créer un hook depuis le module DataThemeAdmin : ajouter un mini formulaire dans la configuration du module input type texte + submit qui appelle register hook.

 

Merci pour votre attention

Link to comment
Share on other sites

46 minutes ago, mamen said:

1) de gérer entièrement et dynamiquement les méthodes des différents hooks, (on doit pouvoir greffer le module sans avoir à créer la méthode du nouveau hook).

 

Salut,

Prestashop 1.7 ajoute une nouvelle technique pour l’affichage des modules en front office. L’objectif est de permettre de greffer le module sur tous les hooks possibles, indépendamment de la déclaration du hook dans le cœur du module.

Exemple

Le module blocklanguages ne pouvait précédemment être greffé uniquement sur :

  1. hookDisplayTop
  2. hookDisplayNav
  3. hookDisplayHeader (Uniquement pour l’ajout des assets css/js)

Ainsi si on souhaitait greffer le module sur le hookDisplayLeftColumn, nous devions implémenter le hook dans le coeur du module via un override du module. (Lorsqu’on fait bien les choses…)

Désormais renommé en ps_languageselector, ce module ne déclare plus les hooks précédents mais implémente la nouvelle interface WidgetInterface qui implique l’ajout de 2 fonctions dans le cœur du module :

  1. renderWidget
  2. getWidgetVariables

Cette nouvelle architecture permet de greffer le module sur tous les hooks du front office indépendamment de la déclaration implicite dans le cœur du module.

C’en est donc terminé des overrides dans le but d’ajouter un hook pour l’afficher dans un autre hook que ceux prévus initialement par l’auteur du module !

Je t'invite à jeter un oeil dans les modules natifs de Prestashop 1.7 pour voir des exemples d’implémentations.

A+

Link to comment
Share on other sites

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