ach34 Posted September 14, 2016 Share Posted September 14, 2016 Bonjour, Je veux exécuter une fonction dans blocklayered.tpl qui me permettrait de trier des couleurs différemment. J'ai essayé de mettre ma fonction dans blocklayered.php mais ça ne marche pas, pourtant c'est le même module. Merci de votre aide. Link to comment Share on other sites More sharing options...
Arnaud_69 Posted September 15, 2016 Share Posted September 15, 2016 Bonjour, Est-ce que tu pourrais indiquer dans le template quelle ligne(s) tu voudrais modifier STP ? Si ça ne marche pas, c'est que tu n'as peut être pas posé ta fonction au bon endroit... Eventuellement mettre ta fonction pour corriger si nécessaire. @+ Link to comment Share on other sites More sharing options...
ach34 Posted September 15, 2016 Author Share Posted September 15, 2016 (edited) Bonjour, Est-ce que tu pourrais indiquer dans le template quelle ligne(s) tu voudrais modifier STP ? Si ça ne marche pas, c'est que tu n'as peut être pas posé ta fonction au bon endroit... Eventuellement mettre ta fonction pour corriger si nécessaire. ma fonction est juste pour valider... elle est ligne 365 après //ATTRIBUTES dans \themes\ps_montheme\modules\blocklayered\blocklayered.php //ATTRIBUTES public function ADgetListColor() { return "ok"; } public function hookAfterSaveAttribute($params) { ... Après je l'appelle dans \themes\ps_montheme\modules\blocklayered\blocklayered.tpl <ul id="ul_layered_{$filter.type}_{$filter.id_key}" class="col-lg-12 layered_filter_ul{if isset($filter.is_color_group) && $filter.is_color_group} color-group{/if}"> {assign var='ADref' value=ADgetListColor()} <p>test : {$ADref} </p> J'ai l'erreur : Fatal error: Uncaught --> Smarty Compiler: Syntax error in template "/share/MD0_DATA/Web/www/X009_dec/dev/themes/ps_montheme/modules/blocklayered/blocklayered.tpl" on line 90 "{assign var='ADref' value=ADgetListColor()}" unknown function "ADgetListColor" <-- thrown in /share/MD0_DATA/Web/www/X009_dec/dev/tools/smarty/sysplugins/smarty_internal_templatecompilerbase.php on line 90 Merci de votre aide Edited September 15, 2016 by ach34 (see edit history) Link to comment Share on other sites More sharing options...
Arnaud_69 Posted September 15, 2016 Share Posted September 15, 2016 Mais tu ne peux pas assigner une fonction à exécuter dans smarty (ou tout du moins pas à ma connaissance) Ton code php tel que décrit ici doit retourner une valeur qui sera assignée dans smarty, d'où l'erreur normale que tu as : Fatal. Link to comment Share on other sites More sharing options...
ach34 Posted September 15, 2016 Author Share Posted September 15, 2016 (edited) Mais tu ne peux pas assigner une fonction à exécuter dans smarty (ou tout du moins pas à ma connaissance) Ton code php tel que décrit ici doit retourner une valeur qui sera assignée dans smarty, d'où l'erreur normale que tu as : Fatal. Je suis novice avec prestashop. Mais j'ai déjà fait une fonction dans themes\ps_montheme\product.tpl "getColor()" product.tpl {assign var="REF" value=$smarty.get.ref} {if $REFCOUL = $product->getColor($REF)|escape:'html':'UTF-8'} <p> Détails couleur : {$REFCOUL} </p> {/if} et la fonction je l'ai ajouté à override/classes/product.php public function getColor($ref) { return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' SELECT `desc` FROM `'._DB_PREFIX_.'COULEUR` WHERE `ref` = \''.pSQL($ref).'\''); } et ça marche ! Je pensais qu'en faisant de même ça marcherait avec blocklayered.tpl mais non. Est-ce possible de faire du php directement dans un .tpl ? Edited September 15, 2016 by ach34 (see edit history) Link to comment Share on other sites More sharing options...
ach34 Posted September 15, 2016 Author Share Posted September 15, 2016 Je crois que les baises {php} {/php} sont désactivées par défaut et ce n'est pas plus mal. Essaye : public static function ADgetListColor() { return "ok"; } Et dans ton tpl {assign var="REF" value=BlockLayered::ADgetListColor()} Après si tu nous en disait plus sur ce que tu veux comme tri, il a peu être plus simple ça marche ! Merci beaucoup ! Pour répondre à ta question sur le tri : j'ai des produits (du papier peint) qui sont déclinés en couleur mais se sont des produits qui peuvent avoir plusieurs fois la même couleur. Hors, prestashop ne permet pas d'associer une même couleur à plusieurs déclinaisons. (Pour moi la logique c'est la référence produit mais pour prestashop c'est l'attribut ce qui complique la gestion de ce type de produit). Je peux avoir un produit qui peut être décliné avec 3 blancs, 4 bleus... Donc j'ai, créé des attributs : blanc1, blanc2.... Mais lorsque je veux utiliser le "Bloc navigation à facettes", il m'affiche blanc1, blanc2.... Donc je veux regrouper les attributs par couleur et modifier le lien : Modifier <li class="nomargin col-lg-6"> <input class="color-option " name="layered_id_attribute_group_137" data-rel="137_3" id="layered_id_attribute_group_137" style="background: #9fa4ff;" type="button"> <label for="layered_id_attribute_group_137" name="layered_id_attribute_group_137" class="layered_color" data-rel="137_3"> <a href="http://nas2/DEC/index.php?id_category=18&controller=category#couleur-blanc1">blanc1<span> (4)</span></a> </label> </li> <li class="nomargin col-lg-6"> <input class="color-option " name="layered_id_attribute_group_138" data-rel="138_3" id="layered_id_attribute_group_138" style="background: #5c88ff;" type="button"> <label for="layered_id_attribute_group_138" name="layered_id_attribute_group_138" class="layered_color" data-rel="138_3"> <a href="http://nas2/DEC/index.php?id_category=18&controller=category#couleur-blanc2">blanc2<span> (1)</span></a> </label> </li> par ça <li class="nomargin col-lg-6"> <input class="color-option " name="layered_id_attribute_group_137" data-rel="137_3" id="layered_id_attribute_group_137" style="background: #ffffff;" type="button"> <label for="layered_id_attribute_group_137" name="layered_id_attribute_group_137" class="layered_color" data-rel="137_3"> <a href="http://nas2/DEC/index.php?id_category=18&controller=category#couleur-blanc1-blanc2">blanc<span> (5)</span></a> </label> </li> Merci de votre aide si vous avez une idée. 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