IchabOd Posted October 31, 2011 Share Posted October 31, 2011 Bonjour, Je souhaiterais insérer une image miniature de chaque produit commandé dans la commande dans la page order-detail, à la place de la référence actuelle. (à gauche du nom du produit donc) Je ne sais pas quoi modifier et j'aimerais de l'aide. A priori j'imagine qu'il faut assigner une variable dans smarty, mais je ne sais pas quelle fonction et quelle variable. Pouvez-vous m'aider ? merci Link to comment Share on other sites More sharing options...
IchabOd Posted December 30, 2011 Author Share Posted December 30, 2011 je me permets de faire un up là dessus, j'ai travaillé autre chose depuis mais là maintenant ça m'intéresserait si quelqu'un pouvait m'aider.... merci Dans OrderDetailController.php, il y a bien : $products = $order->getProducts(); Donc là j'imagine qu'après dans le tpl je peux faire ceci : <img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'small')}"> Mais rien ne s'affiche. help please ! Link to comment Share on other sites More sharing options...
IchabOd Posted January 2, 2012 Author Share Posted January 2, 2012 Allez quoi une chtite aide pour quelqu'un à qui ça prendrait pas plus de 5mn Dans Order.php, j'ai l'impression qu'il faut modifier : public function getProductsDetail() { return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' SELECT * FROM `'._DB_PREFIX_.'order_detail` od WHERE od.`id_order` = '.(int)($this->id)); } Pour aller chercher les images, donc j'ai mis : public function getProductsDetail() { return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' SELECT * FROM `'._DB_PREFIX_.'order_detail` od LEFT JOIN '._DB_PREFIX_.'product p ON ( p.id_product = od.product_id) LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (pl.id_product = p.id_product) LEFT JOIN '._DB_PREFIX_.'image i ON (i.id_product = p.id_product AND i.cover = 1) WHERE od.`id_order` = '.(int)($this->id)); } La fonction getProduct() devrait donc retourner $row['link_rewrite'] pour chaque produit. Mais après dans order-detail.tpl, j'ai beau mettre un : <img src="{$link->getImageLink($product.link_rewrite, $product.product_id, 'small')}"> ou autre chose, ça ne marche pas. Qu'ai-je loupé ? merci pleaaaaaaaase ! Link to comment Share on other sites More sharing options...
presta'luv Posted April 16, 2013 Share Posted April 16, 2013 Salut, Si tu as trouvé la solution, ça m'intéresse aussi ! Merci ! Link to comment Share on other sites More sharing options...
kent1 Posted May 19, 2013 Share Posted May 19, 2013 (edited) Bonjour, Je vous propose cette solution : Rajouter ces lignes dans le fichier /controller/front/OrderDetailController.php, sous cette déclaration "$products = $order->getProducts();" (environ ligne 157 chez moi) /* ************** modif quentin ***************** */ foreach($products as $key => $value) { $objet_produit= new Product($value['product_id']); $products[$key]['link_rewrite']= $objet_produit->link_rewrite; $products[$key]['cover']= Product::getCover($value['product_id']); } /* ********************************************** */ Cette solution construira les variables que vous pourrait utiliser dans le fichier .tpl order-detail.tpl Rajouter ensuite à l'endroit souhaitez dans votre fichier .tpl la ligne suivante : <img src="{$link->getImageLink($product.link_rewrite, $product.cover.id_image, 'small')}" title="{$product.product_name|escape:'htmlall':'UTF-8'}" alt="{$product.product_name|escape:'htmlall':'UTF-8'}" /> PS : Important => Si vous modifiez des fichiers dans le core des controllers/classes de prestashop, celles-ci sont susceptibles d'être écrasées lors d'une MAJ de prestashop. Aussi il est peut être plus consciencieux de faire ces modifs dans le dossier /override/. En espérant que cette solution fonctionnera pour tous. Cordialement, Quentin. Edited May 19, 2013 by kent1 (see edit history) Link to comment Share on other sites More sharing options...
presta'luv Posted May 21, 2013 Share Posted May 21, 2013 Bonjour kent1 et merci de ta réponse. Pour ma part c'est presque parfait mais il manque quelque chose Je m'explique. Voici le type de lien obtenu pour l'image : www.maboutique.com / id_image - small / Array.jpg. Mis à part Le "Array.jpg", je n'ai aucune image qui se charge. Pour la charger, j'aurai besoin de construire ce type de lien pour l'image : www.maboutique.com/ idproduit - idimage - small / Array.jpg. Comment faire pour obtenir la valeur id_produit dans ce lien ?? Merci d'avance. Link to comment Share on other sites More sharing options...
kent1 Posted May 21, 2013 Share Posted May 21, 2013 Bonjour, En principe le lien : <img src="{$link->getImageLink($product.link_rewrite, $product.cover.id_image, 'small')}" title="{$product.product_name|escape:'htmlall':'UTF-8'}" alt="{$product.product_name|escape:'htmlall':'UTF-8'}" /> devrait vous afficher le produit. Pour récup l'ID du prod ça devrait être {$product.product_id} ou {$product.id_product} ou {$id}. A tester ... Cordialement. Link to comment Share on other sites More sharing options...
presta'luv Posted May 21, 2013 Share Posted May 21, 2013 Effectivement c'est $product.product_id. Par contre, je ne peux pas afficher plus de deux variables est-ce normal ? En gros quand j'insère {$link->getImageLink($product.link_rewrite, $product.product.id, $product.cover.id_image, 'small')} il n'affiche que www.maboutique.com/ idproduit - idimage / Array.jpg et ne prends pas en compte "small". Link to comment Share on other sites More sharing options...
kent1 Posted May 21, 2013 Share Posted May 21, 2013 Vous êtes sensé le mettre sous la forme de mon premier post. Dans le template de base prestashop 1.5.3 en tout cas ... Faites moi un copier/coller de ce qui vous est affiché dans votre code du navigateur SVP afin que je comprenne mieux. Link to comment Share on other sites More sharing options...
presta'luv Posted May 21, 2013 Share Posted May 21, 2013 Erreur de frappe, autant pour moi, tout fonctionne Merci ! Link to comment Share on other sites More sharing options...
Superbegood31 Posted May 21, 2013 Share Posted May 21, 2013 Pouvez-vous nous mettre votre code svp ? Link to comment Share on other sites More sharing options...
kent1 Posted May 21, 2013 Share Posted May 21, 2013 Bonjour, Je vous propose cette solution : Rajouter ces lignes dans le fichier /controller/front/OrderDetailController.php, sous cette déclaration "$products = $order->getProducts();" (environ ligne 157 chez moi) /* ************** modif quentin ***************** */ foreach($products as $key => $value) { $objet_produit= new Product($value['product_id']); $products[$key]['link_rewrite']= $objet_produit->link_rewrite; $products[$key]['cover']= Product::getCover($value['product_id']); } /* ********************************************** */ Cette solution construira les variables que vous pourrait utiliser dans le fichier .tpl order-detail.tpl Rajouter ensuite à l'endroit souhaitez dans votre fichier .tpl la ligne suivante : <img src="{$link->getImageLink($product.link_rewrite, $product.cover.id_image, 'small')}" title="{$product.product_name|escape:'htmlall':'UTF-8'}" alt="{$product.product_name|escape:'htmlall':'UTF-8'}" /> PS : Important => Si vous modifiez des fichiers dans le core des controllers/classes de prestashop, celles-ci sont susceptibles d'être écrasées lors d'une MAJ de prestashop. Aussi il est peut être plus consciencieux de faire ces modifs dans le dossier /override/. En espérant que cette solution fonctionnera pour tous. Cordialement, Quentin. Link to comment Share on other sites More sharing options...
Superbegood31 Posted May 21, 2013 Share Posted May 21, 2013 Le code me génère des liens (que ce soit a href et img src) sous la forme : a href : .../22-Array.html img src : .../70-small/Array.jpg" J'ai réussi à faire afficher l'image du produit en intégrant $product.product_id mais les liens sont identitiques à ci-dessus... Link to comment Share on other sites More sharing options...
kent1 Posted May 21, 2013 Share Posted May 21, 2013 Essayez avec ce code à la place de l'autre : /* ************** modif quentin ***************** */ $id_lang_default= Configuration::get('PS_LANG_DEFAULT'); foreach($products as $key => $value) { $objet_produit= new Product($value['product_id']); $products[$key]['link_rewrite']= $objet_produit->link_rewrite[$id_lang_default]; $products[$key]['cover']= Product::getCover($value['product_id']); } /* ********************************************** */ Link to comment Share on other sites More sharing options...
Superbegood31 Posted May 21, 2013 Share Posted May 21, 2013 La modification fonctionne bien, le array a disparu. Cependant, le small n'est pas pris en compte... Merci pour votre aide et votre astuce en tous les cas. Link to comment Share on other sites More sharing options...
kent1 Posted May 21, 2013 Share Posted May 21, 2013 Ok essayez de remplacer le 'small' par 'small_default' ou toute autre valeur "Nom image" que vous pouvez retrouver dans votre Back Office => Préférences => Images Link to comment Share on other sites More sharing options...
Superbegood31 Posted May 21, 2013 Share Posted May 21, 2013 Le small est correct dans le BO... Peux-être que cela vient de l'overide "OrderDetailController" Link to comment Share on other sites More sharing options...
kent1 Posted May 21, 2013 Share Posted May 21, 2013 Effectivement si vous avez un fichier OrderDetailController dans l'override, les modifs que j'indique plus haut sont peut être à mettre à jour. Pour cela je vous invite à étudier les principes et limites de l'override. Link to comment Share on other sites More sharing options...
Superbegood31 Posted May 22, 2013 Share Posted May 22, 2013 En fait j'ai créer cet override pour prévenir des mises à jours du coeur de PS... Link to comment Share on other sites More sharing options...
kent1 Posted May 22, 2013 Share Posted May 22, 2013 En faisant l'override, vous avez certainement dû copier le code complet de la méthode "public function initContent()". Si tel est le cas, essayez de remplacer dans ce fichier override : parent::initContent(); Par FrontController::initContent(); Ça pourrait résoudre votre problème. Cordialement, Quentin. Link to comment Share on other sites More sharing options...
Superbegood31 Posted May 22, 2013 Share Posted May 22, 2013 Merci Quentin pour votre aide, J'ai effectivement copié la méthode "public function initContent()". J'ai effectué le remplacement suggéré mais le -small n'apparaît toujours pas... Link to comment Share on other sites More sharing options...
kent1 Posted May 22, 2013 Share Posted May 22, 2013 Pouvez-vous mettre en pièce jointe de votre prochain post votre fichier "OrderDetailController" de la classe de base ainsi que celui de l'override. Et également votre fichier order-detail.tpl. Ça sera peut être plus simple comme ça.... Avez vous une URL sur laquelle je pourrais voir votre affichage ? Link to comment Share on other sites More sharing options...
Superbegood31 Posted May 22, 2013 Share Posted May 22, 2013 Vous trouverez les fichiers en pièces jointes. Pour l'url, il s'agit de la plateforme de test en local... Désolé. Merci pour votre aide OrderDetailController.php OrderDetailController.php order-detail.txt Link to comment Share on other sites More sharing options...
kent1 Posted May 22, 2013 Share Posted May 22, 2013 (edited) Le code exacte pour récup l'image dans le fichier .tpl est celui-ci sur ma boutique : <img src="{$link->getImageLink($product.link_rewrite, $product.cover.id_image, 'small')}" title="{$product.product_name|escape:'htmlall':'UTF-8'}" alt="{$product.product_name|escape:'htmlall':'UTF-8'}" /> Chez vous, la méthode possède 4 argument et non 3 ... Je joins mes 2 fichiers à ce post pour que vous puissiez avoir une idée + précise. OrderDetailController.php order_detail.txt Edited May 22, 2013 by kent1 (see edit history) Link to comment Share on other sites More sharing options...
Superbegood31 Posted May 22, 2013 Share Posted May 22, 2013 J'avais mis votre code tel quel mais l'image n'apparaissait pas...c'est pourquoi j'avais ajouté le $product.product_id Link to comment Share on other sites More sharing options...
Superbegood31 Posted May 22, 2013 Share Posted May 22, 2013 (edited) J'ai remis votre code en l'état et voici l'url de l'image : /173-small/dissuasion-répondeur.jpg Il manque le product_id devant le 173 Edit : Et si je rajoute le $product.product_id, cela m'enlève le -small Edited May 22, 2013 by SWITCHBOARD (see edit history) Link to comment Share on other sites More sharing options...
kent1 Posted May 22, 2013 Share Posted May 22, 2013 Je viens d'ajouter mes 2 fichiers aux post précédents. Essayez avec ce code ci (si vous avez démarer avec un vieux prestashop) : <img src="{$link->getImageLink($product.link_rewrite, $product.product_id|cat:'-'|cat:$product.cover.id_image, 'small')}" title="{$product.product_name|escape:'htmlall':'UTF-8'}" alt="{$product.product_name|escape:'htmlall':'UTF-8'}" /> 1 Link to comment Share on other sites More sharing options...
Superbegood31 Posted May 22, 2013 Share Posted May 22, 2013 Bingo !!! <img src="{$link->getImageLink($product.link_rewrite, $product.product_id|cat:'-'|cat:$product.cover.id_image, 'small')}" title="{$product.product_name|escape:'htmlall':'UTF-8'}" alt="{$product.product_name|escape:'htmlall':'UTF-8'}" /> Merci infiniment !!! Link to comment Share on other sites More sharing options...
utaku Posted November 26, 2014 Share Posted November 26, 2014 Hello, Merci pour cette solution, cela fonctionne parfaitement sur un PS 1.6.9 avec quelques modifs css Bien à vous, Link to comment Share on other sites More sharing options...
PS newbi Posted July 21, 2015 Share Posted July 21, 2015 Est ce correct ce que j'ai fait dessous? Dans Order.php public function getProductsDetail() { return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' SELECT * FROM `'._DB_PREFIX_.'order_detail` od LEFT JOIN '._DB_PREFIX_.'product p ON ( p.id_product = od.product_id) LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (pl.id_product = p.id_product) LEFT JOIN '._DB_PREFIX_.'image i ON (i.id_product = p.id_product AND i.cover = 1) WHERE od.`id_order` = '.(int)($this->id)); } Dans /controller/front/OrderDetailController.php foreach($products as $key => $value) { $objet_produit= new Product($value['product_id']); $products[$key]['link_rewrite']= $objet_produit->link_rewrite; $products[$key]['cover']= Product::getCover($value['product_id']); } ou bien $id_lang_default= Configuration::get('PS_LANG_DEFAULT'); foreach($products as $key => $value) { $objet_produit= new Product($value['product_id']); $products[$key]['link_rewrite']= $objet_produit->link_rewrite[$id_lang_default]; $products[$key]['cover']= Product::getCover($value['product_id']); } Et dans order-detail.tpl <img src="{$link->getImageLink($product.link_rewrite, $product.cover.id_image, 'small')}" title="{$product.product_name|escape:'htmlall':'UTF-8'}" alt="{$product.product_name|escape:'htmlall':'UTF-8'}" /> ? Link to comment Share on other sites More sharing options...
PS newbi Posted July 25, 2015 Share Posted July 25, 2015 Ce parfait pour PS 1.6.0.14. Merci beaucoup. 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