Jump to content

[RESOLU]Trouver le homeCategorieId du currentCategorieId


Recommended Posts

Bonjour a tous,

J'utilise depuis peut PrestaShop.
Dans le template blockcategories.tpl il y a cette ligne qui permet d'identifier la catégorie courante :

{if $child.id == $currentCategoryId}selected{/if}



J'aimerai pouvoir identifier dans ce template la categorie de niveau 1 d'ou provient ma categorie courrante. Je crois qu'il faut que j'assigner a mon template l'Id de la catégorie home courante pour ensuite l'utiliser ainsi :

{if $child.id == $homeCurrentCategoryId}selected{/if}



J'ai trouvé Categorie->getParentsCategories qui semble répondre a mon besoin, néanmoins je vois qu'il fait une requête SQL pour le déterminer or les donnée des catégories son déjà chargé... je me dit qu'il est inutile de doublonner des requêtes...

Connaissez-vous une méthode "propre"/"optimisé" pour trouver cette information( l'id de la categorie parent de niveau 1, de la catégorie courante) ?

Crdlt,

Link to comment
Share on other sites

Yop !

J'ai finalement ajouter cette petite fonction dans le fichier /modules/blockcategories.php qui me permet de retrouver l'ID de la "catégorie home" de la catégorie courante/selectioné.

class BlockCategories extends Module
{
   // ...
   private function getHomeCurrentCategoryId( $currentCategoryId, $resultIds)
   {
       if( $currentCategoryId>1)
       {
           foreach( $resultIds as $item)
           {
               if( $item['id_category']==$currentCategoryId)
               {
                   if( $item['id_parent']>1)
                   {
                       return $this->getHomeCategoryId( $item['id_parent'], $resultIds);
                   }
                   else
                   {
                       return $item['id_category'];
                   }
               }
           }
       }
       return 1;
   }
   // ...
}




J'appel cette fonction depuis la méthode BlockCategories->hookLeftColumn()

function hookLeftColumn($param)
{
   // ...
       $currentCategoryId = 1;// modification Appacy
       if (isset($_GET['id_category']))
       {
           $cookie->last_visited_category = intval($_GET['id_category']);
           $currentCategoryId = intval($_GET['id_category']);// modification Appacy
           $smarty->assign('currentCategoryId', $currentCategoryId);// modification Appacy
       }
       if (isset($_GET['id_product']))
       {            
           if (!isset($cookie->last_visited_category) OR !Product::idIsOnCategoryId(intval($_GET['id_product']), array('0' => array('id_category' => $cookie->last_visited_category))))
           {
               $product = new Product(intval($_GET['id_product']));
               if (isset($product) AND Validate::isLoadedObject($product))
                   $cookie->last_visited_category = intval($product->id_category_default);
           }
           $currentCategoryId = intval($cookie->last_visited_category);// modification Appacy
           $smarty->assign('currentCategoryId', $currentCategoryId);// modification Appacy
       }    
       $smarty->assign('blockCategTree', $blockCategTree);
       $smarty->assign('homeCurrentCategoryId', $this->getHomeCurrentCategoryId( $currentCategoryId, $resultIds));// modification Appacy
   // ...
}


@++

21428_JIyuqBtzSPA12d3iuiyY_t

Link to comment
Share on other sites

  • 2 months later...
J’appel cette fonction depuis la méthode BlockCategories->hookLeftColumn()


Salut Appacy.
Je suis très interressé par ta méthode.
Mais je n'arrive pas à insérer la dernière partie de ton code.
Pourrai-tu me donner plus de précisions sur où et comment l'insérer ?

Par avance merci....
Link to comment
Share on other sites

  • 2 months later...

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