afipc Posted December 6, 2011 Share Posted December 6, 2011 Bonjour, Je suis en train de faire des modifications dans le code de : /themes/[mon_theme]/product-list.tpl Pour rajouter, en-dessous de la description courte, le nom de la catégorie. Si l'on ne met pas de conditions, le nom de la catégorie devrait s'afficher dans tous les cas : - listing produits dans chaque catégories - listing produits réductions et meilleurs ventes J'aimerais par la suite ne l'afficher que dans les pages "réductions" et "meilleurs ventes" Je teste avec le code suivant : ... {$product.description_short|truncate:360:'...'|strip_tags:'UTF-8'}</a></p> <!-- Ajout de l'affichage de la catégorie --> <br /> <h4>{$category->name}</h4> <br /> {$product.category} <!-- FIN --> </div> ... Avec $category->name, j'ai bien le nom correct complet. Avec $product.category, j'ai le nom "URL simplifiée" avec les mots séparés par un tiret. Voyez par exemple le résultat ici : http://photo-gravure...?id_category=24 Mon problème est que dans le cas des "réductions" et "meilleurs ventes", $category->name ne fonctionne pas, rien ne s'affiche ($product.category par contre s'affiche bien) : http://photo-gravure...prices-drop.php http://photo-gravure.../best-sales.php Je n'arrive pas à trouver pourquoi il ne s'affiche pas... Auriez-vous une idée? De plus, je ne sais pas trop comment faire le test pour afficher seulement si l'on est sur les pages "réductions" et "meilleurs ventes". Si vous avez une idée là-dessus, n'hésitez pas Merci beaucoup pour votre aide Link to comment Share on other sites More sharing options...
afipc Posted December 8, 2011 Author Share Posted December 8, 2011 un petit up Link to comment Share on other sites More sharing options...
afipc Posted December 14, 2011 Author Share Posted December 14, 2011 Personne n'a d'idée? Link to comment Share on other sites More sharing options...
Sbizz Posted December 14, 2011 Share Posted December 14, 2011 Bonjour. Le soucis est que les pages Meilleurs ventes et Promotions ont leur propre controlleur. Ils ne se basent pas sur le CategoryController. De ce fait, vous n'avez pas accès à la classe Category. Néanmoins, j'ai une question : vous souhaitez afficher quelle catégorie ? Car un produit peut se trouver dans plusieurs catégories ("Accueil" et "Avec photo" par exemple). Chaque produit possède une variable nommée "id_category_default". Ce que vous pouvez faire, c'est surcharger le tableau qui est créé et envoyé à SMARTY de tel sorte que vous rajoutez une variable name_category et vous utiliserez la fonction Category::getCategoryInformations(ids_category). Attention, le paramètre a envoyer est un tableau, donc : array($id_category_default). Link to comment Share on other sites More sharing options...
afipc Posted December 14, 2011 Author Share Posted December 14, 2011 Merci pour votre réponse. Effectivement dans mon cas, il se peut que certains produits soit aussi dans la catégorie "Accueil" (produits phares) Je ne souhaite pas afficher "Accueil" mais l'autre catégorie. Dans mon cas il n'y en a pas plus que 2 Étant assez novice, j'ai un peu de mal à saisir la modification que vous proposez avec la surcharge du tableau. Dans quel fichier effectuer cette modification? Link to comment Share on other sites More sharing options...
afipc Posted December 14, 2011 Author Share Posted December 14, 2011 Je pense que c'est dans /prices-drop.php (pour les réductions) ? Link to comment Share on other sites More sharing options...
Sbizz Posted December 14, 2011 Share Posted December 14, 2011 Concernant les catégories, vous devez impérativement indiquer la catégorie par défaut de vos produits pour ce que vous souhaitez faire. Cela implique donc de faire attention que dans la fiche de votre produit, via l'administration, la catégorie par défaut ne soit pas "Accueil". Ensuite, pour votre demande, il faut aller dans les controlleurs /controllers/BestSalesController.php et /controllers/PricesDropController.php. Le tableau des produits est construit dans la fonction process(). Il faudrait donc déjà les mettre dans une variable, car actuellement elles sont directement assignées à SMARTY et vous ne pourrez donc pas les modifier. Par exemple, pour les Meilleurs ventes : $products = Product::getPricesDrop((int)(self::$cookie->id_lang), (int)($this->p) - 1, (int)($this->n), false, $this->orderBy, $this->orderWay) et vous assignez à "products" la variable $products. Une fois fait, vous pouvez modifier le tableau. Il suffit de faire un foreach dessus et d'y rajouter vos données : foreach ($products AS $key => $product) { $name = Category::getCategoryInformations(array($product['id_category_default'])); $products[$key]['name_category'] = $name['name']; } J'ai codé rapidement, à vous de régler les erreurs possibles et de faire la même chose pour les Promotions. Link to comment Share on other sites More sharing options...
afipc Posted December 14, 2011 Author Share Posted December 14, 2011 Merci pour les précisions, néanmoins je ne trouve pas dans mon installation les contrôleurs Peut-être que c'est une nouveauté dans les dernières versions? Je travail sur une ancienne, 1.3.3.0 Link to comment Share on other sites More sharing options...
afipc Posted December 14, 2011 Author Share Posted December 14, 2011 Il semble que dans ma version, la modification se fait bien dans prices-drop.php Je fais comme vous dites, je met la récupération de la liste des produits dans une variable, je modifie l'assignation tel que décrit. Puis je passe au foreach. Tout ça fonctionne bien car si je met uniquement dans la boucle $products[$key]['name_category'] = "Num cat : " . $product['id_category_default']; depuis /themes/[mon_theme]/product-list.tpl j'ai accès à la variable {$product.name_category} et elle s'affiche correctement. Maintenant mon problème est pour récupérer le nom de la catégorie, car $name = Category::getCategoryInformations(array($product['id_category_default'])); Ne fonctionne pas, et me renvoi une erreur de fonction non définie J'essaye de passer par un : $category = new Category(intval(Tools::getValue($product['id_category_default'])), intval($cookie->id_lang)); $products[$key]['name_category'] = $category->name; (en copiant un peu sur category.php) Mais ça ne fonctionne pas Link to comment Share on other sites More sharing options...
Sbizz Posted December 15, 2011 Share Posted December 15, 2011 Enlevez le Tools::getValue ! $category = new Category(intval($product['id_category_default']), intval($cookie->id_lang)); $products[$key]['name_category'] = $category->name; Link to comment Share on other sites More sharing options...
afipc Posted December 20, 2011 Author Share Posted December 20, 2011 Super, c'est la solution, le nom de la catégorie récupéré est correct maintenant Merci beaucoup pour votre aide Link to comment Share on other sites More sharing options...
afipc Posted December 22, 2011 Author Share Posted December 22, 2011 Petit complément, par rapport à ma 2ème demande sur les conditions d'affichage Dans product-list.tpl, si l'on veut tester sur quelle page on est pour afficher ou non quelque chose, dans mon cas tester si l'on est sur "réductions" ou "meilleures ventes" : {if $page_name == "prices-drop"} ou {if $page_name == "best-sales"} Link to comment Share on other sites More sharing options...
Hardwell Posted September 16, 2013 Share Posted September 16, 2013 Bonjour, je n'ai pas bien tout compris à votre manipulation, concrètement je veux simplement afficher le nom de la catégorie par défaut du produit dans product-list.tpl, que dois-je faire ? Merci pour votre aide Link to comment Share on other sites More sharing options...
Hardwell Posted September 19, 2013 Share Posted September 19, 2013 up 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