6 minutos de lectura ( 1205 palabras)

Override J!3 - Personalizando "mod_articles_popular"

Override J!3 - Personalizando "mod_articles_popular"

Muchas veces creemos, que para poder personalizar un sitio a nuestro gusto hay que instalar, e instalar extensiones de terceros, y jugar con su configuración para poder obtener una personalización acorde a lo que queremos. Pero, ¿quedará exactamente como tu la quieres? No lo creo.

Seguimos con nuestra serie de personalizando el núcleo de nuestro Joomla 3 . En esta ocasión le toca a un módulo, que es poco utilizado a pesar que lo tiene todo, como para no instalar un módulo de terceros que sustituya su función. Me refiero al módulo para mostrar los artículos más populares (según la cantidad de vistas del artículo) en Joomla.

Modulo - Artículos Populares

Este módulo tiene pocas opciones en su configuración. Solamente cuenta con la opción de elegir la categoría de donde van a ser escogidos los artículos, la cantidad de artículos a mostrar y elegir si se muestran los artículos destacados.

Opciones del módulo

Una vez configuradas estas opciones, y puesto la posición en la que va a salir en nuestro sitio web, se vería algo como esto (en este caso en el sitio se muestra los datos que instala Joomla por defecto):

Vista por defecto del módulo

Como ven, a parte de que el estilo es una lista no ordenada de artículos, en mi opinión el que se muestre de esta forma, y solamente mostrando los títulos de los artículos, nunca me ha convencido. Por lo menos nunca nadie me ha pedido que muestre los artículos "más populares" de esa forma, siempre quieren mostrar algo más, por ejemplo, el texto de introducción del artículo. A parte, ese estilo por defecto, no convence "visualmente" a muchos clientes.

¿Que hacer? ¿Instalar una extensión del JED? NOO!!!!. Porque recargar tu sitio, cuando puedes lograr lo que quieres, con unas cuantas líneas de código. Es verdad que a veces no tenemos tiempo para esto, o no sabemos nada de código y no queremos meternos en más complicaciones, pero creo que la decisión de tener instaladas extensiones innecesariamente, depende de que tan bien queremos que salgan nuestros sitios web. En mi opinión estar instalando extensiones y extensiones deliberadamente, es una práctica muy poco profesional. No digo que no se instalen extensiones de terceros, ya que hay algunas extensiones que siempre "TIENEN" que ir en un Joomla, pero prefiero perder un poco de mi tiempo aprendiendo a personalizar algunas del núcleo de Joomla, para lograr una funcionalidad en particular, que no buscar una de afuera que lo que me hara es recargar el sitio.

Por ello, manos a la obra, y entremos en materia.

¿Qué nos brinda?

Primero observemos que nos brinda este módulo que podamos usar en nuestra personalización. Lo dividire en dos explicaciones, una que lo entiendan todos aquellos que les guste el mundo del código, y otra en caso contrario, que no se entiendan mucho con este mundo.

Con código

Si nos fijamos en el archivo helper.php del módulo, el cual es el encargado de hacer todas las consultas necesarias para recoger los datos que muestra el módulo, nos daremos cuenta de estas dos líneas:

JModelLegacy::addIncludePath(JPATH_SITE.'/components/com_content/models', 'ContentModel');
$model = JModelLegacy::getInstance('Articles', 'ContentModel', array('ignore_request' => true));

La primera aparece en la línea 14, y su función es añadir un directorio donde la clase "JModel" buscará todos los "modelos" de la ruta que se le pasa como parametro. La segunda, que aparece en la línea 27, se escoge el modelo que se quiere usar. En este caso es el modelo que se usa para recoger todos los datos de los artículos en Joomla cuando se esta mostrando una lista de ellos. ¿Sorprendido? pues deberías, porque esto quiere decir que puedes mostrar casi todos los datos que en ese modelo se recogen, es decir, todos los datos que posee la tabla "com_content".

Sin código

El módulo es capaz de mostrar los mismos datos que se muestran en un listado de artículos. Por ejemplo, cuando mostramos una categoría en formato blog, y mostramos un listado de artículos, todos los valores que se pueden mostrar ahí, se pueden perfectamente mostrar en este módulo.

¿Qué brindamos?

Lo primero a realizar es nuestro override. En el artículo pasado, explicamos como se realiza un override a un módulo, por lo que nos ahorraremos este paso. Sería lo mismo, pero para este módulo que se llama "mod_articles_popular".

Una vez hecho este override, entramos en el archivo default.php que pusimos en la carpeta html -> mod_articles_popular. Dentro encontraremos el siguiente código: 

<ul class="mostread<?php echo $moduleclass_sfx; ?>">
   <?php foreach ($list as $item) : ?>
      <li>
         <a href="/<?php echo $item->link; ?>">
            <?php echo $item->title; ?></a>
      </li>
   <?php endforeach; ?>
</ul>

La línea que les resalte, es la encargada de mostrar el título del artículo, en el listado que muestra el módulo por defecto. Bueno, y si queremos mostrar también el texto de introducción del artículo, ¿que hacemos? Fácil, añadimos lo siguiente: 

<ul class="mostread<?php echo $moduleclass_sfx; ?>">
   <?php foreach ($list as $item) : ?>
      <li>
         <a href="/<?php echo $item->link; ?>">
            <?php echo $item->title; ?></a>
            <?php echo $item->introtext; ?>
      </li>
   <?php endforeach; ?>
</ul>

Con esto puesto, el módulo se muestra de la siguiente forma:

Personalización - Texto de IntroducciónPersonalización - Texto de Introducción (Clic para ampliar imagen)

Como ven, el texto de introducción, es decir, el que esta por encima del "leer más", ya se muestra en nuestro módulo. Con este sencillo cambio, y ya el módulo parece otra cosa ¿no creen?

Bueno, y ya que estamos hablando del módulo que muestra los artículos populares, en dependencia de la cantidad de visitas que ha tenido cada artículo, porque no mostramos cual es esa cantidad. Para ello ponemos la siguiente línea: 

<ul class="mostread<?php echo $moduleclass_sfx; ?>">
   <?php foreach ($list as $item) : ?>
      <li>
         <a href="/<?php echo $item->link; ?>">
            <?php echo $item->title; ?></a>
            <?php echo $item->introtext; ?>
            <?php echo $item->hits; ?>
      </li>
   <?php endforeach; ?>
</ul>

Con esto puesto, el módulo se muestra de la siguiente forma:

Personalización - Cantidad de VisitasPersonalización - Cantidad de Visitas (Clic para ampliar imagen)

Otra línea pequeña, hace un cambio grande, cada vez me gusta más Joomla :) . Como ven, pueden mostrar tantos datos como quieran, autor, imagenes, categoría, fecha de publicación....etc, todo lo que te haga falta, y sin necesidad de instalar una extensión de terceros. Ademas, si a esto le añadimos algunos estilos CSS, pues visualmente logramos todo lo necesario en nuestro módulo. Y más, porque por ejemplo, si eres conocedor del framework que utiliza Joomla para el frontend, Bootstrap, pues puedes hacer maravillas, hasta un slideshow de tus artículos más populares.

Hagan que sus sitios gozen de todo el potencial de Joomla, y no instales extensiones innecesarias. 

Conclusiones

Espero hayan podido hacer este pequeño, pero grandioso override. Seguiremos en otros artículos con otras extensiones del núcleo de Joomla. Si desean profundizar en algunos, o si desean hacer algo específico en algunos, no duden de dejar un comentario para realizar su propuesta y así aprender todos. 

0
Resoluciones Joomla! para el 2014
Plugin de autentificación doble
 

Comentarios

¿Ya està registrado? Ingresa Aquí
No hay comentarios por el momento. Sé el primero en enviar un comentario.

By accepting you will be accessing a service provided by a third-party external to https://magazine.joomla.org/