Bonjour,
Version de Prestashop : 1.7.8.5
Je suis actuellement en train de réaliser le module du livre "Prestashop, Développez vos propres modules e-commerce", le soucis c'est que malgré le fait qu'il soit annoncé pour être compatible 1.7, ce n'est pas réellement le cas car bon nombre de méthodes sont obsolètes.
Je suis en train de réaliser un FrontController via un module. Il est indiqué qu'il faut créer une méthode setMedia dans le contrôleur, pour surcharger le comportement par défaut de setMedia() avec addCSS et addJS. D'après mes recherches sur la doc officielle, cela a été actualisé par registerStylesheet et registerJavascript:
https://devdocs.prestashop.com/1.7/themes/getting-started/asset-management/#with-a-front-controller-module
J'ai évidemment vidé les caches et réinitialisé le module.
La page fonctionne bien pas de problème, le var_dump retourne "true" donc il passe bien par setMedia, néanmoins aucun appel n'est fait sur les fichiers css et js. J'ai essayé plusieurs méthode en ligne, mais aucune ne fonctionne, j'en appel donc à vous. Voici mon code :
public function setMedia() { parent::setMedia(); //// Le var_dump ci-dessous retourne true var_dump(file_exists('modules/' . $this->module->name . '/views/css/mymodcomments.css')); $this->registerStylesheet( 'module-modulename-style', 'modules/' . $this->module->name . '/views/css/mymodcomments.css', [ 'media' => 'all', 'priority' => 200, ] ); $this->registerJavascript( 'module-modulename-simple-lib', 'modules/' . $this->module->name . '/views/js/mymodcomments.js', [ 'priority' => 200, ] ); }
Edit : Voici toutes les techniques que j'ai essayé (copier/coller de stackoverflow et forum que j'ai trouvé, je n'ai pas pris la peine de modifier le code pour vous les mettre sur le forum, mais j'ai bien mis les bons liens dans mon code lors des tests :
public function setMedia(){ parent::setMedia(); $this->context->controller->addJS(_PS_MODULE_DIR_.'/views/js/about_us.js'); }
public function setMedia() { parent::setMedia(); $this->addCSS($this->module->getPathUri().'views/css/style.css'); }
public function setMedia() { parent::setMedia(); $this->registerStylesheet('module-tuxinmodcartype-cartypeproducts-style', $this->module->getPathUri() . 'css/cartypeproducts.css'); $this->registerJavascript('module-tuxinmodcartype-cartypeproducts-js', $this->module->getPathUri() . 'js/cartypeproducts.js'); }
Merci à tous, je continue de chercher la solution dans mon coin