Jump to content

Poner el id de un producto en la url amigable al final para una mejor comprensión


petete2008

Recommended Posts

Hola :

He decidio que las url amigables de mis productos estén al final y no al final como vienen por defecto en prestashop 1.4.x. El motivo es para facilitar la lectura de la url al usuario porque de cara al buscador de google entiendo que es indiferente.

 

Por ejemplo, Cambiar :

http://www.prueba.es/categoria/1-ipod-nano.html

Por

http://www.prueba.es/categoria/ipod-nano-1.html

 

He comenzado creando una class override de Link.php  (hasta aquí todo bien, los productos llevan el enlace que deseo)

    public function getProductLink($id_product, $alias = null, $category = null, $ean13 = null, $id_lang = null)
    {
        global $cookie;

        if (is_object($id_product))
        {        
            $link = '';
            if ($this->allow == 1)
            {
                $link .= _PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink((int)$id_lang);
                
                if (isset($id_product->category) && !empty($id_product->category) && $id_product->category != 'home')
                    $link .= $id_product->category.'/';

                // LINEA ORIGINAL => $link .= (int)$id_product->id.'-'.(is_array($id_product->link_rewrite) ? $id_product->link_rewrite[(int)$cookie->id_lang] : $id_product->link_rewrite);
                $link .= (is_array($id_product->link_rewrite) ? $id_product->link_rewrite[(int)$cookie->id_lang] : $id_product->link_rewrite).'-'.(int)$id_product->id;

                if ($id_product->ean13)
                    $link .= '-'.$id_product->ean13;

                $link .= '.html';
            }
            else
                $link .= _PS_BASE_URL_.__PS_BASE_URI__.'product.php?id_product='.(int)$id_product->id;

            return $link;
        }
        elseif ($alias)
        {
            $link = '';
            if ($this->allow == 1)
            {
                $link .= _PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink((int)$id_lang);
                
                if ($category && $category != 'home')
                    $link .= $category.'/';

                // LINEA ORIGINAL => $link .= (int)$id_product.'-'.$alias;
                $link .= $alias.'-'.(int)$id_product;
                if ($ean13)
                    $link .= '-'.$ean13;
            
                $link .= '.html';
            }
            else
                $link .= _PS_BASE_URL_.__PS_BASE_URI__.'product.php?id_product='.(int)$id_product;

            return $link;
        }
        else
            return _PS_BASE_URL_.__PS_BASE_URI__.'product.php?id_product='.(int)$id_product;
    }
 

Y luego que es donde me encuentro actualmente y no he podido solucionarlo en la creación de las reglas dentro del .htaccess

 

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

[code]

 

El problema es que al entrar en un producto me dice 'pagina no disponible'.

 

alguna idea?

Gracias

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

  • 1 year later...

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