gatien Posted March 15, 2011 Share Posted March 15, 2011 Bonjour,J'ai souhaité faire une petite modification dans mon module productscategory qui était déja pas mal modifié.Je voudrais donc sélectionner et afficher parmi tous les produits de la liste uniquement ceux qui ont la même référence fournisseur (supplier_reference). Ces informations existent bien, mais je ne sais pas comment placer le code dans mon fichier productscategory.tpl.Ci dessous un extrait du résultat avec Debug sur product.tpl {$categoryProducts} Array (6) 0 => Array (59) id_product => "4467" supplier_reference => "AAA" 2 => Array (59) id_product => "2302" supplier_reference => "AAA" 3 => Array (59) id_product => "2303" supplier_reference => "BBB" 4 => Array (59) id_product => "2305" supplier_reference => "AAA" Si je met dans mon productscategory.tpl incorporé dans le des infos des objets de même catégorie : {$categoryProducts.0.id_product} : cela affiche bien "4467" avec chacun de ces 4 articles;Mon problème : que faut il mettre à la place de "0" (ou 2, 3 et 4) dans {$categoryProducts.0.id_product} pour que l'on puisse faire appel aux informations de l'array situé après. C'est à dire ne pas afficher 4 fois "4467", mais respectivement : "4467", "2302", "2303" et "2305".Fonction PHP ? Créer une variable ? Utiliser foreach ? ...Merci d'avance Link to comment Share on other sites More sharing options...
coeos.pro Posted March 15, 2011 Share Posted March 15, 2011 Bonjour, à mon avis ceci va vous aider : http://www.smarty.net/docsv2/fr/language.function.foreachC'est effectivement foreach qu'il faut utiliser, exemple {foreach from=$categoryProducts key=k item=v} et {$k} donnera 0, 2, 3, 4 et pour afficher l'id_product des produits où supplier_reference = "AAA" suffit de mettre {$v.id_product} dans une boucle ifRésumé: {foreach from=$categoryProducts key=k item=v} {if $v.supplier_reference="AAA"}{$v.id_product}{/if} {/foreach} Link to comment Share on other sites More sharing options...
gatien Posted March 16, 2011 Author Share Posted March 16, 2011 Bonjour,Merci de votre réponse.J'avais cependant trouvé la bonne solution dans la nuit : > </pre> <ul> {foreach from=$categoryProducts item='categoryProduct' name=categoryProduct} {if $product->supplier_reference==$categoryProduct.supplier_reference}METTRE LES INFOS DU PRODUIT {/if}{/foreach}</ul> La je planche sur un autre problème :Comment afficher le nombre de ces articles (tous ceux ayant un supplier_reference identique) dans product list.Il faudrait apparemment faire une requête SQLavec select count, mais je n'y arrive pas.Mais comme un topic = un sujet, je vais en faire un autre ... Link to comment Share on other sites More sharing options...
coeos.pro Posted March 16, 2011 Share Posted March 16, 2011 Avant le foreach :{assign var='nbre_prod_identiques' value=0}Entre les balises if rajoutez {assign var='nbre_prod_identiques' value=$nbre_prod_identiques+1}Pour afficher le nombre : {$nbre_prod_identiques} Link to comment Share on other sites More sharing options...
gatien Posted March 16, 2011 Author Share Posted March 16, 2011 Merci.Mais malheureusement, ça ne fonctionne pas si je l'ajoute dans product.tpl / product-list.tpl.Je cherchais plus le moyen d'utiliser la requête SQL pour afficher :"x articles à partir de x euros (pour ceux ayant toujours le même supplier_reference) car il y aura aussi le cas du prix minimal à afficher.J'avais trouvé une piste sur le forum, mais ça ne marche pas (j'ai laissé la formule telle quelle sans modifier les paramètres qui m'intéressent).Ajout dans Classes/Product.php : static public function NombreTotalProduits() { $Result = Db::getInstance()->GetRow(' SELECT COUNT(*) AS `value` FROM `'._DB_PREFIX_.'product`'); return $Result["value"]; } Ajout dans product.php : $smarty->assign('nombre_de_produits', Tools::NombreTotalProduits()); Ajout dans product.tpl {$nombre_de_produits} Je place peut être mal les 2 premiers.J'avais aussi vu une méthode en utilisant :{php} requête {/php} directement dans le tpl concerné, mais là non plus pas de succès.Topic sur le sujet : http://www.prestashop.com/forums/viewthread/97104/developpement/aide_pour_utiliser_une_requete_sql_dans_product_et_productlist_dot_tpl__nb_de_produits_ayant_la_meme_ref_dot_/ Link to comment Share on other sites More sharing options...
coeos.pro Posted March 16, 2011 Share Posted March 16, 2011 C'est getRow et non GetRow, et sinon en essayant Execute ou ExecuteS{php} est à éviter dans la mesure du possible==> Si vous placez la fonction dans Classes/Product.php, alors il faut mettre Product::NombreTotalProduits(), sinon c'est Tools::NombreTotalProduits() 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