Zythom Posted March 17, 2022 Share Posted March 17, 2022 Bonjour à tous, je cherche à modifier le product-flag de mes produits en fonction de leur catégorie. En gros si un produit est dans la catégorie 11 alors afficher "occasion" au lieu de "nouveau", s'il est dans la catégorie 15 alors ne rien afficher, sinon comportement normal. Pour l'occasion je l'ai bien spécifié dans les options des produits en BO mais soit ça affiche "nouveau" soit rien du tout... A tout hasard j'ai tenté d'exploiter l'idée de @Mediacom87 dans ce topic en essayant de l'adapter à mes exigences, mais sans succès Si quelqu'un a une idée je suis tout ouï Merci d'avance Link to comment Share on other sites More sharing options...
Mediacom87 Posted March 17, 2022 Share Posted March 17, 2022 Bonjour, fichier /themes/votre_theme/templates/catalog/_partials/product-flags.tpl {block name='product_flags'} <ul class="product-flags js-product-flags"> {if $category->id == 11} <li class="product-flag">{l s='Refurb'}</li> {elseif $category->id != 15} {foreach from=$product.flags item=flag} <li class="product-flag {$flag.type}">{$flag.label}</li> {/foreach} {/if} </ul> {/block} Il suffira ensuite de traduire le terme Refurb en français et dans les autres langues de votre boutique. Link to comment Share on other sites More sharing options...
Zythom Posted March 17, 2022 Author Share Posted March 17, 2022 OK c'était bien plus simple que ce que je pensais 😅 Je teste ça dés que je peux et je reviens modifier le titre en [Résolu] ! Merci beaucoup @Mediacom87 🙏 Link to comment Share on other sites More sharing options...
Zythom Posted March 18, 2022 Author Share Posted March 18, 2022 Bon ben je n'éditerai pas le sujet tout de suite... L'idée semble ne pas vouloir fonctionner : cache presta vidé manuellement et via le BO, cache et cookies du navigateur vidés, rien n'y fait j'ai toujours le flag "nouveau" sur tous les produits, quelle que soit la catégorie. Et si je ramène la durée d'un nouveau produit à 0 jours alors il n'y a plus de flag nulle part. Bref le comportement normal... Je précise que le thème est un classic-child avec essentiellement des modifications css et une ou deux lignes dans head.tpl, footer.tpl et maintenance.tpl donc pas de quoi fouetter un chat :) Link to comment Share on other sites More sharing options...
Mediacom87 Posted March 18, 2022 Share Posted March 18, 2022 (edited) Version Prestashop ? Pourtant j'ai testé sur la 1.7.8.4 qui doit être la même sur ce point que la 1.7.8.3 et cela fontionne très bien, donc je ne sais pas ce que vous avez de particulier sur la votre, mais oui je n'ai pas testé sur les produits qui n'ont pas de flag, peut être que cela ne s'affiche pas du tout. Donc il faudrait rajouter la donnée avant l'appel vers ce tpl. Edited March 18, 2022 by Mediacom87 (see edit history) Link to comment Share on other sites More sharing options...
Mediacom87 Posted March 18, 2022 Share Posted March 18, 2022 Le souci vient des pages de listing de produit car sur la page produit cela fonctionne parfaitement même en 1.7.8.3 Link to comment Share on other sites More sharing options...
Mediacom87 Posted March 18, 2022 Share Posted March 18, 2022 (edited) {block name='product_flags'} <ul class="product-flags js-product-flags"> {if (isset($category->id) && $category->id == 9) || (isset($category.id) && $category.id == 9)} <li class="product-flag">{l s='Refurb'}</li> {elseif (isset($category->id) && $category->id != 15) || (isset($category.id) && $category.id != 15)} {foreach from=$product.flags item=flag} <li class="product-flag {$flag.type}">{$flag.label}</li> {/foreach} {/if} </ul> {/block} utilisez les bon id category Edited March 18, 2022 by Mediacom87 (see edit history) Link to comment Share on other sites More sharing options...
remyyyyy Posted March 18, 2022 Share Posted March 18, 2022 Il y a 12 heures, Zythom a dit : Bonjour à tous, je cherche à modifier le product-flag de mes produits en fonction de leur catégorie. En gros si un produit est dans la catégorie 11 alors afficher "occasion" au lieu de "nouveau", s'il est dans la catégorie 15 alors ne rien afficher, sinon comportement normal. Pour l'occasion je l'ai bien spécifié dans les options des produits en BO mais soit ça affiche "nouveau" soit rien du tout... A tout hasard j'ai tenté d'exploiter l'idée de @Mediacom87 dans ce topic en essayant de l'adapter à mes exigences, mais sans succès Si quelqu'un a une idée je suis tout ouï Merci d'avance Bonjour, Vous devriez utilisez le hook "hookActionProductFlagsModifier" dans un module personnalisé. Cdt Link to comment Share on other sites More sharing options...
Zythom Posted March 18, 2022 Author Share Posted March 18, 2022 4 hours ago, remyyyyy said: Bonjour, Vous devriez utilisez le hook "hookActionProductFlagsModifier" dans un module personnalisé. Cdt Merci pour l'idée @remyyyyy! J'avais quelques connaissances il y a quelques années, mais ne pas pratiquer m'a fait presque tout perdre et créer un module est d'un niveau un peu trop élevé pour moi 😅 Mais je garde l'idée, on ne sait jamais 4 hours ago, Mediacom87 said: {block name='product_flags'} <ul class="product-flags js-product-flags"> {if (isset($category->id) && $category->id == 9) || (isset($category.id) && $category.id == 9)} <li class="product-flag">{l s='Refurb'}</li> {elseif (isset($category->id) && $category->id != 15) || (isset($category.id) && $category.id != 15)} {foreach from=$product.flags item=flag} <li class="product-flag {$flag.type}">{$flag.label}</li> {/foreach} {/if} </ul> {/block} utilisez les bon id category Merci @Mediacom87je teste ça dés ce soir ! Link to comment Share on other sites More sharing options...
Zythom Posted March 18, 2022 Author Share Posted March 18, 2022 Je n'ai pas encore testé le dernier code mais juste petite précision : avec le premier bout de code fournit par Mediacom87 je viens de me rendre compte que cela fonctionne, mais uniquement sur la page produit. Par contre sur les pages catégories avec les listes produits cela ne fonctionne pas... peut-être si j'insère le code dans le categorie.tpl ou le product-list.tpl aussi ? Link to comment Share on other sites More sharing options...
Mediacom87 Posted March 18, 2022 Share Posted March 18, 2022 il y a 2 minutes, Zythom a dit : peut-être si j'insère le code dans le categorie.tpl ou le product-list.tpl aussi ? non, chez moi cela fonctionne encore faut il avoir bien vidé le cache de Prestashop. Link to comment Share on other sites More sharing options...
Zythom Posted March 18, 2022 Author Share Posted March 18, 2022 (edited) 5 minutes ago, Mediacom87 said: non, chez moi cela fonctionne encore faut il avoir bien vidé le cache de Prestashop. cache vidé dans le BO et via ftp, cache et cookies navigateur vidés également 🤷♂️ Edit : peut-être quelque chose qui traîne au niveau du serveur ou des dns car la traduction du 'refurb' n'est pas prise en compte en FO alors que OK dans le BO... Edited March 18, 2022 by Zythom (see edit history) Link to comment Share on other sites More sharing options...
Mediacom87 Posted March 18, 2022 Share Posted March 18, 2022 il y a 11 minutes, Zythom a dit : cache vidé dans le BO et via ftp, cache et cookies navigateur vidés également 🤷♂️ Edit : peut-être quelque chose qui traîne au niveau du serveur ou des dns car la traduction du 'refurb' n'est pas prise en compte en FO alors que OK dans le BO... ah ben si vous utilisez des caches en plus je n'y peut rien, puisque cela fait tout de même des années que je les déconseille. Link to comment Share on other sites More sharing options...
Zythom Posted March 18, 2022 Author Share Posted March 18, 2022 6 minutes ago, Mediacom87 said: ah ben si vous utilisez des caches en plus je n'y peut rien, puisque cela fait tout de même des années que je les déconseille. Alors là j'ai vraiment pas fait exprès c'est pas moi qui gère la partie hébergement 😅 Je vais aller jeter un coup d'oeil... Link to comment Share on other sites More sharing options...
Zythom Posted March 19, 2022 Author Share Posted March 19, 2022 Sur le site en ligne je ne comprends pas pourquoi mais cela ne fonctionne toujours pas sur les pages catégorie, uniquement sue la page produit... Par contre c'est rigolo mais en local le fichier fait planter le site BO et FO ! Aves cette erreur : header has allready been send by jesaisplustropquelfichier.tpl Si je supprime le produc-flag.tpl le site revient 🤷♂️ Bref, tant que ça plante pas en ligne ça me va. Link to comment Share on other sites More sharing options...
Mediacom87 Posted March 19, 2022 Share Posted March 19, 2022 prestashop est très capricieux en 1.7, par exemple entre la 1.7.8.3 et la 1.7.8.4 le même code ne provoque pas la même erreur au même endroit. sinon, essayez celui-ci {if (isset($category->id) && $category->id == 9) || (isset($category) && is_array($category) && $category.id == 9)} Link to comment Share on other sites More sharing options...
Zythom Posted March 21, 2022 Author Share Posted March 21, 2022 (edited) Voilà voilà... Après avoir attendu le "temps de propagation incompressible allant de 4 à 24h" des DNS (réponse d'ovh) je me retrouve avec une erreur 503 sur la page produit des produits concernés, et uniquement ceux-là. Et ce quel que soit celui des 3 codes que vous m'avez proposés... Mais je me demandais : lorsque à la création d'un produit, dans les options, on sélectionne "occasion" au lieu de "neuf", le comportement de base de prestashop ne devrait-il pas justement afficher ce flag "occasion" ? ci-dessous le copié/collé de l'erreur... Error 503 Backend fetch failed Backend fetch failed Guru Meditation: Varnish cache server Edited March 21, 2022 by Zythom (see edit history) Link to comment Share on other sites More sharing options...
Mediacom87 Posted March 21, 2022 Share Posted March 21, 2022 Donc, au regard des propos de votre hébergeur vous devez avoir activé l'option CDN de cet hébergeur et ... c'est la plantade. N'activez pas cette option et si vous voulez un vrai CDN il existe des solutions performantes https://www.mediacom87.fr/cloudflare-et-keycdn-le-couple-parfait-pour-prestashop/ Link to comment Share on other sites More sharing options...
Zythom Posted March 21, 2022 Author Share Posted March 21, 2022 Merci encore @Mediacom87 ! Étonnamment je n'arrive pas à me connecter à mon interface hébergeur pour aller vérifier...j'espère qu'ils n'ont pas encore leurs serveurs qui ont brûlé mdr Bref je regarderai tout ça demain. Link to comment Share on other sites More sharing options...
Mediacom87 Posted March 21, 2022 Share Posted March 21, 2022 C'est pour ce genre de choses que je déconseille depuis des années OVH pour leur offre mutualisée. https://www.mediacom87.fr/top-3-des-hebergeurs-mutualises-pour-prestashop/#o2switch Link to comment Share on other sites More sharing options...
Zythom Posted March 22, 2022 Author Share Posted March 22, 2022 (edited) 16 hours ago, Mediacom87 said: C'est pour ce genre de choses que je déconseille depuis des années OVH pour leur offre mutualisée. https://www.mediacom87.fr/top-3-des-hebergeurs-mutualises-pour-prestashop/#o2switch Comme dit plus haut je n'ai pas la main là-dessus... Passons... Je suis tombé sur ce tuto en ligne : https://digiactif.fr/ajouter-un-etat-de-produit-dans-le-back-office-prestashop-1-7/ (oui du coup je cherche à ajouter des états de produits pour différents "degrés" d'occasion) A un moment il faut modifier le fichier src/Adapter/Presenter/Product/ProductLazyArray.php, et justement dans ce fichier il y est également question des flags. Du coup je me demandais si je pouvais pas trouver un moyen d'associer ces deux choses. Par exemple à la ligne ou je parle de ma condition "bon état" (à la suite de la ligne 254) : case 'bon état': return [ 'type' => 'bon état', 'label' => $this->translator->trans('bon état', [], 'Shop.Theme.Catalog'), 'schema_url' => 'https://schema.org/UsedCondition', ]; ajouter un truc du genre (trouvé ligne 481) : if ($this->product['bon état']) { $flags['bon état'] = [ 'type' => 'bon état', 'label' => $this->translator->trans('bon état', [], 'Shop.Theme.Catalog'), ]; } Serais-je sur une piste, ou me plante-je complètement ? EDIT : je ne suis vraiment plus certain de mon coup car le tuto ne fonctionne pas (adapté à PS 1.7.5 mais apparemment les entrées en BDD ont changé, en tout cas dans les tables citées dans ce tuto ) Edited March 22, 2022 by Zythom (see edit history) Link to comment Share on other sites More sharing options...
Zythom Posted March 25, 2022 Author Share Posted March 25, 2022 On 3/18/2022 at 12:00 PM, remyyyyy said: Bonjour, Vous devriez utilisez le hook "hookActionProductFlagsModifier" dans un module personnalisé. Cdt Bonjour @remyyyyy, ne trouvant pas de solution à mon "problème" je vais essayer de me pencher sur votre suggestion. Vous pouvez être plus précis dans votre idée ? Sans créer le module vous-même, bien entendu, pouvez-vous m'aiguiller un peu plus ? Merci Link to comment Share on other sites More sharing options...
Mediacom87 Posted March 25, 2022 Share Posted March 25, 2022 il y a 25 minutes, Zythom a dit : Bonjour @remyyyyy, ne trouvant pas de solution à mon "problème" je vais essayer de me pencher sur votre suggestion. Vous pouvez être plus précis dans votre idée ? Sans créer le module vous-même, bien entendu, pouvez-vous m'aiguiller un peu plus ? Merci Si tu récupère un base de module sur https://validator.prestashop.com/generator peut être que tu peux faire rapidement un truc Link to comment Share on other sites More sharing options...
Zythom Posted March 25, 2022 Author Share Posted March 25, 2022 5 minutes ago, Mediacom87 said: Si tu récupère un base de module sur https://validator.prestashop.com/generator peut être que tu peux faire rapidement un truc Merci @Mediacom87 c'est ce que je pensais faire, mais je me suis tout juste penché vite fait là-dessus hier soir, faut que j'approfondisse 😁 Quoi qu'il en soit je reviendrai ici donner mes résultats 😉 Link to comment Share on other sites More sharing options...
remyyyyy Posted September 14, 2022 Share Posted September 14, 2022 Le 25/03/2022 à 9:06 AM, Zythom a dit : Bonjour @remyyyyy, ne trouvant pas de solution à mon "problème" je vais essayer de me pencher sur votre suggestion. Vous pouvez être plus précis dans votre idée ? Sans créer le module vous-même, bien entendu, pouvez-vous m'aiguiller un peu plus ? Merci Désolé je n'avais pas vu votre message. Voici un exemple : public function hookActionProductFlagsModifier($params) { $flags = $params['flags']; $product = $params['product']; if (isset($product['id_product']) && (int)$product['id_product']) { $id_product = (int)$product['id_product']; $categories = Product::getProductCategories($id_product); /* .... Code à ajouter ici pour changer le flag selon la catégorie ......... */ } } 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