URLS amigables avanzadas en los módulos de prestashop


Cuando creamos un módulo que tiene un frontController nos encontramos muy limitados a la hora de crear las urls amigables, ya que solo podemos emplear el sistema de prestashop de SEO y URL en el que solo podremos tener acceso a una palabra clave, mientras que los parametros seguirán siendo con el interrogante y los iguales.

Por ejemplo. Nuestro módulo necesita dos parametros. La url básica sería así

latienda.dom/index.php?fc=module&module=nombremodulo&controller=nombrecontrolador?keyword1=gato&keyword2=perro

 

Esto no es nada amigable, y si empleamos el sistema del backoffice (SEO & URLS) esto mejora, pero no lo suficiente

latienda.dom/nombreamigabledelmodulo?keyword1=gato&keyword2=perro

Seguimos teniendo las palabras clave con signos de interrogación e iguales. Pero eso se puede cambiar. En sus versiones más recientes, prestashop incorpora un hook en el Dispatcher, el encargado de determinar las rutas amigables con parámetros incluidos. Al emplear esta herramienta, la url nos quedará de la siguiente forma:

latienda.dom/nombreamigabledelmodulo/gato/perro/

 

 

Para poder emplearlas en nuestro módulo debemos añadir la función

 public function hookModuleRoutes()
    {
        return array(
            'nombredelaregla' => array(
                'controller' =>	"controladordelmodulo",
                'rule' =>		'nombreamigablemodulo/{keyword1}{/:keyword2}.html',
                'keywords' => array(
                    'keyword1' => array('regexp' => '[a-zA-Z+]+', 'param' => 'nombredelparametro'),
                    'keyword2' =>    array('regexp' => '[_a-zA-Z0-9-_\pL]*', 'param' => 'nombredelparametro'),
                ),
                'params' => array(
                    'fc' => 'module',
                    'module' => 'nombredelmodulo',
                    'controller' => 'controladordelmodulo',
                ),

            ));
    }

 

Ten en cuenta que deberás reemplazar ciertas palabras y nombres para que coincidan con los de tu módulo.  

 

Y por supuesto, en la parte de la instalación del módulo

$this->registerHook('moduleRoutes')

 

IMPORTANTE

Lo que hace prestashop con esta regla es crear una expresión regular que debe coincidir con la ruta. Asegúrate que las expresiones regulares que hay para cada palabra clave funcionan correctamente y devuelven un valor.

17-05-2015 14:17 Rodrigo Medina {writeRevision}
Valoración media: 5 (3 votos)

Puedes añadir un comentario

Chuck Norris has counted to infinity. Twice.