Jump to content

Bonne pratique pour avoir une liste quelconque de produit avec TOUTES ses informations associées


Recommended Posts

Bonjour,

J'ai lu la doc en anglais pour le développement de modules, et je souhaite faire un premier test en affichant un bloc contenant n produits. J'ai bien réussi à faire le module, à afficher les produits avec leurs lien vers le produit complet mais je n'arrive pas à afficher les images de manière simple !

 

Cette question est peut-être triviale pour les habitués, mais je n'ai pas trouvé de solution satisfaisante en recherchant dans les codes de modules, ni en "googlant".

 

(pour simplifier le code) je suis obligé de mettre dans mon hook :

public function hookRightColumn($params)
{
    $products = Product::getProducts((int)$this->context->language->id, 0, 4, 'price', 'ASC');
//Obligé d'ajouter cette boucle pour gérer les images associées
    foreach($products  as $k => $v){
        $products[$k]['image'] = Product::getCover($products[$k]['id_product']);
    }


    $this->smarty->assign(array(
        'products' => $r,
        'mediumSize' => Image::getSize(ImageType::getFormatedName('medium')),
    ));
    return $this->display(__FILE__, 'top4.tpl');
}

et le template

{foreach from=$articles item='product' name='myLoop'}
    <li><a href="{$link->getProductLink($product, $product.link_rewrite, $product.category, null, null, $product.id_shop, $product.id_product_attribute)|escape:'html'}" title="{$product.name|escape:html:'UTF-8'}">
    <img src="{$link->getImageLink($product.link_rewrite, $product.image.id_image, 'medium_default')|escape:'html'}" height="{$mediumSize.height}" width="{$mediumSize.width}" alt="{$product.legend|escape:html:'UTF-8'}" />
    {$product.name}</a></li>
{/foreach}

ce que je souhaiterais savoir, c'est quelle est la bonne pratique pour afficher une liste de produits avec un ensemble de données connexes "de base" intégrées : images, catégories...

Product::getProducts() ne fournit pas les informations sur les images. Pour les modules de base affichant des produits et des images il y a des méthodes statiques prédéfinies (ex : pour bestseller c'est ProductSale::getBestSalesLight(), pour special c'est Product::getRandomSpecial() qui contiennent une jointure avec la table image)

 

=> Y a t'il

- une méthode prédéfinie (du core) qui permet de récupérer (potentiellement) toutes les informations possibles sur un produit (produit avec ses images, catégories[nom, lien...] ...)

- ou bien doit-on passer par une boucle (comme j'ai fait, mais ça me semble crade) pour ajouter des informations supplémentaires

- ou bien doit-on créer sa propre méthode incluant une requête sur mesure (avec des tas de leftjoin et de conditions) ?

 

Merci d'avance

 

 

 

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...