Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore pdf-tesetr

pdf-tesetr

Published by rayen.hidri, 2017-11-06 11:10:53

Description: pdf-tesetr

Search

Read the Text Version

Ajoutez des hooks personnalisés à votre Prestashop La gestion des hooks sur Prestashop 1.6, est relativement simple. En plus de l’éditeur visuel qui permet dedéplacer la position des modules selon l’emplacement où ils sont greffés (le live-edit du back office dans lesous menu modules -> positions) , le back-office permet également de les réagencer de façon rapide et précise.Il peut arriver que l’on aie besoin d’ ajouter un hook personnalisé sur son thème, comme par exemple pourafficher du contenu sur toutes les pages produit.Il existe deux moyens d’effectuer cette opération, toutes demandant un ajout dans la base de données.L’une manuellement via la base de données, l’autre directement lors de la création d’un nouveau module àl’aide d’une fonction.Nous nous intéresserons à la première méthode1ère étape : ajouter le hook dans la base de données : Dans la base de données de Prestashop se trouve une table nommée ps_hook (selon le préfixe que vous avezchoisi de donner à vos tables).Cette table liste tous les hooks disponibles sur votre Prestashop. Retrouvez les tutos sur www.jeform.fr | tel 06 07 10 60 25 Jef CERJAK FORMATEUR Enregistré sous le n° 73 31 07673 31 auprès de la DIRECTE Midi Pyrénées - SIRET: 52982618200022

Il faut ajouter un hook à cette table. La requête à effectuer est la suivante :1 INSERT INTO `MaBaseDeDonnées`.`ps_hook` (2 `id_hook` ,3 `name` ,4 `title` ,5 `description` ,6 `position` ,7 `live_edit`8)9 VALUES (10 NULL , 'DisplayMonHook', 'DisplayMonHook', 'Ma description de DisplayMonHook', '1', '1'11 );Avec ceci nous avons donc précisé le nom du hook, son titre, une petite description, une visibilité, et si l’onpeut le gérer via live edit.Notez au passage que l’identifiant du hook est en auto-incrément, inutile donc de le renseigner.Si vous ne maîtrisez pas les requêtes sql, vous pouvez également insérer une nouvelle ligne dans la base dedonnées manuellement.Pour cela rendez vous dans la table ps_hook et cliquez sur l’onglet insérer et remplissez les différents champs. Retrouvez les tutos sur www.jeform.fr | tel 06 07 10 60 25 Jef CERJAK FORMATEUR Enregistré sous le n° 73 31 07673 31 auprès de la DIRECTE Midi Pyrénées - SIRET: 52982618200022

Overrider la classe FrontController Il éxiste plusieurs méthode pour apprendre à Prestashop que ce nouveau hook éxiste.Par exemple, on peut trouver dans le répertoire ‘Controller->Front les différents fichiers qui permettent laconstruction des contenu de template du thème. En fait chaque page du site dispose de son template (ou sacombinaison de templates ) Ceux-ci sont rangés dans le dossier thème. Et chacune des page dispose égalementde son fichier controller (aussi bien pour le front que pour l’admin)On pourrait donc se contenter de modifier le code d’un controller pour lequel on souhaite utiliser notre nouveauhook.Mais il y a mieux encore, nous allons modifier un controller général du front-office : le FrontController, Enmodifiant ce fichier ou plus précisément en créant un override de celui-ci, cela nous permettra d’utiliser notrenouveau hook où bon nous semble.Le FrontController.php se trouve dans le dossier /classes/controllers/FrontController.php.Nous allons juste utiliser une partie du code, légèrement modifié pour l’enregistrer sous un nouveau fichierFrontController.php que l’on place dans le dossier /override/classes/controllers.Lorsque l’on ajoute un fichier dans ce dossier override, on le protège d’un écrasement par une mise à jour dePrestashop.Quand il ya mise à jour de Prestashop, les dossiers et fichiers situés dans l’override ne sont pas écrasés par lanouvelle version.Le code à ajouter est celui-ci :<?phpclass FrontController extends FrontControllerCore{public function initContent(){ $this->process(); if (!isset($this->context->cart)) $this->context->cart = new Cart(); $this->context->smarty->assign(array( 'HOOK_HEADER' => Hook::exec('displayHeader'), 'HOOK_TOP' => Hook::exec('displayTop'), 'HOOK_MON_HOOK' => Hook::exec('DisplayMonHook'), 'HOOK_LEFT_COLUMN' => ($this->display_column_left ?Hook::exec('displayLeftColumn') : ''), 'HOOK_RIGHT_COLUMN' => ($this->display_column_right ?Hook::exec('displayRightColumn', array('cart' => $this->context->cart)) : ''), ));}}Le nouveau Hook est presque prêt ! Retrouvez les tutos sur www.jeform.fr | tel 06 07 10 60 25 Jef CERJAK FORMATEUR Enregistré sous le n° 73 31 07673 31 auprès de la DIRECTE Midi Pyrénées - SIRET: 52982618200022

Afficher son hook en front-office Pour afficher notre contenu dans ce Hook, il faut l’ajouter dans le template de notre choix.Ouvrez le fichier TPL de votre thème où vous souhaitez ajouter votre hook, et placer le code d’insertion duhook : {hook h=\"DisplayMonHook\"}Pour être plus rigoureux dans notre code et afin de pouvoir paramétrer en css le contenu de ce hook on ajouteune classe au hook en l’encapsulant dans une div comme ceci :< div class=\"MonHook\"> {hook h=\"DisplayMonHook\"}</div>Avant de l’utiliser pensez à vider votre cache, vous pouvez le faire via le back-office ou en supprimant lefichier class_index.php qui se trouve dans le dossier cachePour utiliser un module sur ce nouveau crochet, il vous faut l’appeler par une fonction dans le fichier php dumodule. Par exemple pour le module bloccms :public function hookDisplayMonHook($params) { return $this->displayBlockCMS(BlockCMSModel::RIGHT_COLUMN); }les paramètres entre les accolades affichent le contenu de bloc CMS comme il est affiché pour la colonne dedroite.Greffez le module sur ce nouveau hook, qui apparait maintenant dans la liste des hooks disponibles et le résultatdevrait apparaitre sans problème ! Retrouvez les tutos sur www.jeform.fr | tel 06 07 10 60 25 Jef CERJAK FORMATEUR Enregistré sous le n° 73 31 07673 31 auprès de la DIRECTE Midi Pyrénées - SIRET: 52982618200022


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook