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.
Deja una respuesta