Jump to content

[ TUTORIAL ] [ PHP ] Listing catégories + sous catégories + produit


Recommended Posts

Hello !

Je vous propose ce petit bout de code qui vous créera une arboressence de votre catalogue dans le backoffice en php. Pour le moment le script génère les liens des catégories et des produits. La feuille de style arrivera prochainement.

>

$categTree = Category::getRootCategory()->recurseLiteCategTree(0);

function constructTreeNode($node){
   $ret = ''."\n";
   $ret .= ''.$node['name'].''."\n";

$q_product='SELECT ps_product_lang.name, ps_product_lang.link_rewrite, ps_product_lang.id_product
FROM ps_product , ps_product_lang
WHERE ps_product.id_product=ps_product_lang.id_product
AND ps_product.id_category_default = '.$node['id'].'
AND ps_product_lang.id_lang = 2
';

$r = Db::getInstance()->ExecuteS($q_product);
foreach($r as $product)
{

   $ret .= '' ;
   $ret .= ''.$product['name'].'' ;


   $ret .= '' ;    
}

   if(!empty($node['children']))
   {
       $ret .= '</pre>
<ul>'."\n";
       foreach ($node['children'] AS $child)
           $ret .= constructTreeNode($child);
       $ret .= '</ul>'."\n";<br>   }<br>   $ret .= ''."\n";<br><br>   return $ret;<br>}<br><br>$ulTree = '<div>' . $categTree['name'] . '</div>'."\n";<br>$ulTree .=  '<ul>'."\n";
foreach ($categTree['children'] AS $child)
   $ulTree .= constructTreeNode($child);
$ulTree .=  '</ul>'."\n";<br><br>echo $ulTree;<br><br

Link to comment
Share on other sites

Salut,
C'est en effet une bonne base.
Attention au erreurs par contre c'est une fonction récursive.
La classe Category fournit une méthode pile poil :

getProducts($id_lang, $p, $n, $orderBy = NULL, $orderWay = NULL, $getTotal = false, $active = true, $random = false, $randomNumberProducts = 1)

Link to comment
Share on other sites

Tu peux aussi faire ça qui conserve le comportement d'editorial:

Dans /modules/editorial/editorial.tpl , tu remplaces

        {if $homepage_logo}body->$title|escape:'htmlall':'UTF-8'|stripslashes}" />{/if}



par


        {if $homepage_logo}body->$title|escape:'htmlall':'UTF-8'|stripslashes}" />{/if}



Ensuite tu n'as plus qu'a envoyer le fichier homepage_logo.gif, mais par ftp , dans /modules/editorial/

Link to comment
Share on other sites

Salut,
C'est en effet une bonne base.
Attention au erreurs par contre c'est une fonction récursive.
La classe Category fournit une méthode pile poil :

getProducts($id_lang, $p, $n, $orderBy = NULL, $orderWay = NULL, $getTotal = false, $active = true, $random = false, $randomNumberProducts = 1)




J'ai trouvé la doc des classes de presta ici :

http://shagshag.net/prestadoc/Prestashop/Category.html#methodgetProducts
Link to comment
Share on other sites

Hello !

Pour l'instant ne vous prenez plus la tête à essayer de me donner un coup de main sur ce poste. J'ai trouvé comment faire et je pauffine un peu le code ( un double foreach avec appel sql pour produit ) et je le met sur ce poste que je transformerai en tutorial. Je pense que ça aidera pas mal de développeurs qui voudront une fonctions toute faites pour sortir les catégorie + sous catégorie + les produits pour chaque langue.

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