Mostrar u ocultar una capa o un módulo sólo en la página de inicio de un Joomla!

Mostrar u ocultar una capa o un módulo solo en la página de inicio de un Joomla!

Si trabajas con Joomla!, no es de extrañar que, pese a la flexibilidad de la herramienta, haya cosas que tengamos programar nosotros. Ya sea porque tenemos un tema que queremos personalizar un poco más o sea porque el tema lo estamos haciendo nosotros, puede interesarnos ser más selectivos a la hora de mostrar contenido o no en la página de inicio.

Lo que vamos a ver es cómo ocultar (o mostrar) una capa, un módulo o cualquier otro tipo de contenido que queramos sólo en la home de nuestra web, sin afectar al resto de las páginas. Como actualmente existen varias versiones de Joomla!, vamos a ver cómo se puede hacer en cada una de ellas.

Antes de nada, tendremos que encontrar el archivo que define la estructura de la plantilla. Éste se encontrará normalmente dentro de la carpeta templates, en el directorio del tema que actualmente tengamos activo, será el archivo index.php.

Una vez encontrado, iremos a la zona del código que queremos ocultar en la página de inicio y usaremos los siguientes condicionales, dependiendo de la versión que se trate.

Joomla! 1.0

if ($option != 'com_frontpage' || $option != '') {
    <div>Contenido a ocultar</div>;
}

Joomla! 1.5

getActive() != $menu->getDefault()) {
    <div>Contenido a ocultar</div>;
}

Joomla! 2.5 y Joomla! 3.0 en adelante

$app = JFactory::getApplication();
$menu = $app->getMenu();
if ($menu->getActive() != $menu->getDefault()) {
    <div>Contenido a ocultar</div>;
}

Estos condicionales, lo que hacen es mostrar el contenido que se encuentra dentro sólo si el usuario no está viendo la página de inicio del Joomla!, es decir, que si la se está viendo la home, no se mostrará lo que hay dentro.

Esta funcionalidad sirve también para lo contrario si queremos, para mostrar un determinado contenido sólo en la portada de nuestra web. Para hacerlo, basta con cambiar el operador de desigualdad != por el de igualdad ==.

Para más información puedes ver la documentación técnica de Joomla! sobre cómo determinar si un usuario está viendo la página de inicio, de gran utilidad cuando tenemos contenido multilenguaje.

8 respuestas a «Mostrar u ocultar una capa o un módulo solo en la página de inicio de un Joomla!»

  1. Avatar de Oscar
    Oscar

    Hola! Por casualidad no sabrás cómo ocultar parte de un articulo para que solo lo puedan ver usuarios registrados? (es decir, dentro de una publicación una parte quedaría invisible hasta que te logueases) Antes había un editor que permitía hacerlo pero ahora ya.. :/

    1. Avatar de Jesús Tovar

      Hola Oscar,

      la verdad es que no he necesitado hacerlo nunca y no sabría decirte en este momento, pero sí que lo he visto en diversos sitios como periódicos digitales y es una función que me resulta interesante.

      Dejando a un lado que pueda existir ya extensión para ello, se me ocurren varias maneras de implementarlo en la web, dependiendo de lo que nos queramos complicar. Una podría consistir en usar una etiqueta con un identificador para rodear el texto que queremos ocultar o a la inversa y después asegurarse que el contenido solo se muestra si hay una sesión abierta. Otra podría ser estableciendo un límite de caracteres para mostrar el contenido si no se ha hecho login. Esto último creo que al menos antes Joomla! permitía hacerlo nativamente, no se si eso es lo que dices que han quitado ahora.

      Quizá me anime más adelante a investigarlo en profundidad y hacer un artículo al respecto.

      Un saludo.

  2. Avatar de Gilberto
    Gilberto

    lo he intentado ocultar desde el backend, no programando pero bueno si me das la opcion de programar me sirve igual, slds

    1. Avatar de Jesús Tovar

      Si lo has intentado desde el backend y la plantilla te ignora, entiendo entonces que el menú principal está vinculado a un módulo dinámico de Joomla en lugar de ser fijo. Mal asunto, ¿no dispones de una dirección de soporte técnico de la plantilla?

      Programando nunca se me ha terciado hacerlo, de modo que no te puedo dar un código testeado que funcione, pero sí que te puedo dar una aproximación si te sirve.

      Lo que tendrías que hacer en este caso es buscar el archivo de la plantilla que carga el módulo y meterlo en un condicional, que compare la url o el id del elemento de menú actual, con el que quieres ocultar. Debería ser algo así:

      $app = JFactory::getApplication();
      $menu = $app->getMenu()->getActive()->id;
      if ($menu != IDdetusmenus) {
      [Módulo del menú]
      }

      De este modo sólo se mostrará el menú si no coincide con ninguno de los «IDdetusmenus» (ahí los especificarías). No es la mejor fórmula para hacerlo ya que tendrás que especificar uno a uno los ID, pero puede que te sirva. Eso sí, como te decía, no lo he probado nunca, pero es un buen punto de partida.

      Un saludo.

  3. Avatar de Gilberto
    Gilberto

    Hola yo quiero ocultar el menu principal de la plantilla en un grupo de paginas a las q se accedera desde otro menú, ya he tratado de modificar el modulo al q esta asociado el menu principal para q no se visualice en esas paginas pero no me hace nada….me puede ayudar??

    1. Avatar de Jesús Tovar

      Hola Gilberto,
      ¿te refieres a que lo has intentado ocultar desde el panel de control de Joomla o programando?

  4. Avatar de Anónimo
    Anónimo

    Buen dia, soy un alumno que esta aprendiendo Joomla, y aun no encuentro en donde poner el codigo que menciona, le agradeceria si me pudiera ayudar… De antemano muchas gracias.

    1. Avatar de Jesús Tovar

      Hola, debes encontrar el archivo que carga tu plantilla de Joomla. Habitualmente es el index.php del tema que tengamos activo y que encontraremos en la carpeta templates del servidor.

Deja una respuesta

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