Toutes les clefs pour réussir dans le e-commerce

Mes modules Prestashop

Simplifier l’url rewriting des liens de catégories sur prestashop 1.4

Afin d’optimiser un site pour le référencement j’ai dû modifier certains liens vers des catégories qui n’utilisaient pas l’url rewriting.
Pourtant dans le thème l’url était générée correctement via la fonction suivante:


$link->getCategoryLink(185)

J’ai donc étudié le code de cette fonction et il s’avère que l’url rewriting n’est appliqué que si “$id_category” est un objet de la classe “Category” et non pas une simple valeur numérique.
Cela implique que, si vous voulez utiliser cette fonction dans l’un de vos templates pour avoir une url ré-écrite, il vous faudra tout d’abord récupérer l’object Category dans un controller, le transmettre à smarty pour ensuite l’utiliser dans le template en l’insérant dans la fonction “getCategoryLink”.

C’est d’autant plus aberrant que la classe Category possède sa propre fonction getLink qui va générer le lien ré-écrit.

J’ai donc créé un override très simple qui permet d’obtenir un lien ré-écrit sans avoir à faire toutes ces étapes. Le voici:


<?php
//override/classes/Link.php

class Link extends LinkCore
{
	public function getCategoryLink($id_category, $alias = NULL, $id_lang = NULL)
	{
		if(!is_object($id_category)) {
			global $cookie;
			if($id_lang==null)				
				$id_lang = (int)($cookie->id_lang);
			$id_category=new Category($id_category,$id_lang);			
		}
		if (is_object($id_category))
			return ($this->allow == 1) ? (_PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink((int)($id_lang)).(int)($id_category->id).'-'.$id_category->link_rewrite) :
			(_PS_BASE_URL_.__PS_BASE_URI__.'category.php?id_category='.(int)($id_category->id));
		if ($alias)
			return ($this->allow == 1) ? (_PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink((int)($id_lang)).(int)($id_category).'-'.$alias) :
			(_PS_BASE_URL_.__PS_BASE_URI__.'category.php?id_category='.(int)($id_category));
		return _PS_BASE_URL_.__PS_BASE_URI__.'category.php?id_category='.(int)($id_category);
	}
}
?>

Poster un Commentaire

Soyez le premier à commenter !

Recevoir un email pour
avatar
wpDiscuz