Creación de módulos para joomla 1.6 con acceso a base de datos desde cero

En nuestro artículo anterior se dio a conocer desde cero como implementar un módulo para la nueva versión de joomla 1.6, ahora implementamos desde cero un módulo para joomla 1.6 extrayendo datos utilizando el nuevo motor de consultas, describimos línea a línea lo que se realiza así como todo el codigo necesario en sus archivos y su descarga respectiva.
Definiendo lo que realizará nuestro módulo.
Nuestro módulo tendrá 2 parámetros del lado del administrador, mostrar y número de artículo, mostrar: tiene 2 opciones si/no, y un cuadro de texto para digitar el número de artículo que se desea mostrar al cliente, si la opción mostrar tiene seleccionado SI, pues entonces se mostrará el título y el texto de introducción extraido de la base de datos de joomla, de la tabla de contenidos y de acuerdo al item digitado, de lo contrario no mostrará nada.
Se mantiene la estructura de archivos y carpetas del artículo anterior, a continuación la descripción y contenido de cada uno de los archivos.

Carpeta: Mod_articulosbd.- Carpeta que contiene todos los archivos necesarios para el correcto funcionamiento de nuestro módulo.
Index.html. Archivo en blanco, sólo por seguridad en el caso de que quieran acceder directamente a la carpeta.
Mod_articulosbd.xml. Archivo instalador que contiene las instrucciones XML para su correcta instalación del módulo en nuestro gestor de contenidos.
[php]
<?xml version=»1.0″ encoding=»utf-8″?>
<extension
type=»module»
version=»1.6.0″
client=»site»>
<name>mod_articulosbd</name>
<author>Jollenetworks.com</author>
<creationDate>Marzo 2011</creationDate>
<copyright>Copyright (C) 2008 – 2011 All rights reserved.</copyright>
<license>Leer licencia</license>
<authorEmail>mail@jollenetworks.com</authorEmail>
<authorUrl>www.jollenetworks.com</authorUrl>
<version>1.6.0</version>
<description>Este es un ejemplo de la creación de un módulo siguiedo la estructure MVC para joomla version 1.6 utilizando el motor de consultas para extraer un artículo en partícular, con un botones de opción y un campo texto</description>
<files>
<filename
module=»mod_articulosbd»>mod_articulosbd.php</filename>
<folder>tmpl</folder>
<filename>helper.php</filename>
<filename>index.html</filename>
<filename>mod_articulosbd.xml</filename>
</files>

<config>
<fields name=»params»>
<fieldset name=»basic»>
<field
name=»mostrar»
type=»radio»
default=»0″
label=»Mostrar Articulo»
description=»Activar o desactivar según se desee, para mostrar el articulo en el lado del cliente»>
<option
value=»1″>Si</option>
<option
value=»0″>No</option>
</field>
<field
name=»nroarticulo»
type=»text»
default=»24″
label=»Escribir el id del articulo»
description=»Aqui escribir el id del articulo que se desea mostrar del lado del cliente» />
</fieldset>
<fieldset
name=»advanced»>
<field
name=»layout»
type=»modulelayout»
label=»JFIELD_ALT_LAYOUT_LABEL»
description=»JFIELD_ALT_MODULE_LAYOUT_DESC» />
<field
name=»moduleclass_sfx»
type=»text»
label=»COM_MODULES_FIELD_MODULECLASS_SFX_LABEL»
description=»COM_MODULES_FIELD_MODULECLASS_SFX_DESC» />
<field
name=»cache»
type=»list»
default=»1″
label=»COM_MODULES_FIELD_CACHING_LABEL»
description=»COM_MODULES_FIELD_CACHING_DESC»>
<option
value=»1″>JGLOBAL_USE_GLOBAL</option>
<option
value=»0″>COM_MODULES_FIELD_VALUE_NOCACHING</option>
</field>
<field
name=»cache_time»
type=»text»
default=»900″
label=»COM_MODULES_FIELD_CACHE_TIME_LABEL»
description=»COM_MODULES_FIELD_CACHE_TIME_DESC» />
<field
name=»cachemode»
type=»hidden»
default=»static»>
<option
value=»static»></option>
</field>
</fieldset>
</fields>
</config>
</extension>
[/php]
Mod_articulosbd.php. Archivo que envía del archivo controlador (helper.php) hacia la vista (tmpl/default.php)
[php]
<?php

// para que no se pueda tener acceso por otro lado a menos que se llame correctamente el módulo
defined(‘_JEXEC’) or die;

// Incluimos nuestro archivo de ayuda que contiene nuestra clase con sus respectivos métodos
require_once dirname(__FILE__).DS.’helper.php’;

//asignamos a una variable los parámetros recogidos por nuestra clase
$list = modArticulosbdHelper::getList($params);

//le asginamos a una variable el sufijo de un clase, es otro parámetro del lado del administrador
$moduleclass_sfx = htmlspecialchars($params->get(‘moduleclass_sfx’));
//se llama al archivo que contendrá finalmente la vista del módulo por el lado del cliente
require JModuleHelper::getLayoutPath(‘mod_articulosbd’, $params->get(‘layout’, ‘default’));

?>
[/php]
Helper.php. Archivo controlador que contiene las clases y métodos para recuperar los datos utilizando el motor de consultas de joomla 1.6 y posteriormente procesarlos.

[php]
<?php
// para que no se pueda tener acceso por otro lado a menos que se llame correctamente el módulo
defined(‘_JEXEC’) or die;
//creamos nuestra clase de ayuda para nuestro módulo por convención se antepone el prefijo mod en minúsculas y termina con Helper, podemos crear tantas clases como las que necesitamos para nuestra labor.
class modArticulosbdHelper
{
//creamos nuestro método, también por convención el prefijo get y acontinuación el nombre del método aqui joomla 1.6 mejora la llamada a los métodos definiéndolos estáticamente, para no crear ambieguedad al momento de llamarlos
static function getList($params)
{

//Recogemos los parámetros de nuestro módulo puestos desde el lado del administrador
$mostrar= $params->get(‘mostrar’);
//comprobamos si está marcado la opcion mostrar el mensaje
if ($mostrar==1) {
//si está marcado entonces, extraemos el nro del artículo que ingreso en el lado del administrador
$idart= $params->get(‘nroarticulo’);
//Creamos una instancia de la clase BD y dejamos a punto el motorSQL para utilizarlo
$db = JFactory::getDBO();
$app = JFactory::getApplication();
$query = $db->getQuery(true);
//Establecemos los campos por los cuales deseamos consultar
$query->select(‘title’);
$query->select(‘alias’);
$query->select(‘introtext’);
//Establecemos la tabla de donde extraeremos los datos
$query->from($db->nameQuote(‘#__content’));
//Establecemos los criterios de la consulta.
$query->w h e r e(«id=$idart»);
//Ejecutamos la consulta
$db->setQuery($query);
//Recojemos los datos obtenidos
$articulo = $db->loadObjectList(‘title’);

}
//De lo contrario le asignamos vacío.
else { $articulo =»» ; }
//Se devuelve el objeto que contiene los datos del artículo extraido.
return $articulo;

}

}
?>

[/php]
Sub carpeta tmpl.- Contiene los archivos de la vista, es decir la manera como se visualizará del lado del cliente.
Index.html. Archivo en blanco, sólo por seguridad en el caso de que quieran acceder directamente a la carpeta.
default.php. Contiene la forma de cómo se visualizaran los datos en el lado del cliente, aqui utilizar todos los conocimientos en html y css para mostrar de la mejor manera los datos.
[php]
<?php
// para que no se pueda tener acceso por otro lado a menos que se llame correctamente el módulo
defined(‘_JEXEC’) or die;

?>
<!–se le se está asginado un sufijo si es que en el parámetro del lado del administrador se ingreso una.–>
<dl class=»mensaje-module<?php echo $moduleclass_sfx ?>»>

<?php
// Mostramos los datos recogido por nuestro archivo helper.
//En este caso particular como hemos recogido los datos en formato de objeto
//lo extraemos de la siguiente manera.
//Realizamos un bucle para extraer los datos del objeto $list
foreach ($list as $item) :
//mostrar array->campo
echo «<b><u>».$item->title.»</u></b> <br>»;
//mostrar array->campo
echo $item->introtext;
endforeach;

?>

</dl>

[/php]

El código completo del módulo os pongo a vuestra disposición para que lo puedan descargar ( mod_articulosbd) y apartir de ello generar sus propios módulos, espero os ayude mucho en la implementación de sus módulos.