Apaccy Posted April 4, 2010 Share Posted April 4, 2010 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 More sharing options...
Apaccy Posted April 4, 2010 Author Share Posted April 4, 2010 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 // ... } @++ Link to comment Share on other sites More sharing options...
yaya Posted April 4, 2010 Share Posted April 4, 2010 bonjour,serait-il possible de voir votre boutique onlinemerci Link to comment Share on other sites More sharing options...
Apaccy Posted April 4, 2010 Author Share Posted April 4, 2010 Bonjour yaya,Pour l'instant je suis en phase de développement. Je n'ai donc pas de version en ligne.Cordialement, Link to comment Share on other sites More sharing options...
Emmanuel Paris Posted June 17, 2010 Share Posted June 17, 2010 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 More sharing options...
emmeics Posted August 23, 2010 Share Posted August 23, 2010 Hello, your code work only for "home category" and not for subcategory. If i select a subcategory of an home category this return value 1. Link to comment Share on other sites More sharing options...
emmeics Posted August 23, 2010 Share Posted August 23, 2010 On your private function: return $this->getHomeCategoryId( $item['id_parent'], $resultIds); must be: return $this->getCurrentHomeCategoryId( $item['id_parent'], $resultIds); very thanks. 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