Home Tutoriales Plantillas Menu Principal Joomla con permisos mejorado

Menu Principal Joomla con permisos mejorado

icoDetalles Tutorial - Nivel : Avanzado, Versión Joomla : 1.5.x, Formato : texto y video.
Joomla por defecto oculta los items de menú que tienen los accesos restringidos, y el usuario tiene que conectarse para saber que existen, en este tutorial veremos cómo diferenciar con CSS y hacer visibles estos items de menú.

 

En el siguiente video se utiliza la técnica de Template Overrides para la modificación del comportamiento por defecto que tienen los items de menú con permisos.

Suscríbete a monitojoomla en youtube para que puedas ver todos los videos publicados

 

Resultado Final

Resultado Final

 

1 - Haciendo Overrides de mod_mainmenu

Buscamos dentro de la carpeta de la instalación de joomla la carpeta: /modules/mod_mainmenu/tmpl, esta carpeta la renombramos con el nombre del módulo (mod_mainmenu) y posteriormente la copiamos a nuestro template, por ejemplo: /templates/miTemplate/html/mod_mainmenu. Esta carpeta aloja el archivo default.php el cual modificaremos

 

2- Haciendo visible los items de menu con acceso restringido

Modificamos el archivo default.php, comentando el código entre las líneas 27 y 34, con esto ya será posible ver los items de menu con permisos, pero al tratar de acceder a un item de menú se presentará la pantalla de logueo.

/*if ($node->name() == 'ul') {
 foreach ($node->children() as $child)
 {
 if ($child->attributes('access') > $user->get('aid', 0)) {
 $node->removeChild($child);
 }
 }
 }*/

 

3- Colocando CSS para diferenciar los items con acceso restringido

Para hacer que los items con acceso restringido se puedan diferenciar como inaccesibles por un usuario visitante, modificamos nuevamente el código en el archivo default.php, entre las 76 y 77 aproximadamente, antes de la eliminación del atributo access ($node->removeAttribute('access')) agregamos las siguientes líneas de código:

if ($user->guest && $node->attributes('access')){
 if ($node->attributes('class')) {
 $node->addAttribute('class', $node->attributes('class').' registrado');
 } else {
 $node->addAttribute('class', 'registrado');
 }
}

El código anterior agrega una clase llamada registrado a los items que tienen acceso restringido, posteriormente podemos darle estilos a esta clase en el archivo de estilos de nuestro template, por ejemplo:

li.registrado a{
 color: #a3a3a3;
}

 

4- Conclusión

La flexibilidad que ofrece joomla nos permite personalizar su comportamiento por defecto, adecuándolo a nuestras necesidades, en este caso se hizo una modificación a los permisos de los items de menú con la técnica Template Overrides y nos evitamos de instalar una extensión de un tercero para tener la misma funcionalidad.

 

 

 

Comparte este postDel.icio.us! Google! Live! Facebook! Twitter! Joomla Free PHP
Comentarios (11)
  • Felipe
    avatar
    Hola Jhon,

    Buenisimos todos los videos y tips que muestras. Gracias por la ayuda.
  • Eduardo,
    avatar
    Estan Excelente los videos, Amigo no puede trabajar con otra resoluccion porque se visualiza las lineas de comando medio borrozo la resolocion recomendada es de 800x600px

    y gracias por estos materiales

  • Joel
    avatar
    Hola Jhon estan muy buena la pagina son de tremenda ayuda xD.

    Quiero hacerte una consulta que extension le instalaste al joomla para poder poner el codigo en un articulo por ejemplo

    1.
    if ($user->guest && $node->attributes('access')){
    2.
    if ($node->attributes('class')) {
    3.
    $node->addAttribute('class', $node->attributes('class').' registrado');
    4.
    } else {
    5.
    $node->addAttribute('class', 'registrado');
    6.
    }
    7.
    }

    espero tu respuesta gracias
  • Jhon Marreros
    avatar
    Hola Joel.

    Es un pluging llamado codecitation. Aqui te dejo la direccion en el JED.

    http://extensions.joomla.org/extensions/edition/code-display/8068

    Saludos.
  • Joel
    avatar
    Muchas gracias por tu respuesta tu pagina es excelente ayuda bastante en el mundo Joomla xD
  • alberto
    avatar
    hola....

    excelente tutorial me has ayudado en gran manera....
    sigue asi...

    Saludos!...
  • Fernando
    avatar
    Hola Jhon, muy bueno tu tutorial la verdad que me ayudaste mucho, no tan solo con este vídeo tutorial también pude aplicar los otros tutoriales a la primera web que estoy diseñando. Te quería consultar como realizas las plantillas? Por que la que tienes en este vídeo esta muy buena y me gustaría poder hacer una así para mi web, bien estilo web2, tan solo me queda agradecerte nuevamente por tu esfuerzo y espero que continúes, por que aprendo mucho con los vídeos. Espero tu respuesta.....
  • Jhon Marreros
    avatar
    Hola Fernando.

    Con respecto a la plantilla esta diseñada en Illustrator, retocada en photoshop y luego pasada a joomla. Como comprenderas es un poco complicado explicarte todo a través de un comentario; pero permanece atento, espero hacer algo que explique esto más al detalle.

    Saludos.
  • isaacmf
    avatar
    Hola, yo tambien estoy interesado en las plantillas, diseñarlas desde cero. Sería bueno que nos hicieras un tutorial o nos pudieras ayudar de como hacer plantillas.

    Gracias
  • Jesus
    avatar
    Perdona mi tardanza, pero me gustaria saber como haces para que aparezcan los menús de la izquierda, cuando pulsas en ellos y aparece la ventana de loguearse.
    El tutorial es muy bueno y sencillo de hacer pero cuando pulso en opciones en la que deben de loguarse los cuadros de ingreso me aparecen en ventana completa, no me aparecen los menús de la izquierda.
    Gracias
  • Gabriela
    avatar
    Hola Jhon, muy buena tu explicación me funcionó pero solo para 2 de mis menús, resulta que tengo un menu superior en mi sitio (www.anptuf.cl) y tengo algunos items con acceso registrado pero con el cambio en el codigo igual no los muestra para pedir acceso, por qué pasa esto???
    Otra duda que tengo, es que al dejar un item con acceso registrado del menu principal no sale el mensaje Usted debe estar registrado, sólo aparece el formulario para loguearse.
    Espero puedas ayudarme con esto, muchas gracias.
    Saludos.
Escribir comentario
Gravatar enabled