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



8 respuestas a “Prestashop: autenticación de páginas y contenidos”

  1. Xavier Figueras dice:

    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

  2. nadinne dice:

    Buenos dias, gracias Juan por tu ayuda, me ha servido de mucho.
    Saludos.

  3. Cristhoper Lopez dice:

    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

    • admin dice:

      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.

  4. Cristhoper Lopez dice:

    hola quisiera ocultar un cms pero para algunos grupos de clientes como lo hago…. de antemano gracias

    • admin dice:

      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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *