kyride59 Posted December 20, 2019 Share Posted December 20, 2019 Bonjour, Je souhaite réaliser un petit script de manière propre donc en ajoutant une surcharge upgrade self pour : Rediriger une catégorie vers une produit si il n'y a qu'un produit dans la catégorie. Le souci n'est pas de réaliser le script mais surtout de savoir quelle partie surcharger. A quel endroit exactement et généré la page catégorie. J'ai essayé de vérifier dans le controller lié au catégorie mais je n'ai rien vu de probant. Quelqu'un peut-il m'aiguiller. Merci Link to comment Share on other sites More sharing options...
Eolia Posted December 20, 2019 Share Posted December 20, 2019 if(count($this->getProducts()) == 1) { // Analyse de l'array pour récupérer l'id du produit puis Tools::redirect($this->context->link->getProductLink($id_product)); } 1 Link to comment Share on other sites More sharing options...
kyride59 Posted December 20, 2019 Author Share Posted December 20, 2019 Salut Eolia, Comme expliqué dans mon message, pour le bout de code pas de soucis c'est surtout que je ne vois pas quelle classe / controller modifier en surchargeant. Link to comment Share on other sites More sharing options...
Eolia Posted December 20, 2019 Share Posted December 20, 2019 categoryController.php serait une bonne idée^^ 1 Link to comment Share on other sites More sharing options...
kyride59 Posted December 20, 2019 Author Share Posted December 20, 2019 C'est bien entendu le premier que j'ai regardé. Il va falloir que je creuse un peu car le code n'est pas super bien commenté et c'est un mix entre du core prestashop et symfony. Merci du retour en tout cas. Link to comment Share on other sites More sharing options...
kyride59 Posted December 23, 2019 Author Share Posted December 23, 2019 (edited) Bonjour, Si cela peux aider un jour quelqu'un - Valide Prestashop 1.7.6 ( à ce jour) Pour faire ça de façon propre. Dossier override > controllers > front > listing Créez un fichier CategoryController.php Attention à ne pas réaliser la modification directement sur le fichier controllers>front>listing>... En cas de mise à jour du core de prestashop il y a de forte chance que cette modification soit écrasée. <?php /** * 2020 PIXEL ONLINE * * @author PIXEL ONLINE <[email protected] * @copyright 2020 Anthony PARIS * @license One Domain Licence * @version Release:0.9 * */ class CategoryController extends CategoryControllerCore { /** * Initializes controller. *REDIRECTION GAMME PRODUIT SI UN SEUL PRODUIT ACTIF * @see FrontController::init() * * @throws PrestaShopException */ public function init() { $id_category = (int) Tools::getValue('id_category'); $this->category = new Category( $id_category, $this->context->language->id ); if (!Validate::isLoadedObject($this->category) || !$this->category->active) { Tools::redirect('index.php?controller=404'); } parent::init(); if (!$this->category->checkAccess($this->context->customer->id)) { header('HTTP/1.1 403 Forbidden'); header('Status: 403 Forbidden'); $this->errors[] = $this->trans('You do not have access to this category.', array(), 'Shop.Notifications.Error'); $this->setTemplate('errors/forbidden'); return; } /**AJOUT CUSTOM PIXEL**/ $active_product = []; $products = $this->category->getProducts($this->context->language->id, 0, 10000); foreach($products as $produit_cat){ if($produit_cat['active']==1) $active_product[] = $produit_cat; } if(count($active_product) == 1) { $id_produit = $active_product[0]['id_product']; Tools::redirect($this->context->link->getProductLink($id_produit)); } $categoryVar = $this->getTemplateVarCategory(); $filteredCategory = Hook::exec( 'filterCategoryContent', array('object' => $categoryVar), $id_module = null, $array_return = false, $check_exceptions = true, $use_push = false, $id_shop = null, $chain = true ); if (!empty($filteredCategory['object'])) { $categoryVar = $filteredCategory['object']; } $this->context->smarty->assign(array( 'category' => $categoryVar, 'subcategories' => $this->getTemplateVarSubCategories(), )); } } Edited December 23, 2019 by kyride59 (see edit history) 1 Link to comment Share on other sites More sharing options...
Andriano Posted January 4, 2020 Share Posted January 4, 2020 "En cas de mise à jour du core de prestashop il y a de forte chance que cette modification soit écrasée."=> Effectivement ! Le mieux serait de sauvegarder ses modifications. 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