Jump to content

Créer un block dans la page "mon compte"


Recommended Posts

Bonjour, je suis en phase de développement d'un module prestashop. Cependant, la gestion des hook reste trop floue pour moi. J'aimerais afficher un block dans la page "mon compte" de prestashop pour l'utilisateur, cependant, je n'arrive pas à l'afficher.

Dans le corps de mon module, j'ai lancé l'installation du hook désirer :


public function install() {
/* .... */
return parent::install() && $this->registerHook('DisplayMyAccountBlock');
    return true;
/* ... */
}

Et j'ai bien établi ma fonction :
public function hookDisplayMyAccountBlock($params)
    {
      return $this->display(__FILE__,'displayMyAccountBlock.tpl');
    }

Qui renvoie donc ma page view/template/hook/displayMyAccountBlock.tpl :
<a class="col-lg-4 col-md-6 col-sm-6 col-xs-12" id="upload-link" href="http://localhost/test2-prestashop/link">
    <span class="link-item">
          Uploads
    </span>
</a>

Cependant, je n'ai aucun block qui s'affiche. Qu'ais-je fait de mauvais ? Qu'ais-je oublié ?
Je rappelle donc que je ne suis pas un expert, de plus je suis nouveau sous prestashop. Merci de vos réponses ! :)

Edited by rygegor (see edit history)

Share this post


Link to post
Share on other sites

J'ai donc pris exemple sur le module que BeComWeb m'a conseiller d'exploiter, cependant, je dois très mal utiliser les hook, car je n'arrive toujours pas à afficher mon block :(

Je ne demande pas une solution miracle, mais je suis un peut coincer. J'ai lu et relu pas mal de docs, mais je reste au même point ou je n'arrive pas à afficher ce block pour les utilisateurs dans la partie "mon compte" :(

Share this post


Link to post
Share on other sites

42 minutes ago, rygegor said:

Mon template s'appelle bien displayMyAccountBlock.tpl, cependant, il se trouve dans racine/templates/hook/displayMaAccountBlock.tpl

 

Bin le module risque pas de te renvoyer le contenu du template alors... <_<

Essaye avec ça :

return $this->display(__FILE__,'templates/hook/displayMyAccountBlock.tpl');

 

Share this post


Link to post
Share on other sites

Citation

return $this->display(__FILE__,'templates/hook/displayMyAccountBlock.tpl');

J'ai oublié de le réécrire lorsque j'ai donné mon code, mais le chemin est déjà correctement mis dans mon code :wacko:

Je viens de remarquer que mon hook ne s'installe pas, Lorsque je suis dans la partie back-office, Apparence-possition, mon module n'apparaît pas. Donc je présume que mon hook ne s'installe pas et que mon erreur proviens sûrement de là ? Qu'en pensez-vous ?

Share this post


Link to post
Share on other sites

Déjà dans la fonction d'install c'est $this->registerHook('displayMyAccountBlock').

Le "d" est en minuscule.

Ensuite tu as essayé de vider le cache après avoir réinitialisé le module ?

Et si ça ne fonctionne pas, essaye d'installer blockwishlist. S'il ne s'affiche pas non plus c'est peut-être que le hook est absent du template my-account.tpl (celui du thème).

Share this post


Link to post
Share on other sites

Le 24/03/2018 à 11:23 AM, BeComWeb a dit :

Déjà dans la fonction d'install c'est $this->registerHook('displayMyAccountBlock').

Le "d" est en minuscule.

Ensuite tu as essayé de vider le cache après avoir réinitialisé le module ?

Et si ça ne fonctionne pas, essaye d'installer blockwishlist. S'il ne s'affiche pas non plus c'est peut-être que le hook est absent du template my-account.tpl (celui du thème).

Malheureusement, je ne peu pas installer d'installer "blockwishlist", c'est un module pour la version 1.6, je suis sous prestashop 1.7 :wacko:
Oui, je vide le cache à chaque tentative de réinstallation :D
Comment ça le hook serait absent du template my-account.tpl ?

Edited by rygegor (see edit history)

Share this post


Link to post
Share on other sites

J'avais déjà vu que ça avait changer le nom, j'avais bien complété mon code comme ceci :

        public function hookDisplayCustomerAccount($params){
                   return $this->display(__FILE__,'fichier.tpl');
        }

        public function hookDisplayMyAccountBlock($params){
                  return $this->hookDisplayCustomerAccount($params);
        }

Mais il m'a simplement fallu repasser par une base vide de mon module. Au final, je n'ai pas compris d'où venait l'erreur, car j'ai laissé mon code tel quel et ça à fonctionner. La magie peut-être :D

Edited by rygegor (see edit history)

Share this post


Link to post
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
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More