le_binr38 Posted March 27, 2017 Share Posted March 27, 2017 Bonjour, Je suis sous prestashop 1.7, j'ai créé un module et je cherche à rajouter un nouvel onglet dans la fiche produit à côté de "description" et "détail du produit". J'ai rajouté le hook et la fonction adéquate suivante dans l'installation de mon module : dans ma fonction install du module : if(!$this->registerHook('displayProductTabContent')) { return false; } dans ma class : public function hookDisplayProductTabContent($params) { $html = "A afficher sur la fiche produit"; return $html; } J'ai bien mon point d'accorche "displayProductTabContent" dans la partie admin de greffé avec ce module, mais rien ne s'affiche sur la fiche produit. Pourtant si je fais la même chose avec "hookDisplayHome" le texte apparaît bien sur la home. Quelqu'un aurait-il déjà réussi à afficher un nouvel onglet avec du text dedans dans la fiche porduit ? Ou au pire un nouveau bloc autre que dans les onglets ? Merci par avance pour votre aide. Link to comment Share on other sites More sharing options...
le_binr38 Posted March 28, 2017 Author Share Posted March 28, 2017 Bonjour, Apparemment dans la version 1.7 il ne faut plus utiliser displayProductTabContent mais extraContent Le problème s'est qu'il ne s'agit pas d'un display hook. J'arrive à ajouter un onglet en intervenant directement dans le controlleur "product" juste après la ligne $product['extraContent'] = $extraContentFinder->addParams(array('product' => $this->product))->present(); Je rajoute alors ce code : $product['extraContent'] = array( array( 3, 'title' => 'test', 'content' => 'contenu test', ) ); J'ai bien m'on onglet test dans la fiche produit. Pour que tout soit propre je cherche à rajouter cet onglet sans toucher mon controller principal mais en faisant un override. J'ai essayé de mettre ce code pour rajouter des valeurs à ma variable produits : public function getTemplateVarProduct() { var_dump($this->product); $this->product['extraContent'] = array( array( 3, 'title' => 'test', 'content' => 'contenu test', ) ); parent::getTemplateVarProduct(); var_dump($this->product); } Mais ça ne marche pas, la clef "extraContent" ne se s'ajoute pas. Je ne suis pas loin, savez-vous comment je pourrai rajoter un valeur dans mon objet "produit" avant qu'il soir envoyer au template (par un override) Merci par avance pour votre aide ! Link to comment Share on other sites More sharing options...
le_binr38 Posted March 28, 2017 Author Share Posted March 28, 2017 Bonjour, J'ai trouvé, si ça peut intéresser quelqu'un voici la solution ;-) : Dans le controller ProductController overridé, il faut rajouter ces lignes pour intercepter les valeurs avant de les envoyer au template : public function initContent() { parent::initContent(); array_push($this->context->smarty->tpl_vars['product']->value['extraContent'], array( 3, 'title' => 'nouvel onglet', 'content' => 'contenu du nouvel onglet', ) ); } 1 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now