viernes, 20 de diciembre de 2013

Joomla cómo determinar si el usuario está viendo la página principal

Joomla 1.0

En Joomla! 1.0.x fue posible determinar si el usuario estaba viendo la primera página utilizando código como este:

<?php
if ($option == 'com_frontpage' || $option == '') {
        echo 'Esta es la página principal';
}
?> 

Joomla 1.5 

Pero en Joomla! 1.5.x el componente com_frontpage ya no está presente. Esta es la forma de lograr el mismo resultado en Joomla! 1.5.x

<?php
$menu = & JSite::getMenu();
if ($menu->getActive() == $menu->getDefault()) {
        echo 'Esta es la página principal';
}
?> 

Esto funciona mediante la comprobación para ver si el elemento de menú activa actual es el valor predeterminado.

Joomla 2.5 and 3.x series

Hay algunas diferencias en 1.6/1.7/2.5 para evitar errores de normas estrictas. Utilice el siguiente código para un sitio donde todo el contenido está en el mismo idioma:

<?php
$app = JFactory::getApplication();
$menu = $app->getMenu();
if ($menu->getActive() == $menu->getDefault()) {
        echo 'Esta es la página principal';
}
?> 

Para los sitios multilingües la primera página depende del idioma seleccionado en ese momento, por lo que tendrá que utilizar un código como este:

<?php
$app = JFactory::getApplication();
$menu = $app->getMenu();
if ($menu->getActive() == $menu->getDefault( 'en-GB' )) {
        echo 'Esta es la página principal';
}
elseif ($menu->getActive() == $menu->getDefault( 'fr-FR' )) {
        echo 'Accueil';//Bienvenido
}
?> 

Para los sitios multilingües aussi podría ser necesario para mostrar un código / html específico para todas las páginas de inicio por defecto.

<?php
$app = JFactory::getApplication();
$menu = $app->getMenu();
$lang = JFactory::getLanguage();
if ($menu->getActive() == $menu->getDefault($lang->getTag())) {
        echo 'Esta es la página principal';
}
else {
        echo 'Accueil';//Bienvenido
}
?>