Jump to content

CMS o Categorias Privadas, solo usuarios registrados


Mimotxo

Recommended Posts

Hola 
Comunidad, 

 

Tengo la necesidad , bien de crear una pagina CMS o una Categoría al completo que solo pueda ser vista por los usuarios registrados, he visto que en versiones anteriores era mucho mas fácil que con la versión 1.6

 

Lo unico que me ha dado ALGO DE LUZ ha sido este mensaje ;

 

 

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:

  1. if (!self::$cookie->isLogged(true) AND $this->cms->id == XX)
  2. Tools::redirect('authentication.php');
  3. //XX es el id de la página de CMS que queremos proteger

Voilà, ya tenemos una página de CMS solo accesible para usuario autenticados.

Pero alguno de vosotros sabe donde se encuentra la función preProcess, o como puedo hacer que solo cierta parte sea visible para usuarios registrado?? 

 

Muchas gracias de antemano

Link to comment
Share on other sites

Puedes sobreescribirla en CmsController.php. Aunque el controlador actual no la tenga, el controlador del que hereda (FrontController) la llamará, y si la tienes sobreescrita la ejecutará.

Gracias Joseantgv, pero no encuentro ese archivo donde debería de estar??

 

No la veo ni en /html/classes/controller ni en /html/classes/

 

Graciasde nuevo y un saludo

Link to comment
Share on other sites

  • 5 months later...

Hola, y para que salga un texto en caso de no estar registrado? como se pone?

 

He intentado con este código (insertado en cms.tpl) que también he encontrado en el foro, (pero no quieren que se comente en él y que se abra un tema nuevo): 

 

{if $cookie->isLogged()and $smarty.get.id_cms == X}}

aquí el contenido del cms.tpl

{else}

aquí escribes tu mensaje para usuarios no registrados

{/if} 

 

pero con los usuarios no logueados no se abre ningún otro cms, y mi intención es que no se abra el que quiero, el resto si.

 

Y con el código que comenta al principio mimotxo, me sale "HTTP ERROR 500"

 

Que hago mal?

 

Gracias.

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

Hola, y para que salga un texto en caso de no estar registrado? como se pone?

 

He intentado con este código (insertado en cms.tpl) que también he encontrado en el foro, (pero no quieren que se comente en él y que se abra un tema nuevo): 

 

{if $cookie->isLogged()and $smarty.get.id_cms == X}}

aquí el contenido del cms.tpl

 

{else}

 

aquí escribes tu mensaje para usuarios no registrados

 

{/if} 

 

pero con los usuarios no logueados no se abre ningún otro cms, y mi intención es que no se abra el que quiero, el resto si.

 

Y con el código que comenta al principio mimotxo, me sale "HTTP ERROR 500"

 

Que hago mal?

 

Gracias.

 

Para lo del error 500 tienes que habilitar errores: https://www.prestashop.com/forums/topic/224525-how-to-turn-on-error-reporting-for-debug-information-blank-page-500-internal-server-error/

 

Para lo otro, debuga esas variables para ver qué valor tienen. Antes del if pon:

{$cookie->isLogged()}
{$smarty.get.id_cms}

Eso sirve para mostrar en el front esas variables. Haz las pruebas de usuario logado/sin logar, etc. a ver qué te aparece.

Link to comment
Share on other sites

Gracias por responder PrestaShop Fanatic, he colocado lo que comentas sobre el error 500 pero no he vuelto a colocar en cmscontroller.php lo que se comenta al principio.

Lo que si he modificado es lo que me comentas en CMS.TPL, pero me sigue saliendo que sólo es accesible para usuarios registrados en cualquier página cms.

Además, ahora cuando sale el texto avisando de que sólo es visible para registrados, me sale el número del csm correspondiente antes del texto.

Una vez registrado, es visible la pagina cms (tarifas), pero no el resto de paginas cms, como aviso legal, términos, etc.

Vamos por buen camino PrestaShop Fanatic?

Gracias.

Link to comment
Share on other sites

El codigo que estas utilizando es de version anteriores. Prueba algo asi

controllers\front\CmsController.php

en esta parte añade el codigo de color con el id de la pagina cms que quieras restringir

 

if (!$this->context->customer->isLogged() && $this->cms->id == 4){

$this->setTemplate(_PS_THEME_DIR_.'cms-access.tpl');

 } else {

 $this->setTemplate(_PS_THEME_DIR_.'cms.tpl');

 }

}

 

 

Crea un cms-access.tpl y lo subes a la carpeta de tu theme, con este contenido por ejemplo

<div class="alert alert-danger">{l s='not allowed access to this page'}</div>
Link to comment
Share on other sites

Realizando esta modificación (todo lo demás lo he dejado igual), me sale este error cuando quiero acceder a cualquier cms logueado y sin loguear

 

Parse error: syntax error, unexpected end of file, expecting function (T_FUNCTION) in /homepages/37/d515702085/htdocs/tienda/controllers/front/CmsController.php on line 145

 

He creado el cms-access.tpl y lo he guardado donde me indicas.

 

Cuando entro al menú inicio logueado me sale esto:

 

Notice: Undefined index: id_cms in /homepages/37/d515702085/htdocs/tienda/cache/smarty/compile/05/58/b2/0558b230061124138238313c46dc59be8b94f6df.file.cms.tpl.php on line 38

Notice: Undefined index: id_cms in /homepages/37/d515702085/htdocs/tienda/cache/smarty/compile/05/58/b2/0558b230061124138238313c46dc59be8b94f6df.file.cms.tpl.php on line 40
Este apartado es solo para usuarios registrados.

 

Cuando lo hago sin loguear, sólo me sale el parrafo correspondiente a la linea 38

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

Gracias, el primer error solucionado.

Con lo que he puesto siguiendo el comentario 8, puedo eliminar lo que comento yo del 5?, es que cuando pulso en el botón del menú INICIO sigue saliendo esto.

 

 
 

Notice: Undefined index: id_cms in /homepages/37/d515702085/htdocs/tienda/cache/smarty/compile/05/58/b2/0558b230061124138238313c46dc59be8b94f6df.file.cms.tpl.php on line 38

Notice: Undefined index: id_cms in /homepages/37/d515702085/htdocs/tienda/cache/smarty/compile/05/58/b2/0558b230061124138238313c46dc59be8b94f6df.file.cms.tpl.php on line 40
Este apartado es solo para usuarios registrados. }
 
Pero cuando pincho algo del menú desplegable sale esto otro aún estando logueao:
 
 > Envío de pedidos
 
1 1 Este apartado es solo para usuarios registrados. }
 
Edited by oncle (see edit history)
Link to comment
Share on other sites

Si elimina ese codigo que tienes que es el que te da errores. Para restringir categorias:

En el cms.tpl añade en esta parte el codigo en color

 

{elseif isset($cms_category) && $cms_category->id !=2}

<div class="block-cms">

 

 

Y para el mensaje de error , un poco mas abajo, sustituye esto

<div class="alert alert-danger">
{l s='This page does not exist.'}
</div>

por esto segun el id de la categoria

{if $cms_category->id ==2}
<div class="alert alert-danger">
{l s='Not allowed access to this page.'}
</div>
{else}
<div class="alert alert-danger">
{l s='This page does not exist.'}
</div>
{/if}
  • Like 2
Link to comment
Share on other sites

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