quentinvillanova Posted July 13, 2022 Share Posted July 13, 2022 (edited) Bonjour, Le problème est que lorsque j'active le cache Smarty en BO et que je recharge mon FO, certains éléments bougent, car le CSS de mes modules custom n'est pas mis en cache. Petite précision, le CSS des modules est déclaré directement dans le module et non dans le thème custom du site. Update 1 : J'ai essayé de le déplacer dans mon thème et le problème est toujours là. Update 2 : J'ai essayé de réinitialiser mon module, mais pas de changement. Merci d'avance. Edited July 13, 2022 by quentinvillanova (see edit history) Link to comment Share on other sites More sharing options...
HeineFR Posted July 13, 2022 Share Posted July 13, 2022 Bonjour, Est-ce que ton module custom utilise bien l'appel de CSS avec l'objet addCSS ? et utilises-tu la mise en cache CCC ? Link to comment Share on other sites More sharing options...
quentinvillanova Posted July 13, 2022 Author Share Posted July 13, 2022 Oui il utilise addCSS et j'ai activé le CCC. J'ai résolu mon problème à l'instant (je suis pas sur que ce soit la façon la plus propre, mais maintenant ça fonctionne). Dans la fonction renderWidget, j'avais "$this->getCacheId('un_id')" ; je l'ai tout simplement supprimé. Merci. Link to comment Share on other sites More sharing options...
Mediacom87 Posted July 13, 2022 Share Posted July 13, 2022 il y a 27 minutes, quentinvillanova a dit : Oui il utilise addCSS et j'ai activé le CCC. J'ai résolu mon problème à l'instant (je suis pas sur que ce soit la façon la plus propre, mais maintenant ça fonctionne). Dans la fonction renderWidget, j'avais "$this->getCacheId('un_id')" ; je l'ai tout simplement supprimé. Merci. Bonjour, très mauvaise idée, mais peut-être n'appelez-vous pas vos fichiers CSS au bon endroit dans le code ou de la bonne manière. AddCss c'est pour les vieux modules, maintenant, on utilise registerStyleSheet : https://devdocs.prestashop.com/1.7/themes/getting-started/asset-management/#with-a-front-controller-module Link to comment Share on other sites More sharing options...
quentinvillanova Posted July 13, 2022 Author Share Posted July 13, 2022 Je me doutais bien que ce n'était pas une bonne idée, mais je n'avais rien trouvé sur le net. Cependant, j'ai fait ce que vous me dites, mais ça ne fonctionne pas. Dans le code il ne reconnait pas registerStylesheet & registerJavascript. Sur le site j'ai l'erreur : Attempted to call an undefined method named "loadAsset" of class "MonModule". Link to comment Share on other sites More sharing options...
Manu-41 Posted July 13, 2022 Share Posted July 13, 2022 L avez vous place dans le thème enfant ? Si oui, placez le dans le thème. J ai eu le même problème, et cela la corrigé. Link to comment Share on other sites More sharing options...
HeineFR Posted July 13, 2022 Share Posted July 13, 2022 1 hour ago, Mediacom87 said: AddCss c'est pour les vieux modules Ah, merci pour l'info 😁 Link to comment Share on other sites More sharing options...
quentinvillanova Posted July 13, 2022 Author Share Posted July 13, 2022 1 hour ago, Manu-41 said: L avez vous place dans le thème enfant ? Si oui, placez le dans le thème. J ai eu le même problème, et cela la corrigé. Oui j'ai essayé, mais pas de changement. Link to comment Share on other sites More sharing options...
Mediacom87 Posted July 13, 2022 Share Posted July 13, 2022 Bien entendu, si vous utilisez cette méthode, il faut que le module soit greffé sur hookActionFrontControllerSetMedia Link to comment Share on other sites More sharing options...
quentinvillanova Posted July 13, 2022 Author Share Posted July 13, 2022 Je n'ai pas ce hook Link to comment Share on other sites More sharing options...
Mediacom87 Posted July 13, 2022 Share Posted July 13, 2022 En même temps, comme je ne sais pas ce que vous cherchez à faire, j'ai donné le premier lien, mais si on prend le temps de lire la page, le paragraphe suivant correspond peut-être plus à votre besoin https://devdocs.prestashop.com/1.7/themes/getting-started/asset-management/#without-a-front-controller-module Link to comment Share on other sites More sharing options...
quentinvillanova Posted July 13, 2022 Author Share Posted July 13, 2022 Merci de prendre de votre temps pour m'aider en tout cas. De base, le module utilisait "addCSS" de cette façon : public function loadAsset() { $this->context->controller->addCSS($this->_path . 'views/css/monmodule.css', 'all'); $this->context->controller->addJS($this->_path . 'views/js/monmodule.js', 'all'); } Pour utiliser le hook comme sur le lien que vous me donnez, je remplace la fonction "loadAsset()" par ça : public function hookActionFrontControllerSetMedia($params) { $this->context->controller->registerStylesheet($this->_path . 'views/css/monmodule.css', 'all'); $this->context->controller->registerJavascript($this->_path . 'views/js/monmodule.js', 'all'); } Sauf que en faisant ça, mon IDE dit que les "register..." sont undefined et j'ai l'erreur suivante sur mon FO : Attempted to call an undefined method named "loadAsset" of class "MonModule". Link to comment Share on other sites More sharing options...
Tom Girou Posted July 13, 2022 Share Posted July 13, 2022 C'est parce que dans votre module vous avez quelque part une instruction qui utilise la fonction que vous venez de supprimer. Quelque chose du genre $myvar->loadAsset(); Il vous faut enlever cette ligne ou du moins la commenter pour le moment. Link to comment Share on other sites More sharing options...
quentinvillanova Posted July 13, 2022 Author Share Posted July 13, 2022 Just now, Tom Girou said: C'est parce que dans votre module vous avez quelque part une instruction qui utilise la fonction que vous venez de supprimer. Quelque chose du genre $myvar->loadAsset(); Il vous faut enlever cette ligne ou du moins la commenter pour le moment. Ah mais oui ! Je n'y avait pas pensé ! Merci. Je test et je reviens vers vous Link to comment Share on other sites More sharing options...
quentinvillanova Posted July 13, 2022 Author Share Posted July 13, 2022 Bon, et bien malheureusement mon problème original n'est pas résolu. Link to comment Share on other sites More sharing options...
Tom Girou Posted July 13, 2022 Share Posted July 13, 2022 Est-ce que vous avez bien register le hook dans le install() du module, et réinstallé votre module pour prendre en compte la modification ? Link to comment Share on other sites More sharing options...
quentinvillanova Posted July 13, 2022 Author Share Posted July 13, 2022 Ah non... Désolé, je suis encore débutant 😅 J'essaye tout ça et je vous tiens au courant. Link to comment Share on other sites More sharing options...
quentinvillanova Posted July 13, 2022 Author Share Posted July 13, 2022 (edited) C'est bon ! Ça fonctionne ! public function hookActionFrontControllerSetMedia($params) { $this->context->controller->registerStylesheet('monmodule-css', $this->_path . 'views/css/monmodule.css', ['media' => 'all', 'priority' => 200]); $this->context->controller->registerJavascript('monmodule-js', $this->_path . 'views/js/monmodule.js', ['position' => 'bottom', 'priority' => 200]); } Je n'avais pas tout pris ce qu'il y avait sur la doc 😅 Merci à tous de votre aide ! Edited July 13, 2022 by quentinvillanova (see edit history) 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