Jump to content

Recommended Posts

Bonjour,

 

Alors voila mon problème, j'ai créer un nouveau hook, modifier un module etc... J'arrive à afficher mon module dans mon hook correctement, mais seulement en modifiant le fichier FrontController.php dans classes/controller/FrontController.php

 

Je n'arrive pas à redéfinir la fonction iniContent() dans le dossier override de mon thème.

J'ai beau essayé de le mettre dans override/classes/ ou override/classes/controller/

Impossible.

 

Voila le code de la fonction initContent() surchargé.

 

<?php
class 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_MYHOOK' => Hook::exec('myHook'),
  '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)) : ''),
 ));
}
}
?>

 

 

Merci.

Edited by Gouterman (see edit history)
Link to comment
Share on other sites

  • 3 weeks later...

Bonsoir,

 

Merci pour ta réaction.

bon en fait j'ai suivi ce tuto http://www.ve-studio.net/blog/ajouter-un-hook-sur-votre-boutique-e-commerce-prestashop/

 

1. Exécutez cette requête dans votre base de données MySQL :

INSERT INTO ps_hook ( 'name', 'title', 'description', 'position', 'live_edit') VALUES ( 'myhook', 'myhook', NULL, 1, 1);

2.self::$smarty->assign(array(

'HOOK_MYHOOKFRED' => Module::hookExec('myhookfred'),

'HOOK_HEADER' => Module::hookExec('header'),

'HOOK_TOP' => Module::hookExec('top'),

'HOOK_LEFT_COLUMN' => Module::hookExec('leftColumn')

));

 

 

3. C'est la que ca devient compliqué :mellow:

Déclarez dans votre module (mymodule.php) votre nouveau hook afin de pouvoir acrocher votre module au dit hook. Pour exemple :

function hookMyhook($params){

return $this->hookRightColumn($params);

}

Etape 4 :

Dans votre fichier TPL, il vous suffit de positionner votre hook à l'endroit souhaité en y faisant tout simplement appel.

{$myhook}

En fait j'ai fait plusieurs essais différents. Ce n'est pas clair..dans quel fichier TPL '(celui du hook?) comment adapter la fonction exemple

Vivement que ce soit plus simple.

SI vous pouvez me guider pour la fin ce serait fort gentil....

Fred

Link to comment
Share on other sites

C'est le code exact que tu as utilisé?

Donne le INSERT que tu as fait. Si tu ne n'en souviens pas, cherche dans ps_look les valeurs exactes que tu as insérées.

Et fait un copier/coller du code que tu as inséré.

 

Et ton erreur, elle arrive quand tu fais quoi exactement?

Link to comment
Share on other sites

Bonjour,

 

Alors, de toute façon il faut oublier ce tuto qui est bon pour une 1.4 ; mais pas une 1.5.

 

Désormais, il faut ajouter son hook en base de données (je n'ai pas encore regardé pour la création en code) et dans son tpl indiquer:

{hook h="Myhook"}

 

Dans son fichier PHP du module, nous aurons ceci:

function hookMyhook($params){
return $this->hookRightColumn($params);
}

 

Et le tour est joué. :)

  • Like 1
Link to comment
Share on other sites

Ouf, première fois depuis que j'ai attaqué Presta que je poste :) C'est magique d'avoir quelqu'un de l'autre coté!

Merci donc d'avance Erikku

 

J'ai copié ceci (a peu près comme il était expliqué)

 

b_edit.png Modifierb_inline_edit.png Éditer en placeb_insrow.png Copierb_drop.png Effacer 98 cleancarroussel MyHookFred hookFred 1 0

 

J'ai l'impression que l'erreur vient après... dans les fichiers php/tpl

j'ai suivi le tuto en question...mais pas clair : dans quels fichiers doit on insérer du code?

 

L'ERREUR c'est dans "positions"/ insérer un module > le message est "vous ne pouvez pas greffer un module sur ce hook"

 

MERCI

 

Fred

Link to comment
Share on other sites

Donc le nom de ton hook, c'est 'cleancarroussel'.

Et si tu as utilisé le code que tu nous as donné

'HOOK_MYHOOKFRED' => Module::hookExec('myhookfred'),
// ...
function hookMyhook($params){

Be t'as pas utilisé deux fois le meme nom de hook, il te faut:

'HOOK_MYHOOKFRED' => Module::hookExec('cleancarroussel'),
// ...
function hookCleancarroussel($params){

Et dans le tpl:

$HOOK_MYHOOKFRED

PS: J'ai lu le code que de 1.5.0.13... Faut peut-etre adapter un peu pour ta version, mais deja, fixe ca.

Edited by Erikku (see edit history)
  • Like 1
Link to comment
Share on other sites

Bonjour,

 

Malgré plusieurs tutos, je n'arrive toujours pas à créer le Hook qui permette d'afficher un slider en pleine page comme ici http://www.lejardinduplaisir.com/

 

SVP si quelq'un peut me guider pas à pas... je me sentirais mieux...

 

J'ai opéré à ceci :

 

1. Exécutez cette requête dans votre base de données MySQL :

INSERT INTO ps_hook ( 'name', 'title', 'description', 'position', 'live_edit') VALUES ( 'myhook', 'myhook', NULL, 1, 1);

98 cleancarroussel MyHookFred 1 0

 

 

2. dans le frontcontroler.php, j'ai modifié comme ceci

 

));

self::$smarty->assign(array(

'HOOK_HEADER' => Module::hookExec('header'),

'HOOK_TOP' => Module::hookExec('top'),

'HOOK_LEFT_COLUMN' => Module::hookExec('leftColumn')

'HOOK_CLEANCARROUSSEL' => Module::hookExec('cleancarroussel'),

 

3. dans le PHP du module Caroussel, j'ai modifié comme ceci

 

function install()

{

if (

!parent::install() OR

!$this->registerHook('header') OR

!$this->registerHook('footer') OR

!$this->registerHook('cleancarroussel') OR

!$this->registerHook('home') OR

!$this->registerHook('top') OR

!Configuration::updateValue('WHERE_TO_HOOK', 'home') OR

!Configuration::updateValue('CLEAN_CAR_WIDTH', '556') OR

!Configuration::updateValue('CLEAN_CAR_HEIGHT', '220') OR

!Configuration::updateValue('CLEAN_CHANGE_SPEED', 4000) OR

!Configuration::updateValue('SHARE_CAR', 1)

)

return false;

return true;

 

RESULTAT PERMANENT error2.pngCe module ne peut être accroché à ce hook

 

QUESTIONS :

- doit on modifier aussi le fichier php du header ? le fichier tpl ? pour que le Hook s'installe juste en dessous des menus ?

- doit on modifier le fichier TPL du module cleancarroussel ?

- <_< et est ce que le systeme de hook sera plus simple dans la version 1.5 ?

 

 

mon site >>> www.seasexandsun.be

 

Merci d'avance parce que là...je sue. :wacko:

 

Fred

 

PS : Upgrade de la version 1.4.9 qui est sortie hier ? en tant que néo user de PS; j'hésite... merci aussi pour cette question.

Link to comment
Share on other sites

Perso, je ne répondrais qu'à ceci:

 

- <_< et est ce que le systeme de hook sera plus simple dans la version 1.5 ?

 

Oui. Très. Ils sont dynamiques (mais ce n'est pas l'objet).

 

Le principe des hooks en 1.5, c'est ceci:

  • On a plus besoin de requête SQL pour ajouter un hook ;
  • Lorsque l'on accroche un module à un hook, le système rajoute le hook si celui n'existe pas ;
  • Au niveau des TPL, plus besoin de modifier un fichier cœur pour ajouter une variable reprenant le résultat de l’exécution d'un hook ;
  • Dans le TPL, on ajoute une variable smarty de ce genre: {hook h='myHook'} et le résultat est affiché là-même ;

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