Jump to content
le_binr38

Ajouter texte dans la fiche produit (onglet)

Recommended Posts

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.

 

Share this post


Link to post
Share on other sites

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 !

 

 

Share this post


Link to post
Share on other sites

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',
                    )
            );    }
  • Like 1

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

×
×
  • Create New...

Important Information

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