Jump to content

[RESOLU] Problème override nombre produits par pages


Recommended Posts

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 by Qazema (see edit history)
Link to comment
Share on other sites

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

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