Duda override

Para cualquier duda sobre Joomla! 3.x que no tenga cabida en alguno de los foros de más abajo.

Moderator: hefesto

Locked
vieri78
Joomla! Enthusiast
Joomla! Enthusiast
Posts: 103
Joined: Tue Jul 27, 2010 5:13 pm

Duda override

Post by vieri78 » Mon Feb 23, 2015 2:37 pm

Hola,

Me encuentro con una duda al respeto del override y presentación alternativa.

En una web hay dos categorias creadas (categoria1 y categoria2).

Para cada una de las categorias es requerido un tipo de visualización distinta, esto se puede realizar con override y las presentaciones alternativas, hasta aquí todo bien.

La duda está en que para mostrarlo, el usuario tiene que especificarlo en cada articulo, es decir la pestaña opciones tiene que seleccionar que presentación quiere que se vea, mi pregunta és: ¿Es posible configurar esto de forma automatica, mediante la categoria, sin que el usuario tenga que especificarlo en cada articulo ? (definir en la categoria la vista para los articulos en formato blog y la vista para cada uno de los articulos)

Muchas gracias.

User avatar
willin
Joomla! Enthusiast
Joomla! Enthusiast
Posts: 125
Joined: Wed Jul 09, 2008 9:14 am
Location: Iquique@Chile
Contact:

Re: Duda override

Post by willin » Mon Feb 23, 2015 2:46 pm

Hola Jordi!
Una posible solución sería agregar a la opción de edición del artículo desde el frontend el parámetro para elegir el layout del artículo. Desconozco si a través de una nueva pestaña o dentro de las pestañas ya existentes, pro como te señalo, es una de las alternativas que se me ocurren frente a lo que nos comentas.
Guillermo Bravo O.

vieri78
Joomla! Enthusiast
Joomla! Enthusiast
Posts: 103
Joined: Tue Jul 27, 2010 5:13 pm

Re: Duda override

Post by vieri78 » Mon Feb 23, 2015 3:15 pm

Dandole vueltas al tema, se me ocurre también hacer lo siguiente:

Dentro del override (template/html/com_content/article/default.php), poner lo siguiente:

Code: Select all

   $categoria_especial = 9; // La ID de la categria deseada
   if($this->item->catid == $categoria_especial){
       include "nuevo_archivo.php";
   }else{
Y después del else dejar todo lo que está puesto en el archivo default.php, así si detecta que estamos en la categoria en cuestión muestra la vista segun el archivo especificado sinó muestra el por defecto, a esto creo que también se le podria ir añadiendo mas condicionales con las diferentes categorias que se deseara ..

No sé si esta forma és la correcta o no .. A ver si algún programador me puede asesorar si está bien hecho o no.

Saludos !

User avatar
phproberto
Joomla! Apprentice
Joomla! Apprentice
Posts: 26
Joined: Sat Apr 21, 2012 11:06 pm
Location: Valencia (Spain)
Contact:

Re: Duda override

Post by phproberto » Mon Feb 23, 2015 3:48 pm

Hola Jordi,

creo que vas en la buena dirección pero en vez de intentar aplicar los ids a pelo puedes hacer layouts dependientes del layout de la categoría. Algo como:

Code: Select all

$categoryLayout = $params->get('category_layout', '_:default');
$articleLayout = str_replace('_:', '', $categoryLayout);
$layoutPath = __DIR__ . '/' . $articleLayout . '.php';

if ($categoryLayout != '_:default' && file_exists($layoutPath))
{
	$this->item->params->set('article_layout', '_:' . $articleLayout);

	include $layoutPath;

	return;
}
De esta forma para una categoría del tipo blog el sistema buscaría una vista de artículo de tipo blog y así para cualquier otro layout que crees para las categorías.

No lo he probado :D

vieri78
Joomla! Enthusiast
Joomla! Enthusiast
Posts: 103
Joined: Tue Jul 27, 2010 5:13 pm

Re: Duda override

Post by vieri78 » Mon Feb 23, 2015 3:52 pm

Gracias por la respuesta Roberto !

Este codigo lo pondria al igual que he puesto el mio, en el default.php ?

User avatar
phproberto
Joomla! Apprentice
Joomla! Apprentice
Posts: 26
Joined: Sat Apr 21, 2012 11:06 pm
Location: Valencia (Spain)
Contact:

Re: Duda override

Post by phproberto » Mon Feb 23, 2015 4:34 pm

Sí, lo ideal sería hacerlo antes de que la página haga nada. Después de:

Code: Select all

defined('_JEXEC') or die;
Como no tendrás acceso al shorcut $params tendría que ser algo así (solo he cambiado $params por $this->item->params ):

Code: Select all

$categoryLayout = $this->item->params->get('category_layout', '_:default');
$articleLayout = str_replace('_:', '', $categoryLayout);
$layoutPath = __DIR__ . '/' . $articleLayout . '.php';

if ($categoryLayout != '_:default' && file_exists($layoutPath))
{
   $this->item->params->set('article_layout', '_:' . $articleLayout);

   include $layoutPath;

   return;
}
De esta forma default.php se convierte en un proxy para cualquier layout además de ser el layout por defecto.

vieri78
Joomla! Enthusiast
Joomla! Enthusiast
Posts: 103
Joined: Tue Jul 27, 2010 5:13 pm

Re: Duda override

Post by vieri78 » Tue Feb 24, 2015 8:16 am

Hola Roberto,

Por lo que entiendo, esto sirve para el override de los articulos. Poniendo el codigo que me comentas en el default.php de "template/html/com_content/article" tengo un layout por defecto y luego cada archivo que añada aquí en esta carpeta (ej: "nombre.php") es un nuevo layout que lo puedo selecciono en el backend en las opciones de las categorias.

¿ És correcto ? ¿ Lo he interpretado bien ?

Saludos !

neoloopy
Joomla! Apprentice
Joomla! Apprentice
Posts: 35
Joined: Sun Sep 02, 2012 3:44 pm
Location: Argentina

Re: Duda override

Post by neoloopy » Tue Mar 03, 2015 11:41 pm

hola vieri78

me parece que el codigo de roberto lo que hace es buscar un layout partiendo del nombre que se seleccione en los parametros de la categoria. Por ejemplo si seleccionas el layout llamado categoria1 pues el código intentará cargar un layout llamado categoria1.php en caso de no encontralo buscará default.php

espero te sirva... :)


Locked

Return to “Joomla! 3.x”