Mimotxo Posted April 8, 2016 Share Posted April 8, 2016 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: 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 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 More sharing options...
joseantgv Posted April 8, 2016 Share Posted April 8, 2016 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á. Link to comment Share on other sites More sharing options...
Mimotxo Posted April 8, 2016 Author Share Posted April 8, 2016 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 More sharing options...
joseantgv Posted April 8, 2016 Share Posted April 8, 2016 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 /controllers/front/CmsController.php Link to comment Share on other sites More sharing options...
oncle Posted September 23, 2016 Share Posted September 23, 2016 (edited) 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 September 23, 2016 by oncle (see edit history) Link to comment Share on other sites More sharing options...
joseantgv Posted September 24, 2016 Share Posted September 24, 2016 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 More sharing options...
oncle Posted September 24, 2016 Share Posted September 24, 2016 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 More sharing options...
ventura Posted September 24, 2016 Share Posted September 24, 2016 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 More sharing options...
oncle Posted September 24, 2016 Share Posted September 24, 2016 (edited) 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: 1 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 40Este apartado es solo para usuarios registrados. Cuando lo hago sin loguear, sólo me sale el parrafo correspondiente a la linea 38 Edited September 24, 2016 by oncle (see edit history) Link to comment Share on other sites More sharing options...
ventura Posted September 24, 2016 Share Posted September 24, 2016 Te falta un cierre } Link to comment Share on other sites More sharing options...
oncle Posted September 24, 2016 Share Posted September 24, 2016 (edited) 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. INICIO TARIFAS 1 Notice: Undefined index: id_cms in /homepages/37/d515702085/htdocs/tienda/cache/smarty/compile/05/58/b2/0558b230061124138238313c46dc59be8b94f6df.file.cms.tpl.php on line 38Notice: Undefined index: id_cms in /homepages/37/d515702085/htdocs/tienda/cache/smarty/compile/05/58/b2/0558b230061124138238313c46dc59be8b94f6df.file.cms.tpl.php on line 40Este apartado es solo para usuarios registrados. } Pero cuando pincho algo del menú desplegable sale esto otro aún estando logueao: INICIO TARIFAS > Envío de pedidos 1 1 Este apartado es solo para usuarios registrados. } Edited September 24, 2016 by oncle (see edit history) Link to comment Share on other sites More sharing options...
ventura Posted September 24, 2016 Share Posted September 24, 2016 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} 2 Link to comment Share on other sites More sharing options...
oncle Posted September 26, 2016 Share Posted September 26, 2016 Muchas gracias, Ventura. Funciona perfecto! Un saludo. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now