Si desea eliminar el identificador de los productos que aparecen en las urls amigables, en este post le damos las pautas a seguir para solucionarlo.
Es necesario modificar código manualmente. Válido para las versiones 1.3.2 y 1.4.2 de Prestashop.
Se debe modificar el archivo prodcut.php o ProductController.php. En la versión 1.3.2 cópielo después de los includes y en la versión 1.4.2 justo debajo del tag <?php.
if(Tools::getValue('product')){ $_GET['id_product']=Db::getInstance()->getValue('SELECT id_product FROM '._DB_PREFIX_.'product_lang WHERE link_rewrite="'.pSQL(Tools::getValue('product')).'"');}
A continuación, nos vamos al archivo classes/Link.php y sustituimos el método getProductLink por lo siguiente:
public function getProductLink($id_product, $alias = NULL, $category = NULL, $ean13 = NULL){global $cookie;$lang_link = "";if (!isset($this->allow)) $this->allow = 0;if ($this->allow && $cookie->id_lang != Configuration::get('PS_LANG_DEFAULT')) $lang_link = "lang-".Language::getIsoById($cookie->id_lang)."/";if (is_object($id_product)) return ($this->allow == 1)?(_PS_BASE_URL_.__PS_BASE_URI__.$lang_link.(($id_product->category != 'home' AND !empty($id_product->category)) ? $id_product->category.'/' : '').$id_product->link_rewrite.($id_product->ean13 ? '-'.$id_product->ean13 : '').'.html') : (_PS_BASE_URL_.__PS_BASE_URI__.'product.php?id_product='.intval($id_product->id));elseif ($alias) return ($this->allow == 1)?(_PS_BASE_URL_.__PS_BASE_URI__.$lang_link. (($category AND $category != 'home') ? ($category.'/') : '').$alias.($ean13 ? '-'.$ean13 : '').'.html') : (_PS_BASE_URL_.__PS_BASE_URI__.'product.php?id_product='.intval($id_product));
else return _PS_BASE_URL_.__PS_BASE_URI__.'product.php?id_product='.intval($id_product); }
El método anterior sirve para que se generen los enlacen sin el ID.
Lo siguiente es modificar el -htacces para dirigir esos enlaces. Es necesario borrar lo que haga referencia a product.php y añadir lo siguiente:
RewriteRule ^lang-([a-z]{2})/([a-zA-Z0-9-]*)/([a-zA-Z0-9-]*).html(.*)$ /product.php?product=$3&isolang=$1$4 [L,E]RewriteRule ^lang-([a-z]{2})/([a-zA-Z0-9-]*).html(.*)$ /product.php?product=$2&isolang=$1$3 [L,E]RewriteRule ^([a-zA-Z0-9-]*)/([a-zA-Z0-9-]*).html(.*)$ /product.php?product=$2$3 [L,E]RewriteRule ^([0-9]+)-([a-zA-Z0-9-]*).html(.*)$ /product.php?product=$1$2 [L,E]
Si tiene prestashop en una carpeta (es decir, no lo tiene en la raiz del servidor) debe añadir "/nombreDeLaCarpeta" delante de "/".
Es posible que existan otras soluciones para eliminar el identificador de las urls amigables, dependiendo de la instalación o configuraciones de su ecommerce. Si desea un mayor asesoramiento del problema sobre como elimnar IDs de productos de las urls no dude en contactar con nosotros para un mejor diagnóstico.
Descubre nuestros últimos consejos creados en el blog.
Si ya ha pasado la fase de crear su tienda online, podemos ayudarle a mejorar con nuestra auditoría.
CACERES: C/ Gabino Muriel 3, 1A
Azuaga: Avd. de la Estación 32
SEVILLA: Avd. Eduardo Dato 69, 5º Planta (edif. Galia)
Cáceres: 927 26 10 71
Azuaga: 924 89 15 94
Sevilla: 954 32 35 66
Comercial L-V: 9:00 - 15:00
Soporte L-V: 8:00 y 24:00
Urgencias: 24h los 365 días.