Fonctionnement des hooks sur PEEL, à partir de la version 8

1 message dans ce sujet

Posté(e) (modifié) · Signaler ce message

Un hook est un événement qui permet d'implémenter facilement l'appel à des fonctionnalités de modules, sans avoir besoin de modifier le code PHP du logiciel et donc faciliter la mise en place et les mises à jour par la suite.

Jusqu'à la version 7 :
--------------------
Historiquement, des hooks de contenu sont implémentés depuis de très nombreuses versions, appelant des zones HTML personnalisables et par ailleurs l'affichage de modules visuels.
Par ailleurs, les fonctions d'affichage peuvent être surchargées avec des versions dans display_custom.php du dossier de modèle graphique.
En outre, de nombreuses préimplémentations de fonctions étaient faites dans le code PHP avec ou sans test suivant les modules présents.

Avec la nouvelle version 8 :
----------------------------
Des appels à des hooks sont implémentés à divers endroits du code, que ce soit pour de l'affichage ou des opérations invisibles telles que l'envoi d'emails, la gestion de colonnes supplémentaires dans la base de données, etc.

Par exemple, lors de l'affichage d'un produit, la ligne suivante est exécutée :

$output .= call_module_hook('product_details_show', array('id' => intval($_GET['id'])), 'output');

Tout module implémentant le hook product_details_show sera automatiquement appelé, et pourra dans ce cas précis renvoyer du HTML. Mais il peut aussi implémenter l'appel à un tag javascript utilisant l'id du produit, ou toute autre opération.

Par exemple, le module last_views implémente ce hook, sous forme de fonction.

 * On actualiste la liste des produits visités avec le produit qui vient d'être vu
 *
 * @param array $params
 * @return
 */
function last_views_hook_product_details_show($params) {


Autre exemple :
Lors du remplacements automatique de tags dans du texte à afficher, le hook template_tags est appelé. Le module Carrousel (module optionnel) qui est sous la forme d'une classe, implémente ce hook en tant que méthode.

   

/**
     * Remplacement de tags spécifiques au module dans du contenu
     *
     * @param array $params
     * @return
     */
    public function hook_template_tags($params) {
        $template_tags = array();
        if(String::strpos($params['text'], '[AFFICHE_CARROUSEL_REFERENCE]') !== false) {
            $template_tags['AFFICHE_CARROUSEL_REFERENCE'] = Carrousel::display('references', true);
        }
        return $template_tags;
    }


 

Modifié (le) par Simon développeur PEEL

Partager ce message


Lien à poster
Partager sur d’autres sites
Ce sujet ne peut plus recevoir de nouvelles réponses.

Twitter Advisto ecommerce

Facebook PEEL Shopping