Jump to content

Récupérer les categories d'un produit


csid
 Share

Recommended Posts

Bonjour,

dans le cadre d'une modif dans le template et sous templates qui affichent une catégorie (et donc les produits dans cette categorie) je cherche, au niveau du template à connaitre les catégories d'un produit.

J'aurai donc besoin de faire remonter à smarty les categories de chaque produit.

Au point où j'en suis arrivé , ca serait dans product.tpl qu'il me faudrait un array des numéro de categorie du produit.

On a déjà un $product, il me faudrait pouvoir exploiter un $product.current_categories ........

Je cherche désespérément à faire remonter ça...

Quelqu'un aurait une piste?

D'avance merci.

 

Share this post


Link to post
Share on other sites

Bonjour,

je m'arrache toujours les cheveux...

Je n'arrive toujours pas à faire remonter les catégories d'un produit dans smarty...

j'ai fait un override dans /override/controllers/front/ProductController.php

J'y ai mis :

?php
class ProductController extends ProductControllerCore
{

	public function initContent()
	{
		parent::initContent();
		if (!$this->errors)
		{
			$hg_categs = 'toto';
            $this->context->smarty->assign('hg_categs', $hg_categs);
		}
	}
	

}

Ensuite dans

/themes/beeperchild/templates/catalog/_partials/miniatures/product.tpl

j'ai mis " =>{$product.hg_categs} " :

.....
	{block name='product_miniature_item'}
	 =>{$product.hg_categs}
	  <article class="product-miniature js-product-miniature" data-id-product="{$product.id_product}" data-id-product-attribute="{$product.id_product_attribute}" itemscope itemtype="http://schema.org/Product">
		<div class="product-miniature-container">
.....

Mais toujours rien ne remonte...

Ya un truc que je ne dois pas comprendre... Je devrais bien avoir un "toto" qui s'affiche non?

sachant que je dois remplacer mon "toto" par $this->getCategories(); .......... enfin... je ne suis plus sûr de rien !

 

🤬

 

Edited by csid (see edit history)

Share this post


Link to post
Share on other sites

bonjour,

oui en suivant la logique du lien mis juste avant j'ai modifié la fonction init() dans CategoryController.php en faisant ainsi :
 

        //--- hg
        $subProducts = array();
        $subCategories=$this->category->getSubCategories($this->context->language->id);
        foreach($subCategories as $subCat)
        {
            $tmp_cat_obj = new Category($subCat['id_category'], $this->context->language->id);
            $subProducts[$subCat['id_category']] = $tmp_cat_obj->getProducts($this->context->language->id,(int)($this->p), (int)($this->n), $this->orderBy, $this->orderWay,false);
        }
        //-- fin hg

        $this->context->smarty->assign(array(
            'category' => $categoryVar,
            'subcategories' => $this->getTemplateVarSubCategories(),
            'subProducts' => $subProducts,      //-- hg
        ));

$subProducts remonte bien dans le template category.tpl mais vide !!!

Alors que si j'appel getProducts avec True au lieu de false dans le parametre getTotal le nombre de produits est bien remonté !

Dans mon template j'ai mis :

              {foreach from=$subcategories item=subcat name=subcategories}
                <h2>{$subcat.name|upper}</h2>
                =>{$subProducts[$subcat.id_category]|print_r}
                 {if isset($subProducts[$subcat.id_category][0]['name'])}
                  {include file="$tpl_dir./product-list.tpl" products=$subProducts[$subcat.id_category]}
                  {include file="$tpl_dir./pagination.tpl"}
                 {elseif !isset($subProducts[$subcat.id_category][0]['name'])}
                  <p class="warning">{l s='There are no products in this category.'}</p>
                 {/if}
              {/foreach}

Et j'obtiens :

=>19 si je demande getTotal=true

=> Array() si getTotal=false

Je suis à deux doigts d'y arriver mais là je ne comprends encore pas pourquoi...

Share this post


Link to post
Share on other sites

le problème vient du

(int)($this->n)

dans le getProducts.

Il était à zéro...

J'arrive à quelque chose... je suis dans les templates mais apparemment les images ne sont pas remontées....

 

Share this post


Link to post
Share on other sites

Bonjour,

L'aventure continue...

En fait dans le principe tout est bon. Sauf une chose :
Mon tableau $subProducts[lacateg_voulue
] remonte un produit mais qui n'a pas la structure de celui remonté de base par CategoryController.
Donc il me manque plein de trucs et les noms des indices dans le tableau changent.

Quelqu'un peut il me dire comment l'objet "product" traité par product.tpl est généré car je ne trouve pas dans le code...

Mon idée serait, dans CategoryController, d'intégrer dans ma boucle sur les sous categories une boucle sur les produits de chaque sous categorie qui génére l'objet produit selon la meme structure que celui généré par prestashop de base pour la categorie courante.

Je ne trouve pas comment cette structure produit est générée... et vu mon grand age la POO a tendance à me faire vomir au bout de qq heures ;)

Share this post


Link to post
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
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More