Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Nuevo problema en la plantilla de Joomla

6 de febrero de 2015

Al final conseguí solucionar el problema del buscador añadiendo este código y eliminando el otro:

$itemid = JRequest::getVar('Itemid');
$app = JFactory::getApplication();
$menu = $app->getMenu();
if ($menu->getActive() == $menu->getDefault()) {
    // ...
}
?>

Ahora el buscador funciona de maravilla, pero al cargar la página me sale otro error:

Notice: Undefined variable: pageclass i
 C:\xampp\htdocs\hogaradas\templates\favourite\index.php on line 67

Y en esa línea pone:

<body<?php echo (($pageclass) ? ' class="favbody'.htmlspecialchars($pageclass).'"' : ''); ?>>

A ver si puedes echarme un cable. Gracias.


Respuestas

#1

Esta vez creo que el error va a ser fácil de solucionar. Como el error dice que la variable $pageclass no está definida, lo único que tenemos que hacer es añadir una comprobación a esa variable antes de intentar utilizarla.

En PHP tienes una función llamada isset() que precisamente lo que hace es comprobar si la variable que le pasas como argumento existe y su valor es distinto a null. Así que puedes cambiar la línea 67 por lo siguiente (que es casi lo mismo):

<body <?php echo (isset($pageclass) ? 'class="favbody'.htmlspecialchars($pageclass).'"' : ''); ?>>

Un pequeño consejo adicional: esta línea de código lo que hace es añadir el atributo class="..." al elemento <body> de la página cuando la variable $pageclass está definida. Si la variable no existe, no se añade ese atributo class. En mi opinión, es mejor imprimir siempre el atributo class y dejarlo vacío cuando la variable no exista (<body class=""> es perfectamente válido y no va a afectar en nada a la página). De esta manera, el código PHP es mucho más fácil de entender:

<body class="<?php echo isset($pageclass) ? 'favbody'.htmlspecialchars($pageclass) : ''; ?>">

@javiereguiluz

6 febrero 2015, 17:58
#2

Bingo!! Mil gracias, todos los problemas resueltos, al menos por ahora. Un saludo

@hogaradas

7 febrero 2015, 9:45
#3
Hola, tengo el mismo problema que tú:
 
Podrías pegarme el código que usaste para solucionarlo?
Me refiero a:
 
$itemid = JRequest::getVar('Itemid');
$app = JFactory::getApplication();
$menu = $app->getMenu();
if ($menu->getActive() == $menu->getDefault()) {
 
    // ...
}
?>
 
Estoy usando la misma plantilla que tú, creo

@Sr_Luster

13 noviembre 2015, 13:04
#4

Mi plantilla es favourite, y en el archivo index.php tengo esto

$itemid = JRequest::getVar('Itemid'); $app = JFactory::getApplication(); $menu = $app->getMenu(); if ($menu->getActive() == $menu->getDefault()) {

} ?>

@hogaradas

19 noviembre 2015, 12:53