Jump to content

[Tutorial]Eliminar el Id de los productos en las url amigables


Centi

Recommended Posts

Hola:

No sé si para vosotros lo es, pero para mí era importante eliminar el id de las url amigables de los productos, ta sabéis:

123-disco-duro-seagate.html (eliminar el 123)

Buscando mucho he encontrado una solución que funciona. Es un poco chapuzas pero hasta que no salga algo oficial o mejor hecho es lo que he llegado a conseguir.

Lo probé en la 1.3.2 y funcionaba. Lo he probado en la 1.4.2 y funciona igual lo que pasa es que un archivo a modificar no es el mismo.

Para empezar nos vamos al archivo product.php o ProductController.php

En la 1.3.2 lo copié después de los includes. En la 1.4.2 lo copié 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')).'"');
}




Ahora nos vamos al archivo classes/Link.php y sustituimos el método getProductLink (entero) por esto:

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);
  }



Eso sirve para que se generen los enlaces sin el ID.

Ahora hay que modifica el .htacces para dirigir esos enlaces:

Borramos lo que haga referencia a product.php y pegamos esto:

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 teneís prestashop en una carpeta (es decir, no lo tenéis en la raiz del servidor) debéis añadir "/nombreDeLaCarpeta" delante de "/"

Ejemplo. Supongamos que tenemos prestashop dentro de la carpeta "tienda", pues el htacces sería así:

RewriteRule ^lang-([a-z]{2})/([a-zA-Z0-9-]*)/([a-zA-Z0-9-]*).html(.*)$ /tienda/product.php?product=$3&isolang=$1$4 [L,E]
RewriteRule ^lang-([a-z]{2})/([a-zA-Z0-9-]*).html(.*)$ /tienda/product.php?product=$2&isolang=$1$3 [L,E]
RewriteRule ^([a-zA-Z0-9-]*)/([a-zA-Z0-9-]*).html(.*)$ /tienda/product.php?product=$2$3 [L,E]
RewriteRule ^([0-9]+)-([a-zA-Z0-9-]*).html(.*)$ /tienda/product.php?product=$1$2 [L,E]



Espero que os ayude.

No sé si está repetido. Si lo está, perdonen.

Link to comment
Share on other sites

# .htaccess automaticaly generated by PrestaShop e-commerce open-source solution
# WARNING: PLEASE DO NOT MODIFY THIS FILE MANUALLY. IF NECESSARY, ADD YOUR SPECIFIC CONFIGURATION WITH THE HTACCESS GENERATOR IN BACK OFFICE
# http://www.prestashop.com - http://www.prestashop.com/forums



# URL rewriting module activation
RewriteEngine on

# URL rewriting rules
RewriteRule ^api/?(.*)$ /webservice/dispatcher.php?url=$1 [QSA,L]
RewriteRule ^([a-z0-9]+)\-([a-z0-9]+)(\-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1-$2$3.jpg [L]
RewriteRule ^([0-9]+)\-([0-9]+)/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1-$2.jpg [L]
RewriteRule ^([0-9]+)(\-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*\.jpg$ /img/c/$1$2.jpg [L]
RewriteRule ^([0-9]+)\-[a-zA-Z0-9-]*\.html /product.php?id_product=$1 [QSA,L]
RewriteRule ^[a-zA-Z0-9-]*/([0-9]+)\-[a-zA-Z0-9-]*\.html /product.php?id_product=$1 [QSA,L]
RewriteRule ^([0-9]+)\-[a-zA-Z0-9-]* /category.php?id_category=$1 [QSA,L]
RewriteRule ^([0-9]+)__([a-zA-Z0-9-]*) /supplier.php?id_supplier=$1 [QSA,L]
RewriteRule ^([0-9]+)_([a-zA-Z0-9-]*) /manufacturer.php?id_manufacturer=$1 [QSA,L]
RewriteRule ^content/([0-9]+)\-([a-zA-Z0-9-]*) /cms.php?id_cms=$1 [QSA,L]
RewriteRule ^content/category/([0-9]+)\-([a-zA-Z0-9-]*) /cms.php?id_cms_category=$1 [QSA,L]
RewriteRule ^lang-([a-z]{2})/([a-zA-Z0-9-]*)/([0-9]+)\-([a-zA-Z0-9-]*)\.html /product.php?id_product=$3&isolang;=$1 [QSA,L]
RewriteRule ^lang-([a-z]{2})/([0-9]+)\-([a-zA-Z0-9-]*)\.html /product.php?id_product=$2&isolang;=$1 [QSA,L]
RewriteRule ^lang-([a-z]{2})/([0-9]+)\-([a-zA-Z0-9-]*) /category.php?id_category=$2&isolang;=$1 [QSA,L]
RewriteRule ^error-404$ /404.php [QSA,L]
RewriteRule ^direccion$ /address.php [QSA,L]
RewriteRule ^direcciones$ /addresses.php [QSA,L]
RewriteRule ^autenticacion$ /authentication.php [QSA,L]
RewriteRule ^los-mas-vendidos$ /best-sales.php [QSA,L]
RewriteRule ^carro-de-la-compra$ /cart.php [QSA,L]
RewriteRule ^contactenos$ /contact-form.php [QSA,L]
RewriteRule ^descuento$ /discount.php [QSA,L]
RewriteRule ^guest-tracking$ /guest-tracking.php [QSA,L]
RewriteRule ^historial-de-pedidos$ /history.php [QSA,L]
RewriteRule ^identidad$ /identity.php [QSA,L]
RewriteRule ^fabricantes$ /manufacturer.php [QSA,L]
RewriteRule ^mi-cuenta$ /my-account.php [QSA,L]
RewriteRule ^nuevos-productos$ /new-products.php [QSA,L]
RewriteRule ^carrito$ /order.php [QSA,L]
RewriteRule ^devolucion-de-productos$ /order-follow.php [QSA,L]
RewriteRule ^quick-order$ /order-opc.php [QSA,L]
RewriteRule ^vales$ /order-slip.php [QSA,L]
RewriteRule ^olvidaste-tu-contrasena$ /password.php [QSA,L]
RewriteRule ^promociones$ /prices-drop.php [QSA,L]
RewriteRule ^buscar$ /search.php [QSA,L]
RewriteRule ^mapa-del-sitio$ /sitemap.php [QSA,L]
RewriteRule ^tiendas$ /stores.php [QSA,L]
RewriteRule ^proveedores$ /supplier.php [QSA,L]
RewriteRule ^lang-([a-z]{2})/([a-zA-Z0-9-]*)/([a-zA-Z0-9-]*).html(.*)$ /xayko/product.php?product=$3&isolang=$1$4 [L,E]
RewriteRule ^lang-([a-z]{2})/([a-zA-Z0-9-]*).html(.*)$ /xayko/product.php?product=$2&isolang=$1$3 [L,E]
RewriteRule ^([a-zA-Z0-9-]*)/([a-zA-Z0-9-]*).html(.*)$ /xayko/product.php?product=$2$3 [L,E]
RewriteRule ^([0-9]+)-([a-zA-Z0-9-]*).html(.*)$ /xayko/product.php?product=$1$2 [L,E]


# Catch 404 errors
ErrorDocument 404 /404.php


ExpiresActive On
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType text/css "access plus 1 week"
ExpiresByType text/javascript "access plus 1 week"
ExpiresByType application/javascript "access plus 1 week"
ExpiresByType application/x-javascript "access plus 1 week"
ExpiresByType image/x-icon "access plus 1 year"

Link to comment
Share on other sites

Vale. Ya sé el error.

Copié mal el código. ¿Ves la palabra xayko al principio de cada línea del código? cámbiala por la carpeta donde tengas la.tienda. Si la tienes en la raiz, bórrala.

Link to comment
Share on other sites

Pues me han salido varios problemas:

cuando quiero ver el producto, sale "Producto no encontrado"

y siguen saliendo los ID en las categorías


se puede hacer algo al respeto?

Saludos!


Hola. Léete la modificación que he hecho. El htacces que subí estaba mal.

Pega aquí tu htacces.

Saludos.
Link to comment
Share on other sites

ejemplo de un resultado:

http://mitienda.com/tienda/tv--lcd/232-lcd-tv-nevir-19-nvr-7062-tdt-hd-usb-gragador-lector-tarjetas-ci-mkv-8427155009221.html

htaccess

# .htaccess automaticaly generated by PrestaShop e-commerce open-source solution
# WARNING: PLEASE DO NOT MODIFY THIS FILE MANUALLY. IF NECESSARY, ADD YOUR SPECIFIC CONFIGURATION WITH THE HTACCESS GENERATOR IN BACK OFFICE
# http://www.prestashop.com - http://www.prestashop.com/forums



# URL rewriting module activation
RewriteEngine on

# URL rewriting rules
RewriteRule ^api/?(.*)$ /tienda/webservice/dispatcher.php?url=$1 [QSA,L]
RewriteRule ^([a-z0-9]+)\-([a-z0-9]+)(\-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*\.jpg$ /tienda/img/p/$1-$2$3.jpg [L]
RewriteRule ^([0-9]+)\-([0-9]+)/[_a-zA-Z0-9-]*\.jpg$ /tienda/img/p/$1-$2.jpg [L]
RewriteRule ^([0-9]+)(\-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*\.jpg$ /tienda/img/c/$1$2.jpg [L]

RewriteRule ^lang-([a-z]{2})/([a-zA-Z0-9-]*)/([a-zA-Z0-9-]*).html(.*)$ /tienda/product.php?product=$3&isolang=$1$4 [L,E]
RewriteRule ^lang-([a-z]{2})/([a-zA-Z0-9-]*).html(.*)$ /tienda/product.php?product=$2&isolang=$1$3 [L,E]
RewriteRule ^([a-zA-Z0-9-]*)/([a-zA-Z0-9-]*).html(.*)$ /tienda/product.php?product=$2$3 [L,E]
RewriteRule ^([0-9]+)-([a-zA-Z0-9-]*).html(.*)$ /tienda/product.php?product=$1$2 [L,E]

# RewriteRule ^([0-9]+)\-[a-zA-Z0-9-]*\.html /tienda/product.php?id_product=$1 [QSA,L]

RewriteRule ^([0-9]+)\-[a-zA-Z0-9-]* /tienda/category.php?id_category=$1 [QSA,L]

# RewriteRule ^[a-zA-Z0-9-]*/([0-9]+)\-[a-zA-Z0-9-]*\.html /tienda/product.php?id_product=$1 [QSA,L]

RewriteRule ^([0-9]+)__([a-zA-Z0-9-]*) /tienda/supplier.php?id_supplier=$1 [QSA,L]
RewriteRule ^([0-9]+)_([a-zA-Z0-9-]*) /tienda/manufacturer.php?id_manufacturer=$1 [QSA,L]
RewriteRule ^content/([0-9]+)\-([a-zA-Z0-9-]*) /tienda/cms.php?id_cms=$1 [QSA,L]
RewriteRule ^content/category/([0-9]+)\-([a-zA-Z0-9-]*) /tienda/cms.php?id_cms_category=$1 [QSA,L]
RewriteRule ^pagina-no-encuentra$ /tienda/404.php [QSA,L]
RewriteRule ^direccion$ /tienda/address.php [QSA,L]
RewriteRule ^direcciones$ /tienda/addresses.php [QSA,L]
RewriteRule ^autenticacion$ /tienda/authentication.php [QSA,L]
RewriteRule ^mas-vendidos$ /tienda/best-sales.php [QSA,L]
RewriteRule ^carro-de-la-compra$ /tienda/cart.php [QSA,L]
RewriteRule ^contactenos$ /tienda/contact-form.php [QSA,L]
RewriteRule ^descuento$ /tienda/discount.php [QSA,L]
RewriteRule ^estado-pedido$ /tienda/guest-tracking.php [QSA,L]
RewriteRule ^historial-de-pedidos$ /tienda/history.php [QSA,L]
RewriteRule ^identidad$ /tienda/identity.php [QSA,L]
RewriteRule ^fabricantes$ /tienda/manufacturer.php [QSA,L]
RewriteRule ^mi-cuenta$ /tienda/my-account.php [QSA,L]
RewriteRule ^nuevos-productos$ /tienda/new-products.php [QSA,L]
RewriteRule ^carrito$ /tienda/order.php [QSA,L]
RewriteRule ^devolucion-de-productos$ /tienda/order-follow.php [QSA,L]
RewriteRule ^pedido-rapido$ /tienda/order-opc.php [QSA,L]
RewriteRule ^vales$ /tienda/order-slip.php [QSA,L]
RewriteRule ^contrasena-olvidado$ /tienda/password.php [QSA,L]
RewriteRule ^promocion$ /tienda/prices-drop.php [QSA,L]
RewriteRule ^buscar$ /tienda/search.php [QSA,L]
RewriteRule ^mapa-del-sitio$ /tienda/sitemap.php [QSA,L]
RewriteRule ^tiendas$ /tienda/stores.php [QSA,L]
RewriteRule ^proveedores$ /tienda/supplier.php [QSA,L]


# Catch 404 errors
ErrorDocument 404 /tienda/404.php


   ExpiresActive On
   ExpiresByType image/gif "access plus 1 month"
   ExpiresByType image/jpeg "access plus 1 month"
   ExpiresByType image/png "access plus 1 month"
   ExpiresByType text/css "access plus 1 week"
   ExpiresByType text/javascript "access plus 1 week"
   ExpiresByType application/javascript "access plus 1 week"
   ExpiresByType application/x-javascript "access plus 1 week"
   ExpiresByType image/x-icon "access plus 1 year"


FileETag INode MTime Size

   AddOutputFilterByType DEFLATE text/html
   AddOutputFilterByType DEFLATE text/css
   AddOutputFilterByType DEFLATE text/javascript
   AddOutputFilterByType DEFLATE application/javascript
   AddOutputFilterByType DEFLATE application/x-javascript




saludos y gracias!!!

Link to comment
Share on other sites

ejemplo de un resultado:

http://yottex.com/tienda/tv--lcd/232-lcd-tv-nevir-19-nvr-7062-tdt-hd-usb-gragador-lector-tarjetas-ci-mkv-8427155009221.html

htaccess

# .htaccess automaticaly generated by PrestaShop e-commerce open-source solution
# WARNING: PLEASE DO NOT MODIFY THIS FILE MANUALLY. IF NECESSARY, ADD YOUR SPECIFIC CONFIGURATION WITH THE HTACCESS GENERATOR IN BACK OFFICE
# http://www.prestashop.com - http://www.prestashop.com/forums



# URL rewriting module activation
RewriteEngine on

# URL rewriting rules
RewriteRule ^api/?(.*)$ /tienda/webservice/dispatcher.php?url=$1 [QSA,L]
RewriteRule ^([a-z0-9]+)\-([a-z0-9]+)(\-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*\.jpg$ /tienda/img/p/$1-$2$3.jpg [L]
RewriteRule ^([0-9]+)\-([0-9]+)/[_a-zA-Z0-9-]*\.jpg$ /tienda/img/p/$1-$2.jpg [L]
RewriteRule ^([0-9]+)(\-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*\.jpg$ /tienda/img/c/$1$2.jpg [L]

RewriteRule ^lang-([a-z]{2})/([a-zA-Z0-9-]*)/([a-zA-Z0-9-]*).html(.*)$ /tienda/product.php?product=$3&isolang=$1$4 [L,E]
RewriteRule ^lang-([a-z]{2})/([a-zA-Z0-9-]*).html(.*)$ /tienda/product.php?product=$2&isolang=$1$3 [L,E]
RewriteRule ^([a-zA-Z0-9-]*)/([a-zA-Z0-9-]*).html(.*)$ /tienda/product.php?product=$2$3 [L,E]
RewriteRule ^([0-9]+)-([a-zA-Z0-9-]*).html(.*)$ /tienda/product.php?product=$1$2 [L,E]

# RewriteRule ^([0-9]+)\-[a-zA-Z0-9-]*\.html /tienda/product.php?id_product=$1 [QSA,L]

RewriteRule ^([0-9]+)\-[a-zA-Z0-9-]* /tienda/category.php?id_category=$1 [QSA,L]

# RewriteRule ^[a-zA-Z0-9-]*/([0-9]+)\-[a-zA-Z0-9-]*\.html /tienda/product.php?id_product=$1 [QSA,L]

RewriteRule ^([0-9]+)__([a-zA-Z0-9-]*) /tienda/supplier.php?id_supplier=$1 [QSA,L]
RewriteRule ^([0-9]+)_([a-zA-Z0-9-]*) /tienda/manufacturer.php?id_manufacturer=$1 [QSA,L]
RewriteRule ^content/([0-9]+)\-([a-zA-Z0-9-]*) /tienda/cms.php?id_cms=$1 [QSA,L]
RewriteRule ^content/category/([0-9]+)\-([a-zA-Z0-9-]*) /tienda/cms.php?id_cms_category=$1 [QSA,L]
RewriteRule ^pagina-no-encuentra$ /tienda/404.php [QSA,L]
RewriteRule ^direccion$ /tienda/address.php [QSA,L]
RewriteRule ^direcciones$ /tienda/addresses.php [QSA,L]
RewriteRule ^autenticacion$ /tienda/authentication.php [QSA,L]
RewriteRule ^mas-vendidos$ /tienda/best-sales.php [QSA,L]
RewriteRule ^carro-de-la-compra$ /tienda/cart.php [QSA,L]
RewriteRule ^contactenos$ /tienda/contact-form.php [QSA,L]
RewriteRule ^descuento$ /tienda/discount.php [QSA,L]
RewriteRule ^estado-pedido$ /tienda/guest-tracking.php [QSA,L]
RewriteRule ^historial-de-pedidos$ /tienda/history.php [QSA,L]
RewriteRule ^identidad$ /tienda/identity.php [QSA,L]
RewriteRule ^fabricantes$ /tienda/manufacturer.php [QSA,L]
RewriteRule ^mi-cuenta$ /tienda/my-account.php [QSA,L]
RewriteRule ^nuevos-productos$ /tienda/new-products.php [QSA,L]
RewriteRule ^carrito$ /tienda/order.php [QSA,L]
RewriteRule ^devolucion-de-productos$ /tienda/order-follow.php [QSA,L]
RewriteRule ^pedido-rapido$ /tienda/order-opc.php [QSA,L]
RewriteRule ^vales$ /tienda/order-slip.php [QSA,L]
RewriteRule ^contrasena-olvidado$ /tienda/password.php [QSA,L]
RewriteRule ^promocion$ /tienda/prices-drop.php [QSA,L]
RewriteRule ^buscar$ /tienda/search.php [QSA,L]
RewriteRule ^mapa-del-sitio$ /tienda/sitemap.php [QSA,L]
RewriteRule ^tiendas$ /tienda/stores.php [QSA,L]
RewriteRule ^proveedores$ /tienda/supplier.php [QSA,L]


# Catch 404 errors
ErrorDocument 404 /tienda/404.php


   ExpiresActive On
   ExpiresByType image/gif "access plus 1 month"
   ExpiresByType image/jpeg "access plus 1 month"
   ExpiresByType image/png "access plus 1 month"
   ExpiresByType text/css "access plus 1 week"
   ExpiresByType text/javascript "access plus 1 week"
   ExpiresByType application/javascript "access plus 1 week"
   ExpiresByType application/x-javascript "access plus 1 week"
   ExpiresByType image/x-icon "access plus 1 year"


FileETag INode MTime Size

   AddOutputFilterByType DEFLATE text/html
   AddOutputFilterByType DEFLATE text/css
   AddOutputFilterByType DEFLATE text/javascript
   AddOutputFilterByType DEFLATE application/javascript
   AddOutputFilterByType DEFLATE application/x-javascript




saludos y gracias!!!



Si te fijas, en tus url amigables, sigue estando el ID

http://yottex.com/tienda/tv--lcd/232-lcd-tv-nevir-19-nvr-7062-tdt-hd-usb-gragador-lector-tarjetas-ci-mkv-8427155009221.html

Debes modificar los otros archivos para que genere los enlaces sin ID. El htacces sólo sirve para redirigir los enlaces amigables a los reales.

Saludos.
Link to comment
Share on other sites



Debes modificar los otros archivos para que genere los enlaces sin ID. El htacces sólo sirve para redirigir los enlaces amigables a los reales.

Saludos.



que archivos hay que modificar a parte de classes/Product.php y classes/Link.php?

saludos, gracias.
Link to comment
Share on other sites

como llevas lo de las categorías


Lo miro a ver qué se puede hacer.

que archivos hay que modificar a parte de classes/Product.php y classes/Link.php?



Ningún otro. Pero si te fijas en tu web no se están generando los enlaces de forma correcta puesto que todos llevan el id cosa que no debería pasar.

Link to comment
Share on other sites



Ningún otro. Pero si te fijas en tu web no se están generando los enlaces de forma correcta puesto que todos llevan el id cosa que no debería pasar.



...o sea que no hay mucha solución...


De funcionar debe funcionar pero debes estar haciendo algo mal.
Link to comment
Share on other sites

  • 2 weeks later...
Parece que funciona lo único que con los productos nuevos aparece el mensaje de producto no encontrado...
No entiendo porque los antiguos aparecen perfectamente si en ID pero los nuevos no.

Gracias y un saludo.



eso me pasa a mi tambien
Link to comment
Share on other sites

1.-Editar el classes/Product.php y añadir
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')).'"');
}

debajo de <?php

2.- Editar el Classes/Link.php y sustituir el getproductlink por:
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);
}
y añadir al .htaccess esto:
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]

Un saludo

Link to comment
Share on other sites

  • 4 weeks later...

Buenas tardes, Alguien me puede ayudar estoy migrando de prestashop 1.3.7 a 1.4.4 y el unico problema que tengo es con las url amigables, lo que me adjuntan me sirve pero yo ademas de que solo aparezca el nombre del articulo en la url amigable tampoco quiero el codigo EAN13 porque los tengo mal en la tabla y no puedo solventarlo. He intentado cambiar el codigo que indican pero me da error. Alguno me puede ayudar para quitar de este codigo el codigo EAN13:

 

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);

}

 

Por cierto lo que hay que cambiar el fichero .htaccess no sirve con borrarlo y generar uno nuevo?

 

Muchas gracias.

Link to comment
Share on other sites

  • 1 month later...

Buenos dias a todos, escribo en este post para informarme de que tal funciona este metodo para quitar las id de la URL de los productos. Estoy muy interesado en quitarlas, y este metodo no parece demasiado dificil, incluso para mis limitados conocimientos, y por lo que veo, a la gente le funciona.

Pero queria saber si a alguien le ha surgido algun problema a posteriori, si los nuevos productos tambien se crean sin esos id number. Porque me imagino que un modulo rapido y sensillo, para esto no habra salido ya, verdad?jajaja

 

Por cierto, mi version es la 1.3.1, alguien me confirma si funciona en esta version?

 

Un saludo y espero vuestras experiencias,

 

gracias.

Link to comment
Share on other sites

  • 2 weeks later...

Buenas tardes, he podido cambiar las url de los productos para que no se viese el ID, pero en las categorías siguen apareciendo, aquí un ejemplo de ello:

 

Productos sin ID:

http://puntoexe.es/flexibles/razer-goliathus-speed-edition.html

 

Categorías con ID:

http://puntoexe.es/83-alfombrillas

 

Trabajando en prestashop 1.3... espero que alguien pueda solucionar este conflicto.

 

Un saludo y gracias!

  • Like 1
Link to comment
Share on other sites

Buenos dias puntoexe, en primer lugar, mu chula la web.

 

En lo referente a quitar las ID de los productos, veo que funciona, lo has hecho siguiendo los pasos aqui indicados? Estaba esperando a ver como funcionaba en alguna web, y veo que si, que funciona.

 

Un saludo y gracias,

Link to comment
Share on other sites

Genial, ha funcionado perfectamente, al menos con los productos. Eso si, ahora las URL que tiene indexadas google son diferentes a las de la web, las de google todavia tienen los id number. Hay algun procedimiento para que google coja las nuevas URL? es cuestion de tiempo? me empezara a dar errores de rastreo?

 

bueno, aqui quedan estas dudas,

 

Un saludo y gracias de nuevo

Link to comment
Share on other sites

Como era de esperar, han desaparecido casi todas las URL en el índice de páginas web de google, supongo que es normal, ya que he cambiado casi todas las URL. Algun paso que se deba dar? Solo esperar?

 

Un saludo

 

Hola.

 

Es normal que hayan desaparecido o los que aparezcan sean enlaces rotos.

 

Sólo has de darle tiempo a google a que reindexe las nuevas páginas.

 

Saludos.

Link to comment
Share on other sites

Buenos dias, pues lo cierto es que hago la busqueda en google, y los enlaces antiguos, con el id, siguen indexados en google. Lo que me desconcierta, es que los enlaces estan activos, o sea que entro y son completamente funcionales, asi como los nuevos que ha indexado sin id number. Por decirlo de alguna manera, estan duplicados. Y digo yo, no deberian estar rotos los enlaces antiguos? ya que he variado todas las URL? me ha podido faltar algo por hacer? es completamente normal?

 

Como dato, dire que si hago una busqueda de mi tienda con algun producto en concreto, me pone primero el producto sin ID number. No se si esto es significativo, pero creo que la modificacion puede mejorar el posicionamiento de los productos anunciados en la tienda. Lo sabremos en un tiempo.

 

Uun saludo y gracias de nuevo

Link to comment
Share on other sites

Buenas tardes, acabo de encontrar un fallo en la pagina web, desde que he realizado la modificacion aqui indicada. Y es que lo que escribo en los campos de METATITULO Y METADESCRIPCION, tanto en los productos antiguos, como en los nuevos, no aparece en la web, los que si aparecen son los de las categorias, pero ninguno en los productos. De hecho, en el lugar donde debe de aparecer el texto de estos campos, tan solo aparece el nombre de mi tienda.

Estoy seguro al 100% que es debido a la modificacion que he realizado para quitar los id number, lo cual me parece bueno, Pero necesito que alguien me de algun tipo de solucion para este problema con los META.

 

Se os ocurre alguna cosa para solucionarlo??os estaria muy agradecido chicos

 

Un saludo y gracias

Link to comment
Share on other sites

Buenos dias, comprobando de nuevo el procedimiento, veo donde me he podido equivocar, yo tengo la version 1.3.1 de prestashop, y a la hora de modificar el archivo product.php, veo que varia la posicion en la que se incluye esta linea.

 

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')).'"');

}

 

En el tutorial indican que en la verison 1.3.2 lo coloca despues de las includes, yo lo he colocado despues del <?php, o sea, al inicio, pero he visto que indica que esto es para la version 1.4.2,

ahora mi pregunta es, cuales son los includes y si es ahi donde he de colocar esas lineas.

 

Espero vuestras respuestas, a ver si solucioono mi problema

 

Un saludo y gracias de antemano!!

Link to comment
Share on other sites

  • 2 months later...

Gracias por el aporte, pero por mucho que lo he intentando, me dice pagina no encontrada. Uso la version 1.4.6.2, y por lo que se ve no funciona. Hay un supuesto módulo de pago que sirve para ello, pero como no lo puedo probar paso de comprar, y no me pueden confirmar que funcione.

Rogaría si es posible confirmen si funciona en 1.4.6.2, ya que las web donde dicen funcionar, ahora mismo muestran el id de producot

 

Un saludo

Link to comment
Share on other sites

Gracias por el aporte, pero por mucho que lo he intentando, me dice pagina no encontrada. Uso la version 1.4.6.2, y por lo que se ve no funciona. Hay un supuesto módulo de pago que sirve para ello, pero como no lo puedo probar paso de comprar, y no me pueden confirmar que funcione.

Rogaría si es posible confirmen si funciona en 1.4.6.2, ya que las web donde dicen funcionar, ahora mismo muestran el id de producot

 

Un saludo

El modulo de pago supongo que te refieres a este: http://addons.prestashop.com/en/seo/3113-pretty-url-remove-ids.html , te confirmo que funciona.

Link to comment
Share on other sites

Hola, muchas gracias por la respuesta. Concretamente no me refería a este módulo pero podría servirme. La cuestión es si lo que aquí se explica sirve para la versión de prestashop 1.4.6.2 porque llevo intentando y nada.

El módulo que estuve contemplando es este http://addons.prestashop.com/en/seo/2456-url-rewriting-.html

el cual puedes editar desde el mismo módulo para cambiar los campos a mostrar. El problema no son los 80euros+tasa sino confirmar si funciona bajo 1.4.6.2

No me quiero arriesgar a pagarlo y que no funcione. Prefiero pagar y tenerlo que estar dando palos de ciego.

Link to comment
Share on other sites

Hola, muchas gracias por la respuesta. Concretamente no me refería a este módulo pero podría servirme. La cuestión es si lo que aquí se explica sirve para la versión de prestashop 1.4.6.2 porque llevo intentando y nada.

El módulo que estuve contemplando es este http://addons.presta...rewriting-.html

el cual puedes editar desde el mismo módulo para cambiar los campos a mostrar. El problema no son los 80euros+tasa sino confirmar si funciona bajo 1.4.6.2

No me quiero arriesgar a pagarlo y que no funcione. Prefiero pagar y tenerlo que estar dando palos de ciego.

En la misma ficha del modulo, tienes un enlace para contactar con el desarrollador de tal modulo, a el mismo se lo puedes preguntar si funciona sin problema en dicha versión.

Link to comment
Share on other sites

  • 3 weeks later...

No se si le habra funcionado al 100% esta solucion, pero antes de que alguien se embarque a probar este tipo de cosas, tal y como me ha pasado a mi, que se informe bien de si funciona. Mi experiencia es que funciona, pero a medias. Mi version es la 1.3.1, y si bien he de reconocer que me generó todas las URL sin el id number de los productos, me ha "inutilizado" las META etiquetas. Esto puede ser debido a que yo haya hecho algo mal a pesar de repasarlo varias veces, pero pidiendo ayuda en el post a las personas a las que, supuestamente, si les funcioaba, no he recibido ningun tipo de consejo o ayuda.

Ademas he podido observar que, de todas las tiendas que se mencionan en el post, de gente a la que supuestamente le funciono correctamente, en sus URL tienen puesto el ID number. Vamos, algun problema habran tenido, pero no se han dignado a avisarlo.

 

Con todo esto que quiero decir, que os penseis muy mucho hacer este tipo de "ñapas", que os pueden traer consecuencias negativas en lo que a SEO se refiere, por el simple hecho de quitar los ID number, que realmente no se si mejorara sensiblemente vuestro posicionamiento.

 

Veo que han publicado ya algun modulo profesional y de pago que "limpia" las URL de ids, si confirman que funciona OK en vuestra version, mi consejo es que lo compreis y os dejeis de experimentos. Experiencia propia.

 

Un saludo,

Link to comment
Share on other sites

Por otro lado, y ya puestos, tal vez alguien me pueda resolver una duda. Como he contado anteriormente, estoy buscando alguna solucion para mi problema con las METAS, pero ya me han advertido de que cabe la posibilidad de que no se pueda. Me encuentro ahora en la situacion de volver a las URL originales y mi pregunta es si, cambiando el codigo y dejarlo tal y como estaba originalmente, el prestashop volvera a generar las URL con nuevos ID number? hay que hacer algo para generar nuevas URL?

 

Amigos, los experimentos con gaseosa!! no con vuestras pequeñas... jajaja

Link to comment
Share on other sites

  • 3 months later...
  • 3 months later...
  • 3 months later...

Supongamos que tenemos el url friendly activo (url amigables) y dos productos con el mismo nombre dentro de la misma categoría. Si tenemos el ID en la url, prestashop hace diferencia pero ... ¿que pasaría si quitásemos el ID? ¿google lo detectaría como contenido duplicado?

En el caso de quitar o no el ID hay mucha diversidad de opiniones por lo que he podido comprobar en google y ciertamente no sé que es mejor....

Igual el tener el ID en la url no afecta al SEO pero bien es cierto que la URL queda más bonita.

Edited by petete2008 (see edit history)
Link to comment
Share on other sites

  • 2 months later...
  • 4 weeks later...

Aquí: http://www.prestasho...thout-id-number tenéis un aporte gratuito en el foro Ingles, funcional con las ultimas versiones de prestashop.

Hola nadie. estabamaos a 4 dias de presentar la web y zasca¡¡¡ desaparecieron las imagenes miniatura. Hemos regenerado imagenes, y no hay forma. Antes de hacer le proceso del tuto en ingles guardamos el htaccess. pero ni con esas. nos hemos quedado sin miniaturas. Alguna solucion? Grazie¡¡

Link to comment
Share on other sites

Hola nadie. estabamaos a 4 dias de presentar la web y zasca¡¡¡ desaparecieron las imagenes miniatura. Hemos regenerado imagenes, y no hay forma. Antes de hacer le proceso del tuto en ingles guardamos el htaccess. pero ni con esas. nos hemos quedado sin miniaturas. Alguna solucion? Grazie¡¡

 

Buenos dias,

 

Yo de aqui: http://www.prestasho...number-for-v15/ acabo de descargar la versión "0.3.1" y en principio no me han desaparecido las imágenes.

 

Al ver la url de las imagenes, que ruta te da ¿?

Link to comment
Share on other sites

Buenos dias,

 

Yo de aqui: http://www.prestasho...number-for-v15/ acabo de descargar la versión "0.3.1" y en principio no me han desaparecido las imágenes.

 

Al ver la url de las imagenes, que ruta te da ¿?

 

Date cuenta que el modulo te instala los siguiente override:

 

/override/classes/Dispatcher.php

/override/classes/Link.php

 

/override/controllers/front/CategoryController.php

/override/controllers/front/CmsController.php

/override/controllers/front/ProductController.php

/override/controllers/front/SupplierController.php

/override/controllers/front/ManufacturerController.php

Link to comment
Share on other sites

Hola nadie. estabamaos a 4 dias de presentar la web y zasca¡¡¡ desaparecieron las imagenes miniatura. Hemos regenerado imagenes, y no hay forma. Antes de hacer le proceso del tuto en ingles guardamos el htaccess. pero ni con esas. nos hemos quedado sin miniaturas. Alguna solucion? Grazie¡¡

 

Buenos dias,

 

Yo de aqui: http://www.prestasho...number-for-v15/ acabo de descargar la versión "0.3.1" y en principio no me han desaparecido las imágenes.

 

Al ver la url de las imagenes, que ruta te da ¿?

 

Date cuenta que el modulo te instala los siguiente override:

 

/override/classes/Dispatcher.php

/override/classes/Link.php

 

/override/controllers/front/CategoryController.php

/override/controllers/front/CmsController.php

/override/controllers/front/ProductController.php

/override/controllers/front/SupplierController.php

/override/controllers/front/ManufacturerController.php

 

¿Sigues hay andy_79?

Link to comment
Share on other sites

Buenos dias,

 

Yo de aqui: http://www.prestasho...number-for-v15/ acabo de descargar la versión "0.3.1" y en principio no me han desaparecido las imágenes.

 

Al ver la url de las imagenes, que ruta te da ¿?

 

Hola Nadie, gracias por contestar tan rápidamente. estamos reunidos por ser de caracter urgente la resolucion de dicho problema. la url es /img/p/es-default-productlist.jpg

 

¿Sigues hay andy_79?

Aquí estoy Nadie, He tenido que llamar al equipo y reunirnos a estas hora spara solucionar esto.

 

Nadie, igualmente me gustaría poderlo comentar en privado y cuando tengamos una solución publicarlo para todos.

Link to comment
Share on other sites

Si, reemplaza el override original nuestro por el que viene en el modulo.

Proceso:

- instalamos Modulo

- realizamos cambios

- error 500

- borramos modulo

- error miniaturas

 

Fijate, que desaparezca el contenido de los overrides implicados en el modulo al desinstalar el modulo.

 

Lo puedes comprobar en las rutas de los override los ficheros mencionado arriba: http://www.prestasho...ost__p__1222461

 

Referente al error 500 que dices, habilita el reporte de errores: http://www.prestasho...-en-prestashop/ (Ya que muchas veces un error 500 no es un error 500 en si, si te sigue saliendo un 500, tras habilitar el debug de errores, es cuestion de revisar el log en el hosting, si te sale otra cosa depende un 500 al habilitar el debug de errores, comentamela)

 

Por cierto, el modulo se encarga de todo, no a que hacer ningun cambio adicional, al instalarlo.

Link to comment
Share on other sites

Fijate, que desaparezca el contenido de los overrides implicados en el modulo al desinstalar el modulo.

 

Lo puedes comprobar en las rutas de los override los ficheros mencionado arriba: http://www.prestasho...ost__p__1222461

 

Referente al error 500 que dices, habilita el reporte de errores: http://www.prestasho...-en-prestashop/ (Ya que muchas veces un error 500 no es un error 500 en si, si te sigue saliendo un 500, tras habilitar el debug de errores, es cuestion de revisar el log en el hosting, si te sale otra cosa depende un 500 al habilitar el debug de errores, comentamela)

 

Por cierto, el modulo se encarga de todo, no a que hacer ningun cambio adicional, al instalarlo.

Hola de nuevo.

el error 500 se soluiciono

y lo que hicimos fue reemplazar la carpeta override por un backup que teniamos

Link to comment
Share on other sites

Las miniaturas siguen igual. no existen. las imagenes siguen en BAckOffice peor no se visualizan en la web

¿Y seguro que todo fue debido a la instalacion del modulo?

 

Por que si has restaurado los overrides vacios originales, el modulo no estaria haciendo efecto.

 

¿Si desactivas las urls amigables, se te ven las imagenes de los productos?

Link to comment
Share on other sites

Ahora ya va mi 4º cafe en 2 horas. buffff. tengo los ojos como un buen plato sopero ;)

 

 

¿Y seguro que todo fue debido a la instalacion del modulo?

 

Por que si has restaurado los overrides vacios originales, el modulo no estaria haciendo efecto.

 

¿Si desactivas las urls amigables, se te ven las imagenes de los productos?

 

¿?

Link to comment
Share on other sites

¿Y seguro que todo fue debido a la instalacion del modulo?

 

Por que si has restaurado los overrides vacios originales, el modulo no estaria haciendo efecto.

 

¿Si desactivas las urls amigables, se te ven las imagenes de los productos?

Si si, a ver hemos probado a desactivar urls amigables, en ese caso da error 404. en las categorias.

el modulo está desactivado y desinstalado. es como que ha dejado algún rastro

Link to comment
Share on other sites

Si si, a ver hemos probado a desactivar urls amigables, en ese caso da error 404. en las categorias.

el modulo está desactivado y desinstalado. es como que ha dejado algún rastro

 

Como tienes actualmente el

 

Formato de URLs

 

en la pestaña Preferencias -> SEO y URLS ¿?

Link to comment
Share on other sites

Por curiosidad, seguro que has borrado este override o se ha borrado al desinstalar el modulo ¿?

 

/override/classes/Dispatcher.php

en la carpeta del tutorial en ingles descargamos cleanurls_v0.3, Eliminamos lel modulo por ftp y la carpeta override la reemplazamos integra de nuestro backup

 

¿Y la respuesta a mi otra pregunta?

Eres demasiado rapido. :/ jejejeje

Link to comment
Share on other sites

en la carpeta del tutorial en ingles descargamos cleanurls_v0.3, Eliminamos lel modulo por ftp y la carpeta override la reemplazamos integra de nuestro backup

 

 

Eres demasiado rapido. :/ jejejeje

 

Estas totalmente seguro, que el directorio "raiz"

 

/override/classes/

 

no tiene ningun fichero llamado:

 

Dispatcher.php

 

ni

 

Link.php

 

y en caso de que los tenga, esten totalmente vacios ¿?

 

De la misma manera para:

 

/override/controllers/front/CategoryController.php
/override/controllers/front/CmsController.php
/override/controllers/front/ProductController.php
/override/controllers/front/SupplierController.php
/override/controllers/front/ManufacturerController.php

Link to comment
Share on other sites

Estas totalmente seguro, que el directorio "raiz"

 

/override/classes/

 

no tiene ningun fichero llamado:

 

Dispatcher.php

 

ni

 

Link.php

 

y en caso de que los tenga, esten totalmente vacios ¿?

 

De la misma manera para:

 

/override/controllers/front/CategoryController.php
/override/controllers/front/CmsController.php
/override/controllers/front/ProductController.php
/override/controllers/front/SupplierController.php
/override/controllers/front/ManufacturerController.php

Estas totalmente seguro, que el directorio "raiz"

 

/override/classes/

 

no tiene ningun fichero llamado:

 

Dispatcher.php

 

ni

 

Link.php

 

y en caso de que los tenga, esten totalmente vacios ¿?

 

De la misma manera para:

 

/override/controllers/front/CategoryController.php
/override/controllers/front/CmsController.php
/override/controllers/front/ProductController.php
/override/controllers/front/SupplierController.php
/override/controllers/front/ManufacturerController.php

Nadie, dame 30 segundos te paso pantallazo de FTP. ok?

Link to comment
Share on other sites

Efectivamente. en productlist

 

Veo que usas la plantilla

 

warehouse

 

Si ves ahora mismo te cargan, pero he realizado una simple simulacion.

 

¿Seguro que no has tocado el fichero product-list.tpl accidentalmente para algo?

 

¿Tienes el original un segundo? ¿Puedes restaurarlo? (me refiero al fichero)

Link to comment
Share on other sites

Veo que usas la plantilla

 

warehouse

 

Si ves ahora mismo te cargan, pero he realizado una simple simulacion.

 

¿Seguro que no has tocado el fichero product-list.tpl accidentalmente para algo?

 

¿Tienes el original un segundo? ¿Puedes restaurarlo? (me refiero al fichero)

 

No no lo hemos tocado peor lo cambio si

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...