madmike Posted September 29, 2010 Share Posted September 29, 2010 Bonjour,Je tente de développer "proprement" un module qui permet d'accéder a une liste de produit par ordre alphabétique.En gros module qui liste "a,b,c,etc." et qui si l'on clic sur la lettre A par exemple ou devrait avoir le list des produit dont le nom commence par A.C'est mon premier dev de module PS, ma première approche de smarty et la POO me donnait des boutons ;-). Donc soyez indulgent sur ma méconnaissance svp ;-) .Pour le listing, comment requêter la BDD afin de liste les produit de la même manière que en utilisant les catégorie.Dans mon module modules/listingblock.php j'ai une classe qui récupère les id + nom + desc courte et une autre pour compter le NB de résultat : public function getCountListing($lang,$key) { $result = array(); /* how many product avalable */ if (!$result = Db::getInstance()->getRow('SELECT count(`id_product`) FROM `ps_product_lang` WHERE `id_lang`='.$lang.' AND `name` LIKE "'.$key.'%"')) return false; return $result; } public function getProductListing($lang,$key) { $result = array(); /* content */ if (!$result = Db::getInstance()->getRow('SELECT `id_product`,`name`,`description_short` FROM `ps_product_lang` WHERE `id_lang`='.$lang.' AND `name` LIKE "'.$key.'%"')) return false; return $result; } Comment faire mieux ? Dans mon affichage de module j'accède comme cela pour demander la list des produits commençant par c /listing.php?listing=c Dans /listing.php j'ai cà : if ($listing = Tools::getValue('listing') AND !is_array($listing)) { include(dirname(__FILE__).'/pagination.php'); $smarty->assign( array( 'products' => ListingBlock::getProductListing(intval($cookie->id_lang), $listing), 'pages_nb' => 1, 'nbProducts' => ListingBlock::getCountListing(intval($cookie->id_lang), $listing) ) ); } else { $smarty->assign(array( 'products' => array(), 'pages_nb' => 1, 'nbProducts' => 0)); } $smarty->assign('listing', $listing); $smarty->display(_PS_THEME_DIR_.'listing.tpl'); Et dans la template de theme listing.tpl : {capture name=path}{l s='Listing'}{/capture} {include file=$tpl_dir./breadcrumb.tpl} {l s='Listing' mod='Listingblock'} {if $nbProducts > 0} "{if $listing}{$listing|escape:'htmlall':'UTF-8'}{/if}" {/if} {include file=$tpl_dir./errors.tpl} {if !$nbProducts} {if $listing} {l s='No results found for your search'} "{$listing|escape:'htmlall':'UTF-8'}" {else} {l s='Please type a search keyword'} {/if} {else} {$nbProducts|intval} {if $nbProducts == 1} {l s='result has been found.'} {else} {l s='results have been found.'} {/if} {foreach from=$products item=v} {$v} {/foreach} {/if} Bon en gros ca va j'usqu'a la page listing, ca me dit qu'il y as des résultat, mais white is white après.Donc si vous avez des idées, des conseils, je suis preneur.Question sub : si je veux afficher directement la liste de produit a travers : {include file=$tpl_dir./product-sort.tpl} {include file=$tpl_dir./product-list.tpl products=$products} {include file=$tpl_dir./pagination.tpl} Quel format doit avoir ma requête pour être pris en compte et afficher correctement les produit comme dans un listing de catégorie?Merci à tous.Mike Link to comment Share on other sites More sharing options...
distri Posted November 23, 2010 Share Posted November 23, 2010 Bonjour MadmikePourrais-tu me donner l'url de ton site afin que je vois à quoi ressemble ton module?J'essaye de développer le même module mais je galère un peu...Thx ! Link to comment Share on other sites More sharing options...
madmike Posted November 24, 2010 Author Share Posted November 24, 2010 Il est sur : http://www.nutritionconcept.com/Il n'est pas parfait, mais il fonctionne correctement avec l'urlrewrite Link to comment Share on other sites More sharing options...
distri Posted November 24, 2010 Share Posted November 24, 2010 Merci Madmikec'est quasiment ce que je veux faire.Par contre, je n'ai pas réussi en reprenant le code ci-dessus.Pourrais-tu m'envoyer ton module afin que je le réadapate (je ne suis pas développeur)en fait je voudrais le faire avec un système d'ancre comme ce site : http://www.laboandco.com/index_alphabetique.html/Lionel Link to comment Share on other sites More sharing options...
madmike Posted November 24, 2010 Author Share Posted November 24, 2010 Désolé il n'est pas encore finalisé mais sera bientôt disponible sur le store.Ton exemple est plus simple en fait, il te faut juste lister les produits par ordre alphabétique en une seule page et crée des ancre HTML.Pour lister tes produits utilise : $sql = 'SELECT `id_product`, `name`, `link_rewrite` FROM `'._DB_PREFIX_.'product_lang` WHERE `id_lang`='.$lang; $listing = Db::getInstance()->ExecuteS($sql); Comme ca tu n'as plus qu'as jouer avec $listing pour générer ta stdout comme tu le souhaite.mike Link to comment Share on other sites More sharing options...
distri Posted November 28, 2010 Share Posted November 28, 2010 Merci Mike ! Préviens moi dès qu'il est dispo sur le store car je n'arrive pas à le faire comme je le souhaite 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