Jump to content

Ajout d'un hook en version 1.4.5


Recommended Posts

Bonjour,

 

J'essaie d'ajouter un nouveau hook à prestashop, mais sans succès. Et pourtant il me semble avoir fait ce qu'il faut (en suivant les tutos):

 

Nom du hook: TestHook

- Création du hook en base avec phpmyadmin dans ps_hook

- Modification du fichier classes/FrontController.php:

'HOOK_TESTHOOK' => Module::hookExec('TestHook'),

- Modification d'un fichier tpl. J'ai choisi header.tpl:

<body ...>
...
{$HOOK_TESTHOOK}
...
</body>

- Mise en place dans mon module:

public function install() {
			$languages = Language::getLanguages(false);
			if(!parent::install()) return false;
			if (!$this->registerHook('TestHook')) return false;
			return true;
}
public function hookTestHook($params) {
			global $smarty;
			return $this->display(__FILE__, 'testmodule.tpl');
}

 

Ai-je oublié quelque chose ? J'ai mis dans mon tpl:

<p>
			<em>
					lsdfksdklsfskfskfkslfjsdkjsfjskjfsklfsfsdk sjkfnsj n sd sdsfnsjk
			</em>
</p>

 

J'espère que vous pourrez m'aider.

Link to comment
Share on other sites

J'essaierai de faire comme ceci

 

public function install()

{

$languages = Language::getLanguages(false);

if(!parent::install()) return false;

 

if (!$this->registerHook('TestHook')) return false;

if (!$this->registerHook('hookHeader')) return false;

 

return true;

}

 

public function hookHeader($params)

{

 

return hookTestHook($params);

}

Link to comment
Share on other sites

Bonjour.

 

Il serait intéressant de rester dans les normalisations de Prestashop : à savoir que le premier mot n'a pas sa première lettre en majuscule. C'est un détail, mais par moment ça peut changer pas mal de chose. M'enfin.

 

Ensuite, tentez de mettre un die('toto') dans la fonction hookTestHook, pour voir si cette dernière est bien appelée, cela vous permettra de situer un peu mieux le problème.

Link to comment
Share on other sites

Tout me semble correct, je pense qu'il doit s'agir d'un problème de "casse"

 

un exemple de code :

 

function install()
{
   if ( ! parent::install())  return false;

   $hooked = Db::getInstance()->ExecuteS('SELECT * FROM `'._DB_PREFIX_.'hook` WHERE name = "slider"');
   if (!is_array($hooked) || sizeof($hooked) == 0)
  	 Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'hook` (
  	 `id_hook` ,`name` ,`title` ,`description` ,`position`)
  	 VALUES (NULL , "slider", "Slider", "Slider page", "1");');

   if (!$this->registerHook('slider') )  return false;

   return true;
}

function hookSlider($params)
{
....

 

et dans l'override :

 

'HOOK_SLIDER' => Module::hookExec('slider'),

Link to comment
Share on other sites

  • 3 weeks later...

Bonjour,

 

désolé pour le temps de réponse, le forum ne me préviens pas des réponses même si je choche la case ... à moins que les mails arrivent en spam ... Je vais vérifier ça.

 

Je vais tester ces solutions et je vous dirai si j'ai des problèmes. Merci :)

Link to comment
Share on other sites

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