newton Posted November 16, 2020 Share Posted November 16, 2020 Bonjour a tous, je travail actuellement sur un module et je rencontre un problème que j'ai du mal a solutionner. Je suis attaché au hook displayProductPriceBlock et j'ai fais un sélecteur qui récupère des variables pour afficher ou pas mon module en fonction des pages affichées. Ca fonctionne parfaitement sur toutes les pages mais pas sur l'index. Sur l'index, sous le carroussel mon module se greffe bien et fonctionne correctement mais je ne peux pas le désactiver et le réactiver comme sur les autres pages. Si je met la page en "off" dans mon administration, le module et toujours présent. Si aprés avoir mis la page en off, je vide le cache le module disparait mais ne revient plus quand je remet sur "on" ???? J'ai refais un code minimaliste et totalement différent juste pour réglé ce problème mais code différent même problème. Quelqu'un aurait une idée du problème ??? Je vous met un bout du code :Merci d'avance pour votre aide dans mon tpl {if $bj11displayindex eq '1' && $page.page_name eq 'index'} Index {/if} {if $bj11displaycategory eq '1' && $page.page_name eq 'category'} Category {/if} {if $bj11displaysearch eq '1' && $page.page_name eq 'search'} Search {/if} Dans mon module : public function assignDisplayPage() { $displayindex = Configuration::get('DISPLAYINDEX'); $displaycategory = Configuration::get('DISPLAYCATEGORY'); $displaysearch = Configuration::get('DISPLAYSEARCH'); $this->context->smarty->assign('displayindex', $displayindex); $this->context->smarty->assign('displaycategory', $displaycategory); $this->context->smarty->assign('displaysearch', $displaysearch); } public function hookDisplayProductPriceBlock($params) { $this->assignDisplayPage(); return $this->display(__FILE__, 'display.tpl'); } Link to comment Share on other sites More sharing options...
newton Posted November 17, 2020 Author Share Posted November 17, 2020 Pour infos j'ai supprimé tous les modules de la page home et j'ai laissé uniquement le module "produits populaires" et c'est totalement pareil. J'installe le module les fonctions sont toutes ok même sur la page en question mais impossible de modifier, sauf en vidant le cash et après ça mon module n'apparaît plus ??? Peut être a cause des nombreuses fonction contenant : $this->_clearCache('*'); dans le module ps_featuredproducts ???? Bref toujours en galère ☹️ Link to comment Share on other sites More sharing options...
HeineFR Posted November 18, 2020 Share Posted November 18, 2020 Salut, Il me semble que la page d'accueil utilise un cache plus important que le reste, puisque j'ai remarqué que mes nouveautés ne sont actualisées que lorsque je vide le cache de mon shop. Si cela peut te donner une piste... Link to comment Share on other sites More sharing options...
newton Posted November 18, 2020 Author Share Posted November 18, 2020 Bonjour HeineFr et merci pour ton aide. effectivement j’en suis la, mon module peux prendre 3 options 1 On - en fonction avec un bouton et un champs 2 on - en fonction avec seulement le bouton 3 off - rien ne s’affiChe lorsque je j’installe le module à la première. actualisation de la page quelle que soit le mode choisi , il est bien exécuté. le problème après ça plus de réaction jusqu’à ce que je desinstalle, à ce moment les infos ajoutées disparaissent ou si je le met en off et que je vide le cache, le bouton disparaît mais en passant sur on rien ne revient, même pas en vidant le cache à nouveau. Link to comment Share on other sites More sharing options...
HeineFR Posted November 18, 2020 Share Posted November 18, 2020 Essaye de vider le cache en renommant le dossier prod en _prod par FTP pour voir si tu as le même résultat qu'en vidant simplement le cache par le BO. Personnellement j'utilise peu l'option de vidage du cache de prestashop mais un script perso faisant le ménage dans le dossier de cache. Link to comment Share on other sites More sharing options...
newton Posted November 18, 2020 Author Share Posted November 18, 2020 cool merci Heine ça m'a fait avancer un peux :-)En renommant prod mon module change bien d'état, une fois puis faut renommer le nouveau dossier prod généré pour changer encore. J'ai vu que dans FrontContainer.php mon module été assigné. Je vais analyser la totalité du dossier prod pour voir ça. Link to comment Share on other sites More sharing options...
HeineFR Posted November 18, 2020 Share Posted November 18, 2020 Ravi d'avoir fait avancer ton schmilblick Link to comment Share on other sites More sharing options...
newton Posted November 18, 2020 Author Share Posted November 18, 2020 dans prod/smarty/cache/ps_featuredproducts/1/1/0/36/f7/00/ un fichier 36f700ce74c59c295e7bc29dd523ad20b603bc3b.psfeaturedproductsviewste.php est généré. il crée l'affichage Produits populaires en dur. Je le supprime manuellement a chaque changement et tout est ok. Reste plus qu'a automatiser la tache. Merci encore pour ton aide c'est cool Link to comment Share on other sites More sharing options...
HeineFR Posted November 18, 2020 Share Posted November 18, 2020 Attention, je pense que les hash et répertoires servants aux fichiers de cache ne sont pas systématiquement identiques,, au lieu d'avoir /1/1/0/36/f7/00 tu pourrais tres bien te retrouver avec 4/12/45/aa etc Link to comment Share on other sites More sharing options...
HeineFR Posted November 18, 2020 Share Posted November 18, 2020 par contre, le repertoire "ps_featuredproducts", lui, est peut être fixe Link to comment Share on other sites More sharing options...
newton Posted November 18, 2020 Author Share Posted November 18, 2020 oui je pense effacer le répertoire ps_featuredproducts et tous les sous répertoires. Link to comment Share on other sites More sharing options...
HeineFR Posted November 18, 2020 Share Posted November 18, 2020 19 minutes ago, newton said: oui je pense effacer le répertoire ps_featuredproducts et tous les sous répertoires. 👍 Link to comment Share on other sites More sharing options...
newton Posted November 20, 2020 Author Share Posted November 20, 2020 voila c'est ok j'ai ajouter ce script qui est exécuté lorsque l'on clique sur le bouton du formulaire dans l'administration. $dir = '../var/cache/prod/smarty/cache/ps_featuredproducts/'; function deleteTree($dir){ foreach(glob($dir . "/*") as $element){ if(is_dir($element)){ deleteTree($element); rmdir($element); } else { unlink($element); } Link to comment Share on other sites More sharing options...
newton Posted November 21, 2020 Author Share Posted November 21, 2020 J'avais oublié deleteTree($dir); // On vide le contenu de notre dossier rmdir($dir); // Et on le supprime perso j'ai retiré la ligne rm($dir); car elle me retourne un warning si le dossier n'a pas été recréé et j'ai pas besoin d'effacer le dossier ps_featuredproducts mais juste son contenu. Link to comment Share on other sites More sharing options...
newton Posted November 21, 2020 Author Share Posted November 21, 2020 (edited) La fonction deleteTree() est interdite dans un module prestashop 😞 Dommage ça marchait nickel !!! Je voudrais la remplacer et forcer le ficher tpl a se recompiler, je pense a utiliser getCache() mais je ne suis pas a l'aise avec cette fonction. Quelqu'un aurait il des infos ?? Edited November 21, 2020 by newton (see edit history) Link to comment Share on other sites More sharing options...
HeineFR Posted November 26, 2020 Share Posted November 26, 2020 remet la fonction rmdir si elle marchait bien mais utilise @rmdir pour ne pas avoir de retour de message d'erreur 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