sábado, 20 de julio de 2013

Arreglo temporal para el módulo Artículos Archivados (JOOMLA 3.1)

Bueno me he encontrado con un problema que se presenta con el módulo para mostrar una lista con los meses en los que hay artículos archivados en Joomla 3.1.

Si todo fuera bien debería mostrarse un enlace de un mesen concreto si en dicho mes se publicó algún articulo que haya sido archivado. Sin embargo, el módulo muestra un enlace a la lista de artículos de cada mes por cada artículo de dicho mes. Esto hace que si en Junio 2013 tenemos 15 artículos archivados y el módulo lo configuramos para que muestre 15 enlaces... solo veríamos 15 enlaces iguales todos ellos apuntando a la lista de artículos de Junio 2013... en fin, un despropósito.

Desconozco si esto lo consideran un fallo o si simplemente es que está a medio hacer. O también puede ser que mi aun limitado conocimiento de Joomla 3.1 me este jugando una mala pasada. Sea como fuere así es como lo he arreglado.

He modificado el archivo default.php que se encuentra en la carpeta del módulo:
Joomla_path / modules / mod_articles_archive / tmpl /


<?php
/**
 * @package     Joomla.Site
 * @subpackage  mod_articles_archive
 *
 * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;
?>
<?php if (!empty($list)) :?>
<ul class="archive-module<?php echo $moduleclass_sfx; ?>">
<?php
//Dos variables
//$link para guardar el enlace asociado a cada elemento de la lista e ir comprando
//$numLinks para contar cuantas veces aparece repetido un enlace.
$link="";
$numLinks=1;
foreach ($list as $ind=>$item) : 
if($link==""){
//Primera enlace de la lista. Simplemente asignamos el valor del enlace.
$link=$item->link;
}
if($link!=$item->link || $ind+1==count($list)){
/* Si el enlace del elemento actual es diferente al que vamos guardando 
* o si estamos en el ultimo elemento de la lista habremos de mostrar 
* el enlace y el acumulado
*/
?>
<li>
<a href="<?php echo $item->link; ?>">
<?php echo $item->text. " (".$numLinks.")"; ?>
</a>
</li>
<?php
/* Si hemos escrito un enlace significa que hay que esperar por si hubiera otro
* de modo que inicializamos el contador y reasignamos el link para comparar
*/
$numLinks=1;
$link=$item->link;
  }else{
//Si no se dan las condiciones antes descritas incrementamos el contador
$numLinks++;
}
endforeach; ?>
</ul>
<?php endif; ?>


La salida que obtengo ahora de este módulo es algo así
  • Enero, 2013 (16)
  • Febrero, 2013 (7)
  • Marzo, 2013 (11)


Espero que a alguien le resulte útil.

No hay comentarios:

Publicar un comentario