Creando Un Modulo Funcional Desde 0

Moderador: Staff Comunidad Joomla!

Creando Un Modulo Funcional Desde 0

Notapor Rigter » Mar Sep 09, 2008 4:24 pm

En este post, les tratare de explicar el desarrollo de un modulo que nos liste usuarios registrados en nuestro sitio.

Paso 1.

Configuracion inicial del modulo

Para hacer que Joomla!, interprete nuestro modulo, debemos hacer un archivo de instalacion.
En este archivo especificaremos la informacion del autor, descripcion del modulo, parametros que se mostraras en el back-end y archivos asociados.

mod_10usuarios.xml

Código: Seleccionar todo
<?xml version="1.0" encoding="iso-8859-1"?>
<mosinstall type="module" version="1.0.0">
    <name>Modulo Listado Usuarios</name>
    <author>Omar Ramirez</author>
    <creationDate>04/09/2008</creationDate>
    <copyright>(C) 2007 Open Source Matters. All rights reserved.</copyright>
    <license>http://www.gnu.org/copyleft/gpl.html GNU/GPL</license>
    <authorEmail>rigtersir{arroba}hotmail{punto}com</authorEmail>
    <authorUrl>http://www.rigtersir.com</authorUrl>
    <version>0.1</version>
    <description>Este modulo lista 10 usuarios registrados.</description>
    <files>
        <filename module="mod_10usuarios">mod_10usuarios.php</filename>
    </files>
    <params>
      <param name="orden_usuarios" type="list" default="0" label="Orden de lista" description="Selecciona el orden en que seran listados los usuarios.">
        <option value="0">Aleatorio</option>
        <option value="1">Ascendente</option>
        <option value="2">Descendente</option>
      </param>
    </params>
</mosinstall>


Como podemos ver, la primer parte de este archivo XML, contiene la informacion basica del modulo (nombre del modulo, autor, fecha en que se creo dicho modulo y demas...)

Código: Seleccionar todo
<name>Modulo Listado Usuarios</name>
    <author>Omar Ramirez</author>
    <creationDate>04/09/2008</creationDate>
    <copyright>(C) 2007 Open Source Matters. All rights reserved.</copyright>
    <license>http://www.gnu.org/copyleft/gpl.html GNU/GPL</license>
    <authorEmail>rigtersir{arroba}hotmail{punto}com</authorEmail>
    <authorUrl>http://www.rigtersir.com</authorUrl>
    <version>0.1</version>
    <description>Este modulo lista 10 usuarios registrados.</description>


El siguiente trozo de codigo hace referencia a los archivos que contendra nuestro modulo, en donde haremos nuestras consultas y demas cosas que se nos ocurra.

Código: Seleccionar todo
<files>
        <filename module="mod_10usuarios">mod_10usuarios.php</filename>
    </files>


Y finalmente, los parametros, estos parametros nos ayudaran para configurar el comportamiento del modulo.
Dependiendo de los valores de esta parte se nos generara un formulario desde el cual podremos agregar un texto, seleccionar de una lista, etc...
Esto ya depende de como configuremos.

En el caso de este ejemplo, mostraremos solo una lista desplegable, en la cual vamos a elegir el orden de como mostrar nuestros datos.

Código: Seleccionar todo
<params>
      <param name="orden_usuarios" type="list" default="0" label="Orden de lista" description="Selecciona el orden en que seran listados los usuarios.">
        <option value="0">Aleatorio</option>
        <option value="1">Ascendente</option>
        <option value="2">Descendente</option>
      </param>
    </params>


Una vez que terminemos de configurar nuestro archivo mod_10usuarios.xml, vamos a la parte interesante... las acciones que hara el modulo.

Paso 2.

Consultas y todo lo necesario para hacer funcionar el modulo

Como en el paso anterior, pego el codigo completo y despues explico...

mod_10usuarios.php

Código: Seleccionar todo
<?php

// Modulo Listado de Usuarios
// Version: 0.1
// Coder: Omar Ramirez // rigtersir{arroba}hotmail{punto}com
// Creacion: 4 de Septiembre 2008

defined( '_VALID_MOS' ) or die( 'Restricted access' );
   
global $database;   
   
$orden = $params->get( 'orden_usuarios', 0 );

switch($orden){
  case "1": // Orden Ascendente
  $tipo = "username ASC";
  break;

  case "2": // Orden Descendente
  $tipo = "username DESC";
  break;

  default: // Orden Aleatorio
  $tipo = "RAND()";
}

$query = "SELECT username  FROM jos_users WHERE usertype='Registered' ORDER by ".$tipo." Limit 10";

$database->setQuery($query);
$rows = $database->loadObjectList();

echo '<div>
<ul>';

foreach($rows as $row){
echo '<li><strong>'.$row->username.'</strong></li>';
}

echo '</ul>
</div>';

?>


Listo, ahora que tenemos el archivo PHP, vamos a explicar.

Código: Seleccionar todo
defined( '_VALID_MOS' ) or die( 'Restricted access' );


Esta linea nos ayuda a que el archivo mod_10usuarios.php no sea ejecutado directamente, me refiero a que alguien pudiera acceder de la siguiente manera: http://sitio.com/modules/mod_10usuarios.php, en teoria se podria acceder al archivo desde el navegador, pero al ser ejecutado nos mostraria el mensaje de Restricted Access y no pasaria a mas.

Código: Seleccionar todo
global $database;


Esta linea nos inicializa la base de datos para comenzar a ejecutar los querys.

Código: Seleccionar todo
$orden = $params->get( 'orden_usuarios', 0 );


Obtenemos el parametro que especificamos dentro de nuestro XML, en este caso dicho parametro se llama orden_usuarios, que vendria siendo el nombre de la lista desplegable que se generara en el back-end. Joomla!, obtiene ese dato via GET.

Código: Seleccionar todo
switch($orden){
  case "1": // Orden Ascendente
  $tipo = "username ASC";
  break;

  case "2": // Orden Descendente
  $tipo = "username DESC";
  break;

  default: // Orden Aleatorio
  $tipo = "RAND()";
}


Definimos los posibles valores que $orden u orden_usuarios podria tener y asignamos un trozo del query a el.

Código: Seleccionar todo
$query = "SELECT username  FROM jos_users WHERE usertype='Registered' ORDER by ".$tipo." Limit 10";

$database->setQuery($query);
$rows = $database->loadObjectList();


Creamos inicialmente nuestra consulta, despues ya con $database inicializada, le hacemos la peticion que comience el query, esto se hace con la funcion setQuery que Joomla! tiene integrada como parte de su API.

A continuacion usamos la funcion de Joomla!, loadObjectList, que funciona al estilo de mysql_fetch_array y se la asignamos a una variable que llamaremos $rows.

Código: Seleccionar todo
echo '<div>
<ul>';

foreach($rows as $row){
echo '<li><strong>'.$row->username.'</strong></li>';
}

echo '</ul>
</div>';


Generamos nuestra parte de HTML donde se mostraran los datos y mediante un foreach, asignamos los valores que contiene $rows a $row. Para imprimir nuestro dato, lo hacemos de esta manera: $row->nombrecampo, en el caso de este ejemplo: $row->username

Ya con todos los ingredientes listos, metemos nuestros 2 archivos a una carpeta llamada mod_10usuarios, la comprimimos en un ZIP (si estamos en Windows).

  1. Vamos a nuestro Administrador de Joomla!
  2. En el menu de Instaladores, seleccionamos Modulos
  3. En el apartado Subir paquete, damos click en examinar, buscamos el ZIP que creamos anteriormente y damos click en el boton Subir e Instalar.

Si todo salio bien vamos al menu Modulos y seleccionamos Modulos de Sitio. En la lista desplegable del lado derecho que dice --Selecciona el tipo--, buscamos el que diga mod_10usuarios, en la parte de abajo nos mostrara nuestro modulo, lo abrimos en modo de edicion y configuramos la posicion, paginas donde sera mostrado y claro el orden en que se mostraran los datos.

Bien, esta es una pequeña explicacion de como crear e instalar un modulo.

Autor: Omar Ramirez (Rigter)
URL Original: http://www.rigtersir.com/blog/post/217
Rigter
Nuevo
Nuevo
 
Mensajes: 1
Registrado: Lun Ago 11, 2008 10:53 pm
Ubicación: Mexico City

Volver a Joomla 1.0.*

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados