JML Posted March 17, 2022 Share Posted March 17, 2022 (edited) Bonjour à tous, Je cherche en vain à faire une petite modification de l'affichage du produit. Pour faire simple, sur la fiche produit, je osuhaite ce comportement : Si le produit affiché est dans la catégorie XX, alors on affiche le bloc, sinon rien. j'ai testé ce code sur précédemment qui fonctinnait sur 1.7.3 et qui ne marche plus en 1.7.8.4 {assign var='cats' value=Product::getProductCategories($product.id)} {if in_array(11, $cats)} <div>Bla blab</div> {/if} Note : je ne sais pas si cela à un lien mais j'ai enlevé la catégorie dans les urls produit en seo : {id}{-:id_product_attribute}-{rewrite}.html Avez-vous une idée ? PS : 1.7.8.4 Merci d'avance pour vos suggestions. Edited March 21, 2022 by JML Fixé (see edit history) Link to comment Share on other sites More sharing options...
Mediacom87 Posted March 17, 2022 Share Posted March 17, 2022 Bonjour, faites des var_dump sur les variables pour savoir ce que vous récupérez et normalement vous devriez identifier rapidement le souci. {assign var='cats' value=Product::getProductCategories($product.id)} {$cats|var_dump} Link to comment Share on other sites More sharing options...
JML Posted March 17, 2022 Author Share Posted March 17, 2022 Merci @Mediacom87 pour le coup de pouce ! Je ressort ceci array(2) { [0]=> string(1) "5" [1]=> string(2) "11" } array(2) { [0]=> string(1) "5" [1]=> string(2) "11" } Et j'ai besoin d'afficher seulement le produit est dans la catégorie 11. Link to comment Share on other sites More sharing options...
Mediacom87 Posted March 17, 2022 Share Posted March 17, 2022 Oh punaise je crois avoir compris. Vous avez un tableau contenant des string et vous cherchez un integer donc faite ainsi : {if in_array('11', $cats)} Cela devrait résoudre le socui Link to comment Share on other sites More sharing options...
JML Posted March 17, 2022 Author Share Posted March 17, 2022 Je inserer ce code : {assign var='cats' value=Product::getProductCategories($product.id)} {if in_array('11', $cats)} XXXXX {/if} Cela affiche bien le bloc... mais partout quelque soit la catégorie. Avez-vous une autre suggestion ? En tout cas super sympa de prendre le temps répondre. Merci Link to comment Share on other sites More sharing options...
Mediacom87 Posted March 17, 2022 Share Posted March 17, 2022 il y a une heure, JML a dit : Je inserer ce code : {assign var='cats' value=Product::getProductCategories($product.id)} {if in_array('11', $cats)} XXXXX {/if} Cela affiche bien le bloc... mais partout quelque soit la catégorie. Avez-vous une autre suggestion ? En tout cas super sympa de prendre le temps répondre. Merci là je n'ai plus d'idée à moins de m'amuser à essayer d'intégrer le code moi même dans une installe fraiche de Prestashop. Je vous laisse chercher pour le moment, car vous apprendrez plus avec toutes les pistes données, mais cela m'étonne que cela ne fonctionne pas comme il faut. Videz vous bien le cache à chaque modification ? Faites vous bien cela en mode debug pour identifier la moindre erreur ? Link to comment Share on other sites More sharing options...
Mediacom87 Posted March 17, 2022 Share Posted March 17, 2022 Deux demandes identiques dans la journée me pousse à chercher plus loin. donc testez ceci : {if $category->id == 11} Link to comment Share on other sites More sharing options...
JML Posted March 18, 2022 Author Share Posted March 18, 2022 Merci @Mediacom87, J'ai testé également et maheureusement sans succès, cela s'affiche partout sans prendre en compte l'id. PS : j'ai bien vidé le cache 🙂 Dans tous les cas, merci d'avoir cherché et suggeré des tests ! Link to comment Share on other sites More sharing options...
Mediacom87 Posted March 18, 2022 Share Posted March 18, 2022 C'est dingue, personne n'y arrive alors que moi cela fonctionne parfaitement testé sur plusieurs versions de Prestashop, corrigé pour prendre en compte l'appel sur les pages catégories et page produit, donc je ne comprends as ce que vous faites mal. {if (isset($category->id) && $category->id == 9) || (isset($category.id) && $category.id == 9)} Sur la page produit c’est un objet, sur la page catégorie c’est un tableau, les bonnes incohérence de PrestaShop par moment. Link to comment Share on other sites More sharing options...
JML Posted March 18, 2022 Author Share Posted March 18, 2022 Décidemment, quand ca ne veut pas, ca ne veut pas. Testé aussi bien sur PS 1.7.7.5 et 1.7.8.4. Meme resultat. Cela s'affiche partout. {if (isset($category->id) && $category->id == 11) || (isset($category.id) && $category.id == 11)} <div> XXX</div> {/if} Merci encore. Link to comment Share on other sites More sharing options...
Mediacom87 Posted March 18, 2022 Share Posted March 18, 2022 Je viens de tester à nouveau. Et bien entendu cela fonctionne sans le moindre souci pour moi. j’interviens sur le fichier de la page produit /themes/classic/templates/catalog/product.tpl juste après ce code {block name='product_details'} {include file='catalog/_partials/product-details.tpl'} {/block} je rajoute {if (isset($category->id) && $category->id == 9) || (isset($category) && is_array($category) && $category.id == 9)} <div class="row"> <div class="col-xs-12"> {l s='Toto is in the place!'} </div> </div> {/if} et j'obtiens le bon résultat : Et sur les autres catégories j'ai pas l'affichage Link to comment Share on other sites More sharing options...
JML Posted March 21, 2022 Author Share Posted March 21, 2022 Merci @Mediacom87, Après de multiple test en long en large et en travers, cela fonctionnne. Ma contrainte était e passer par un custum.tpl avec elementor dans le theme warehouse, il semble que le code ne fonctionnne pas en passant par là. J'aid onc ajouté au product.tpl et dans ce cas cela fonctionne. J'avoue ne pas comprendr epourquoi le code ne fonctionne pas dans le custum mais au final le comportement atttendu est la. Merci encore. 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