Jump to content

Procédure de création de hook et accrochage de module pour la version 1.5


Recommended Posts

Bonjour, je m'arrache les cheveux pour accrocher tout simplement le module blocktopmenu à un nouveau hook que je viens de créer.

 

Voila les opérations effectué:

1- j'ai été dans la base de donnée et j'ai ajouté mon hook "menu" dans la table ps-hook

INSERT INTO `Mabase`.`ps_hook` (`id_hook`, `name`, `title`, `description`, `position`, `live_edit`) VALUES (NULL, 'menu', 'mon menu', 'Emplacement du menu', '1', '0');

 

2- J'ai ajouté dans blocktopmenu.php

public function hookmenu($params)
{
 return $this->hookDisplayTop($params);
}

 

3- J'ai fait un override de la classe FrontController

<?php
class FrontController extends FrontControllerCore
{
  public function displayHeader()
 {
self::$smarty->assign(array(
'HOOK_MENU' => Module::hookExec('menu'),
'HOOK_AUTREHOOK' => Module::hookExec('autrehook')
));
return parent::displayHeader();
 }
}

 

 

4- J'ai ajouté à l'emplacement voulu, dans le fichier header.tpl le hook menu

{$HOOK_MENU}

 

5- J'ai greffé mon module sur le bon hook dans le backoffice.

 

 

 

Voila j'ai suivi la même procédure qu'avant avec la 1.4 et ça ne fonctionne pas, rien ne s'affiche.

 

Je ne comprend pas très bien le php mais je pense qu'il y a un problème dans l'override car le code ne me semble pas à jour pour la 1.5

 

Pourriez vous m'aider à greffer ce module sur ce hook car je n'ai trouvé pour le moment aucune solution fonctionnel sur le forum, dans la doc ( qui est d’ailleurs quasi inexistante ) ou sur le web .

 

De plus je pense que ça servira à d'autre qui se pose la même question que moi.

 

Merci pour votre aide.

Link to comment
Share on other sites

Alors moi j'ai suivis un PDF (tuto) espliquatif... http://stephane-bacquer.com/PrestaShop-1.5.pdf.

 

Mais la solution proposé sa fonctionné pas :wacko: en tous cas pas complètement.

Cependant j'ai trouvé une solution plus radical qui fonctionne parfaitement avec la version 1.5.x

 

1- Vous aller dans le dossier racine du site puis dossier "classes/controller/FrontController.php

2- Vous éditez avec notpad ou coda pour moi par exemple et vous allez à la ligne ->448.

3- Vous allez voir cette function :

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_LEFT_COLUMN' => ($this->display_column_left ? Hook::exec('displayLeftColumn') : ''),

'HOOK_RIGHT_COLUMN' => ($this->display_column_right ? Hook::exec('displayRightColumn', array('cart' => $this->context->cart)) : ''),

 

VOUS RAJOUTEZ LES HOOKS MANUELLEMENT !!!!

 

'HOOK_BANNIER' => Hook::exec('topBanniere'),

'HOOK_MENU_HAUT' => Hook::exec('topMenuHaut'),

'HOOK_RECHERCHE' => Hook::exec('topRecherche'),

'HOOK_PANIER' => Hook::exec('boitePanier'),

 

PAR EXEMPLE POUR MOI !!!!

 

));

 

4- Vous allez dans les moduels que vous voulez gréffé sur un Hook prédéfini juste en haut par exemple.

5- Je prend le modules panier :

- Je reviens à la racine du site puis dossier modules/blockcart/blockcart.php

1.1- Vous partez à la ligne 167 et vous allez voir cette function :

public function install()

{

if (

parent::install() == false

|| $this->registerHook('top') == false

|| $this->registerHook('header') == false

 

TU RAJOUTE CETTE LIGNE

 

|| $this->registerHook('boitePanier') == false

|| Configuration::updateValue('PS_BLOCK_CART_AJAX', 1) == false)

return false;

return true;

}

6- Tu vas dans ton interface admin de prestashop puis modules puis tu cherche le modules "panier" tu désinstalle puis tu re-installe et voilà c'est autamatiquement ajoutez dans la table HOOK de la base de donnée c'est le seul qui fonctionne dans le tuto (PSD) en dessus ! sauf qu'il faut faire manuellement étape 3,4,5 !!!

 

Maintenant tu va positionné ton module sur le HOOK dans position dans ton interface Admin de prestashop...

 

7- Pour finir tu va ajoute la fonction smarty {$HOOK_PANIER} ou tu veux !!! dans tes fichiers .tpl ou autre !!!

 

Voilà j'espère que ça a répondu à ta question bonne continuation...! ^_^

Link to comment
Share on other sites

Avant l'étape 6- tu dois rajouté aussi dans le fichier "modules/blockcart/blockcart.php"

 

après la function ->

 

public function hookRightColumn($params)

{

if (Configuration::get('PS_CATALOG_MODE'))

return;

 

// @todo this variable seems not used

$this->smarty->assign('order_page', strpos($_SERVER['PHP_SELF'], 'order') !== false);

$this->assignContentVars($params);

return $this->display(__FILE__, 'blockcart.tpl');

}

 

 

public function hookboitePanier($params)

{

if (Configuration::get('PS_CATALOG_MODE'))

return;

 

// @todo this variable seems not used

$this->smarty->assign('order_page', strpos($_SERVER['PHP_SELF'], 'order') !== false);

$this->assignContentVars($params);

return $this->display(__FILE__, 'blockcart.tpl');

}

 

 

N'oublie pas de dégréffé le module sur les HOOK par défaut c'est çà passe cool !

Link to comment
Share on other sites

  • 1 year 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...