Jump to content

[RESOLU] CSS d'un module custom disparaît quand j'active le cache Smarty - Prestashop 1.7.8.6


Recommended Posts

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 by quentinvillanova (see edit history)
Link to comment
Share on other sites

  • quentinvillanova changed the title to CSS d'un module custom disparaît quand j'active le cache Smarty - Prestashop 1.7.8.6

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

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

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

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

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

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

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 by quentinvillanova (see edit history)
Link to comment
Share on other sites

  • quentinvillanova changed the title to [RESOLU] CSS d'un module custom disparaît quand j'active le cache Smarty - Prestashop 1.7.8.6

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...