Jump to content

[RESOLU] debug utilisé -> Comment utiliser les infos affichées lorsque plusieurs "array" (et non object)


Recommended Posts

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

Bonjour, à mon avis ceci va vous aider : http://www.smarty.net/docsv2/fr/language.function.foreach

C'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 if

Ré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

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

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

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...