Jump to content

Hook et fonction install


Recommended Posts

Bonjour à tous et toutes,

 

Je débute dans prestashop et essaye de mettre un hook en place dans la version 1.5

 

J'ai donc dans mon header.tpl

{hook h="MonHook"}

 

Dans le module categories.php

 

function hookMonHook($params)

{

return $this->hookLeftColumn($params);

}

 

et je dois mettre aussi le code pour la création automatique dans la BDD de mon hook

($this->registerHook('MonHook'))

 

Mais où exactement dans le code ci-dessous ?????

public function install()
{
 if (!parent::install() ||
  !$this->registerHook('leftColumn') ||
  !$this->registerHook('footer') ||
  !$this->registerHook('header') ||
  // Temporary hooks. Do NOT hook any module on it. Some CRUD hook will replace them as soon as possible.
  !$this->registerHook('categoryAddition') ||
  !$this->registerHook('categoryUpdate') ||
  !$this->registerHook('categoryDeletion') ||
  !$this->registerHook('actionAdminMetaControllerUpdate_optionsBefore') ||
  !$this->registerHook('actionAdminLanguagesControllerStatusBefore') ||
  !Configuration::updateValue('BLOCK_CATEG_MAX_DEPTH', 4) ||
  !Configuration::updateValue('BLOCK_CATEG_DHTML', 1))
  return false;
 return true;
}

 

Après faut il greffer la position du module ?

 

Merci de votre aide.

Link to comment
Share on other sites

Normalement, la fonction $this->registerHook() accroche le hook aux positions que tu spécifies.

Si l'accrochage s'est bien passé, la fonction retourne TRUE. Sinon, elle retourne FALSE.

Il faut bien sur que ton code php contienne les procédure correspondant à chacun des hooks que tu veux rattacher!

Donc là, sur le code que tu as donné en exemple, il faut avoir les 8 procédures de hook!

Link to comment
Share on other sites

Comme ça:

public function install()
{
 if (!parent::install() ||
  !$this->registerHook('monHook') ||
  !$this->registerHook('leftColumn') ||
  !$this->registerHook('footer') ||
  !$this->registerHook('header') ||
  // Temporary hooks. Do NOT hook any module on it. Some CRUD hook will replace them as soon as possible.
  !$this->registerHook('categoryAddition') ||
  !$this->registerHook('categoryUpdate') ||
  !$this->registerHook('categoryDeletion') ||
  !$this->registerHook('actionAdminMetaControllerUpdate_optionsBefore') ||
  !$this->registerHook('actionAdminLanguagesControllerStatusBefore') ||
  !Configuration::updateValue('BLOCK_CATEG_MAX_DEPTH', 4) ||
  !Configuration::updateValue('BLOCK_CATEG_DHTML', 1))
  return false;
 return true;
}

Link to comment
Share on other sites

Non, cela ne fonctionne toujours pas !!!!

 

Je veux mettre le module Catégories dans le header de la page j'ai donc fais ceci :

 

Dans header.tpl

{hook h="NuevoHook"}

 

Dans categories.php

public function install()
{
if (!parent::install() ||
!$this->registerHook('NuevoHook') ||/**/
!$this->registerHook('leftColumn') ||
!$this->registerHook('footer') ||
!$this->registerHook('header') ||

/*plus bas dans le code de cette page*/

public function hookRightColumn($params)
{
return $this->hookLeftColumn($params);
}
/*debut*/
function hookNuevoHook($params)
{ 
return $this->hookLeftColumn($params);
}
/*fin*/

Je n'ai pas de création auto dans ma BDD et donc pas de possibilité de greffer le module Catégories sur le nouveau hook ?

 

Merci de votre aide

PS : je suis en local avec wampserveur

Link to comment
Share on other sites

Non justement j'ai lu dans le forum que si on met la ligne d'install

!$this->registerHook('NuevoHook') ||

 

c'est pour justement faire la création auto dans la BDD.

Car en effet si je le créé manuellement bien sur cela fonctionne.

Link to comment
Share on other sites

La fonction que tu indiques

$this->registerHook('NuevoHook')

Permet effectivement de rattacher le module au hook dans la base de données, mais il faut que le hook existe!

Cette fonction ne fait que du rattachement.

Le hook 'NuevoHook' doit exister en base, ce qui permettra à d'autre modules (en plus du tien) de s'y rattacher...

Il doit également exister quelque part dans les TPL pour pouvoir être appelé.

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