Jump to content

[résolu] Afficher les sous sous catégories sur la page catégorie


Recommended Posts

Bonjour,

 

Je coince sur une modification qui semble assez annodine à première vue. J'aimerais avoir la possibilité d'afficher les sous-sous catégories de chaque sous-catégorie d'une catégorie :P

 

Par l'exemple ce sera plus parlant!

 

Mon catalogue est construit de cette manière:

- Cat A

-- Sous Cat A.1

--- Sous sous Cat A.1.a

--- Sous sous Cat A.1.b

--- Sous sous Cat A.1.c

-- Sous Cat A.2

--- Sous sous Cat A.2.a

--- Sous sous Cat A.2.b

--- Sous sous Cat A.2.c

 

Actuellement quand je suis sur la page catégorie "Cat A", je vois les 2 sous catégories "Sous Cat A.1" et "Sous Cat A.2" --> fonctionnement normal de PS.

 

Mais j'aimerais afficher sous chacunes de ces 2 sous catégories leurs sous catégories respectives.

 

En fait je voudrais avoir un affichage sur un niveau de profondeur supplémentaire, un peu comme le module "blockcategories".

 

Ma version de Prestashop est la 1.4.11

Je ne suis pas développeur mais je connais quand même le principe de PS donc j'imagine qu'il faut surcharger le controller de la page category pour aller y chercher les infos dont j'ai besoin et les transmettre ensuite au TPL par Smarty... mais quoi écrire dans ce controller??!!

 

 

Merci!

Edited by Julien64 (see edit history)
Link to comment
Share on other sites

Bonjour,

 

J'ai déjà mis en place cette fonctionnalité sur un site avec prestashop 1.5

La logique devrait donc être similaire à la suivante :

<?php
class CategoryController extends CategoryControllerCore {
   /**
 * Surcharge du contenu pour ajouter les sous-sous Catégories
 */
   public function initContent() {
    parent::initContent();
    //Rajout des information des sous-sous catégories
    $this->assignSubSubcategories();
   }

   /**
 * Informations des sous-sous catégories
 */
   protected function assignSubSubcategories() {
    $subCategories = $this->category->getSubCategories($this->context->language->id);
    $subsubCategories = array();

    foreach ( $subCategories as $subCategory ) {

	    //On charge les sous-catégories pour récupérer leurs sous-catégories
	    $subCat = new Category($subCategory['id_category']);
	    if ( $subCat->getSubCategories($this->context->language->id) )
	    $subsubCategories[$subCategory['id_category']] = $subCat->getSubCategories($this->context->language->id);
    }

    $this->context->smarty->assign('subsubCategories',$subsubCategories);
   }
}
?>

Link to comment
Share on other sites

Excellent, merci beaucoup pour votre réactivité!

 

Voila les modifications que j'ai du apporter à votre code pour qu'il fonctionne sur mon PS 1.4

 

<?php
class CategoryController extends CategoryControllerCore {
  public function process()
{
 parent::process();
 $this->assignSubSubcategories();
}

  protected function assignSubSubcategories() {
	    $subCategories = $this->category->getSubCategories($this->category->id);
	    $subsubCategories = array();

	    foreach ( $subCategories as $subCategory ) {

			    //On charge les sous-catégories pour récupérer leurs sous-catégories
			    $subCat = new Category($subCategory['id_category']);
			    if ( $subCat->getSubCategories($this->category->id) )
			    $subsubCategories[$subCategory['id_category']] = $subCat->getSubCategories($this->category->id);
	    }

	    self::$smarty->assign('subsubCategories',$subsubCategories);
   }
}

Link to comment
Share on other sites

En fait c'est un fichier à créer dans "override/controllers" et le fichier doit être nommé "CategoryController.php"

 

Ensuite pour récupérer les valeurs dans le TPL, j'ai rajouté un bout de code dans la fichier du thème "category.tpl", juste avant la balise fermante "</li>":

<!-- Sous sous catégories -->
   {foreach from=$subsubCategories item=subsubCategory}
 {foreach from=$subsubCategory item=subsubOk}
  {if $subsubOk.id_parent == $subcategory.id_category}
   <a href="{$link->getCategoryLink($subsubOk.id_category, $subsubOk.link_rewrite)|escape:'htmlall':'UTF-8'}">{$subsubOk.name}</a>
  {/if}
 {/foreach}
   {/foreach}

 

Je ne suis pas sur que le code soit très propre mais ça fonctionne bien chez moi.

Après il reste juste à jouer sur les CSS pour avoir l'affichage escompté.

Link to comment
Share on other sites

  • 3 months later...
  • 10 months later...

Bonjour,

 

en cherchant je suis tombé sur ce topic et il se rapproche dans l'idée à ce que je voudrais faire..

 

en fait je voudrais simplement afficher les sous catégories dans la page de la catégorie parente lorsque l'on clique dessus plutôt que de tomber sur une page vide marquant il n'y à pas de produits dans cette catégorie..

 

si vous avez une idée de comment faire, je suis preneur..

 

merci!

Link to comment
Share on other sites

  • 2 months later...

Bonjour$

est ce la solution fonctionne aussi pour la version 1.6

car mon catalogue est construit de cette manière:
- Cat A
-- Sous Cat A.1
--- Sous sous Cat A.1.a
--- Sous sous Cat A.1.b
--- Sous sous Cat A.1.c
-- Sous Cat A.2
--- Sous sous Cat A.2.a
--- Sous sous Cat A.2.b
--- Sous sous Cat A.2.c

 

merci

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