Prestashop: autenticación de páginas y contenidos
En algunos proyectos nos encontramos con la necesidad de crear páginas en la zona de mi cuenta, por ejemplo, hace poco me pidieron una página para que los clientes pudieran descargar los catálogos de tarifas completos del cliente. En el caso concreto se utilizó una página de CMS, pero si es necesario crear una página podéis ver somo se hace aquí.
En el caso de una página de cms basta hacer una extensión del controlador CMS, añadiendo en la función preProcess el siguiente código:
[php]
if (!self::$cookie->isLogged(true) AND $this->cms->id == XX)
Tools::redirect(‘authentication.php’);
//XX es el id de la página de CMS que queremos proteger
[/php]
Voilà, ya tenemos una página de CMS solo accesible para usuario autenticados.
En otras ocasiones sólo hay que ocultar ciertos datos en ciertas páginas, por ejemplo, de la home o de la ficha de producto. Este caso es mucho más sencillo, sólo hay que tocar el tpl (del tema o del módulo) donde se encuentre la información añadiendo un condicional:
[html]
{if $cookie->isLogged()}
Contenido solo para logueados
{/if}
[/html]
Nota: Existe un módulo para ocultar los precios cuando el visitante no está logueado, los ejemplos solo son para casos puntuales y es recomendable utilizarlo, porque si no hay que modificar bastantes cosas.
Autor: Juan Castells
Hola Juan, acabo de ver este tema tuyo buscando precisamente esto. He creado en prestashop una página cms para que el cliente logueado pueda descargarse unas tarifas. Bien, en la primera extensión que comentas, hay que colocarla en la página cmd creada o en la general de cms? No le falta un final de if para cerrar la
Condicional? Perdona mi ignorancia, pero estoy empezando con una web SHOP.
Gracias
Hola Xavier,
El código hay que ponerlo en el controlador. De hecho, como comento en el mismo artículo, lo suyo sería crear un override del controlador del CMS y redefinir la función preProccess con ese código añadido.
Al ser código php no es necesario que el condicional se abra y se cierre ya que sólo tiene una línea de código a la que influye
Buenos dias, gracias Juan por tu ayuda, me ha servido de mucho.
Saludos.
Un placer
Hola no soy programador disculpa mi ignorancia donde tendría que meterlo y como…. osea me podrás ayudar con el código completo de favor? te antemano gracias
Christopher, escríbeme mediante el formulario de contacto y me dices que versión de prestashop estás utilizando, a ver si te puedo echar una mano.
hola quisiera ocultar un cms pero para algunos grupos de clientes como lo hago…. de antemano gracias
Es algo más complicado porque los grupos a que pertenece un cliente no están en la cookie, pero te bastaría hacer lo siguiente:
$group = Customer::getGroupsStatic(self::$cookie->id_customer);
De esta manera tendrías un array con los grupos a los que pertenece el cliente. Ahora tendrías que modificar el condicional if para que filtrara según lo que necesites.
Si no te aclaras dímelo y lo vemos a fondo.