Qazema Posted March 10, 2014 Share Posted March 10, 2014 (edited) Bonjour, Je souhaite avoir sur un de nos sites la possibilité de lister par pages les produits par des multiples de 9. 9 étant la quantité affichée par défaut, je souhaite avoir les possibilités 18 et 45. J'ai donc récupérer le fichier dans classes/controller/FrontController.php pour trouver le code à overrider. J'ai ensuite créer un fichier override/classes/controller/FrontController.php dont le contenu intégral est : <?php class FrontController extends FrontControllerCore public function pagination($nbProducts = 10) { if (!self::$initialized) $this->init(); elseif (!$this->context) $this->context = Context::getContext(); $nArray = (int)Configuration::get('PS_PRODUCTS_PER_PAGE') != 10 ? array((int)Configuration::get('PS_PRODUCTS_PER_PAGE'), 9, 18, 45) : array(9, 18, 45); // Clean duplicate values $nArray = array_unique($nArray); asort($nArray); $this->n = abs((int)(Tools::getValue('n', ((isset($this->context->cookie->nb_item_per_page) && $this->context->cookie->nb_item_per_page >= 10) ? $this->context->cookie->nb_item_per_page : (int)Configuration::get('PS_PRODUCTS_PER_PAGE'))))); $this->p = abs((int)Tools::getValue('p', 1)); if (!is_numeric(Tools::getValue('p', 1)) || Tools::getValue('p', 1) < 0) Tools::redirect(self::$link->getPaginationLink(false, false, $this->n, false, 1, false)); $current_url = Tools::htmlentitiesUTF8($_SERVER['REQUEST_URI']); //delete parameter page $current_url = preg_replace('/(\?)?(&)?p=\d+/', '$1', $current_url); $range = 2; /* how many pages around page selected */ if ($this->p < 1) $this->p = 1; if (isset($this->context->cookie->nb_item_per_page) && $this->n != $this->context->cookie->nb_item_per_page && in_array($this->n, $nArray)) $this->context->cookie->nb_item_per_page = $this->n; $pages_nb = ceil($nbProducts / (int)$this->n); if ($this->p > $pages_nb && $nbProducts <> 0) Tools::redirect(self::$link->getPaginationLink(false, false, $this->n, false, $pages_nb, false)); $start = (int)($this->p - $range); if ($start < 1) $start = 1; $stop = (int)($this->p + $range); if ($stop > $pages_nb) $stop = (int)$pages_nb; $this->context->smarty->assign('nb_products', $nbProducts); $pagination_infos = array( 'products_per_page' => (int)Configuration::get('PS_PRODUCTS_PER_PAGE'), 'pages_nb' => $pages_nb, 'p' => $this->p, 'n' => $this->n, 'nArray' => $nArray, 'range' => $range, 'start' => $start, 'stop' => $stop, 'current_url' => $current_url ); $this->context->smarty->assign($pagination_infos); } Pourtant rien ne se passe, l'override ne s'effectue pas. Le code me semble bon car lorsque je modifie le fichier d'origine directement (donc celui qui n'est pas dans le dossier override), ça fonctionne à merveille. Ai-je raté qqchose dans mon override ? Version 1.5.6.2 Merci d'avance ! Edited March 10, 2014 by Qazema (see edit history) Link to comment Share on other sites More sharing options...
Szed Posted March 10, 2014 Share Posted March 10, 2014 Je pense qu'il vous faut supprimer le fichier class_index.php dans le dossier cache. Il contient les informations des classes/controllers à appeler. Et si vous l'ouvrez, vous devriez voir que le front controler appelé est toujours l'original. Le fichier se régénère automatiquement après avoir été supprimé. Link to comment Share on other sites More sharing options...
Qazema Posted March 10, 2014 Author Share Posted March 10, 2014 Alors en effet il fallait bien faire ça, Mais aussi grosse erreur dans mon code il manque les accolades qui englobent ma fonction à overrider... Quel cancre... Merci quand même 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