fherrard Posted September 16, 2014 Share Posted September 16, 2014 Bonjour Avez vous une idée pour que si une categorie comporte 1 seul produit que lorsque nous arrivons dans la categorie nous sommes redirgié automatiquement vers la fiche produit J'ai fait ca dans product list : {if $nb_products==1} <script type="text/javascript"> location.replace("{$product.link}"); </script> {/if} et ca fonctionne mais le temps de redirection est long et c'est pas exactement ca car la on arrive sur la page categorie elle se charge et se redirge toute seule vers la fiche produit il faudrait aller directement sur la fiche produit Merci de votre aide Link to comment Share on other sites More sharing options...
herve25 Posted September 16, 2014 Share Posted September 16, 2014 Bonjour, Pour que la redirection soit plus rapide, il faudrait mettre en place votre condition de redirection dans le controller des catégories.( En faisant une surcharge du fichier controllers/front/CategoryController.php ) avec un code du genre <?php class CategoryController extends CategoryControllerCore { public function initContent() { parent::initContent(); //Redirection si un seul produit est présent dans la catégorie if ( $this->nbProducts == 1 ) { $productLink = $this->cat_products[0]['link']; Tools::redirect($productLink); } $this->setTemplate(_PS_THEME_DIR_.'category.tpl'); if (!$this->customer_access) return; if (isset($this->context->cookie->id_compare)) $this->context->smarty->assign('compareProducts', CompareProduct::getCompareProducts((int)$this->context->cookie->id_compare)); $this->productSort(); // Product sort must be called before assignProductList() $this->assignScenes(); $this->assignSubcategories(); $this->assignProductList(); $this->context->smarty->assign(array( 'category' => $this->category, 'description_short' => Tools::truncateString($this->category->description, 350), 'products' => (isset($this->cat_products) && $this->cat_products) ? $this->cat_products : null, 'id_category' => (int)$this->category->id, 'id_category_parent' => (int)$this->category->id_parent, 'return_category_name' => Tools::safeOutput($this->category->name), 'path' => Tools::getPath($this->category->id), 'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'), 'categorySize' => Image::getSize(ImageType::getFormatedName('category')), 'mediumSize' => Image::getSize(ImageType::getFormatedName('medium')), 'thumbSceneSize' => Image::getSize(ImageType::getFormatedName('m_scene')), 'homeSize' => Image::getSize(ImageType::getFormatedName('home')), 'allow_oosp' => (int)Configuration::get('PS_ORDER_OUT_OF_STOCK'), 'comparator_max_item' => (int)Configuration::get('PS_COMPARATOR_MAX_ITEM'), 'suppliers' => Supplier::getSuppliers(), 'body_classes' => array($this->php_self.'-'.$this->category->id, $this->php_self.'-'.$this->category->link_rewrite) )); } } Link to comment Share on other sites More sharing options...
fherrard Posted September 16, 2014 Author Share Posted September 16, 2014 (edited) Merci herve pour ce retour J'ai bien ajouteé les lignes dans la page controllers/front/CategoryController.php Mais aucune redirection Edited September 16, 2014 by fherrard (see edit history) Link to comment Share on other sites More sharing options...
herve25 Posted September 16, 2014 Share Posted September 16, 2014 Je pense que c'est lié un problème de cache.Supprimez le fichier de cache des classes "cache/class_index.php" pour que la surcharge du controlleur soit bien prise en compte. ( Pour vérifier que c'est affichez un texte de test, par exemple ) Je l'ai testé sans problèmes particuliers sur une version 1.6.0.8 Link to comment Share on other sites More sharing options...
fherrard Posted September 16, 2014 Author Share Posted September 16, 2014 J'ai bien supprimer le fichier dans cache mais tjrs rien qui ne bouge sur la 1.6.0.9 il y a deja une petite difference dans le fichier class CategoryControllerCore extends FrontController et pas : class CategoryController extends CategoryControllerCore Link to comment Share on other sites More sharing options...
herve25 Posted September 16, 2014 Share Posted September 16, 2014 Attention à ce que je comprends vous être en train de toucher au fichier Core ( Ce n'est jamais une bonne idée) La solution que vous donne est de passer par une surcharge du controller des catégories. Pour faire cela il faut donc créer un fichier CategoryController.php dans le dossier override/controllers/front/ et y mettre le code fourni précédemment. Puis vider supprimer le fichier de cache des classes pour que celui-ci soit pris en compte. 2 Link to comment Share on other sites More sharing options...
fherrard Posted September 16, 2014 Author Share Posted September 16, 2014 Effectivement cette solution marche a la perfection Merci beaucoup 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