Inicio Tutoriales Crear un Modulo Como se crea un módulo Joomla
Jun
09
2008
Como se crea un módulo Joomla Imprimir E-mail
Usar puntuación: / 4
MaloBueno 
Escrito por Administrator   

    TEMA:  APRENDE A CREAR UN MÓDULO PARA JOOMLA

** Este tutorial es una gentileza del blog de nosolocodigo, al que agradecemos su aportación. (Autor: David Noguera)






     • Aunque con las extensiones existentes de Joomla tendremos suficiente en la mayoría de los casos, hay ocasiones en que necesitamos algo concreto, como por ejemplo un módulo que muestre los usuarios registrados que cumplan años hoy o uno que muestre los artículos publicados hace un año. Y eso es precisamente lo que voy a hacer.

     • En el siguiente tutorial vamos a crear un modulo que consulte a la base de datos y muestre el titulo de los artículos con un enlace al articulo completo. Hacer un módulo es mucho más sencillo que hacer un Componente.

     • De hecho los módulos están pensados para mostrar datos concretos, como usuarios conectados, datos de contacto, menús etc… que en muchos casos son una simple consulta a la base de datos.

    - Los módulos se encuentran situados en el directorio modules dentro del directorio de instalación de Joomla y por cada módulo hay una carpeta con nombre mod_nombredelModulo .

    - Nuestro módulo se va a llamar anyo, por lo tanto la carpeta del módulo se llamará mod_anyo.

    - La estructura de un módulo es muy simple, tiene un fichero php con el mismo nombre que el módulo, el cual es el punto de entrada, que tomará en control del módulo cuando este sea llamado.

    - Para separar la lógica de la presentación se ha creado la clase helper, en la cual escribiremos nuestras funciones y de esta forma nuestro código quedará más ordenador y legible. La clase helper se encuentra en el fichero de nombre helper.php en la raíz del directorio del módulo.

    - Desde mod_anyo.php ejecutaremos las funciones de la clase helper simplemente llamándolos como métodos estáticos , puedes encontrar una definición de la clase en el sitio oficial de Joomla

    - Por ultimo, tenemos el layout, o Template, que se encuentra dentro de la carpeta tmpl de nuestro módulo , el cual puede tener cualquier nombre que se te ocurra, pero le asignaremos default.php, que es el nombre por defecto que buscara Joomla si no le indicamos lo contrario.

                          

     • Para la parte de Back-End disponemos del fichero mod_anyo.xml , donde definiremos los parámetros del módulo y mediante el cual podremos parametrizar el modulo para hacerlo mas configurable y reutilizable.

     - Vamos a ver el código de nuestro punto de entrada:

  1. <?php
  2. // no acceso directo
  3. defined( ‘_JEXEC’ ) or die( ‘Restricted access’ );
  4. // incluir al helper que devolverá los datos, solo una vez
  5. require_once( dirname(__FILE__).DS.‘helper.php’ );
  6. $articulos = modAnyoHelper::getArticulos( $params );
  7. require( JModuleHelper::getLayoutPath( ‘mod_Anyo’,‘default’) );
  8. ?>

        • La primera línea, como siempre que hacemos una extensión para Joomla, es una línea de comprobación, que asegura que no se este accediendo al modulo estar usando Joomla.

La segunda línea importa el fichero de la clase helper, donde almacenamos nuestras funciones.

En la tercera línea, ejecutamos la función getArticulos() de nuestro helper que devuelve una lista de objetos con los resultados de la consulta SQL.

Por último, hacemos un require del layout, que en nuestro se llama default y lo hacemos usando el método getLayoutPath de la clase JModuleHelper, que devuelve la ruta del layout pasándole como parámetro el nombre del módulo y al nombre del layout.

En el helper almacenamos nuestras funciones, donde accedemos a datos para recuperar la lista de artículos que se escribieron hoy hace un anyo. Vamos a ver el código:

  1. <?php
  2. class modAnyoHelper
  3. {
  4.     function getArticulos( $params )
  5.     {
  6.         jimport(‘joomla.utilities.date’);
  7.         $jnow = new JDate();
  8.         $now = $jnow->toMySQL();
  9.         $db = &JFactory::getDBO();
  10.         $consulta = "select title,id from #__content where datediff( #__content.created, ‘".$now."’ ) = 365 limit 0,30";
  11.         $db->setQuery($consulta);
  12.         $categorias = $db->loadObjectList();
  13.         return $db->loadObjectList();
  14.     }
  15. }
  16. ?>

     • La clase helper ha de llamarse con el nombre del modulo sin “_” seguido de helper, es decir, en nuestro caso seria modanyoHelper.

     - Mediante jimport importamos el fichero necesario para instanciar una clase de tipo JDate.

     - Jimport admite como parámetro un string que apunte al “package” donde se encuentre la clase. Es un concepto similar al import de java . Los paquetes se importan según la el árbol de clases que hay en la documentación oficial :

     - Después creamos el método getArticulos que será el que devuelva una lista de artículos que tengan un año de antigüedad.

     - Utilizamos un objeto de tipo JDatabase para realizar la consulta y después simplemente obtenemos la lista de objetos mediante el método loadObjectList .

    - El meollo de la cuestión esta en la consulta SQL, donde se utiliza la función datediff para consultar los artículos con una antigüedad de 365 días

    - Finalmente , en el layout, sacamos por pantalla una lista HTML con enlaces a los artículos que se escribieron hace justo 365 días:

  1. <?php
  2. if($params->get(‘asignarCss’)){
  3. $css = $params->get(‘clase’);
  4. }
  5.  ?>
  6. <ul <?php if(isset($css )){ echo ‘class="’.$css.‘"’;} ?> >
  7. <?php
  8. foreach ($articulos as $articulo) {
  9.         echo
  10. <li><a href=index.php?option=com_content&id=’.$articulo->id.‘>’. $articulo->title .‘</a></li>
  11.  ’;
  12.     }
  13. ?>
  14. </ul>

     • Fíjate que para acceder a los parámetros del fichero mod_anyo.xml se utiliza $params->get() .

    - Estos parámetros se definen previamente en el fichero xml que acompaña el modulo.

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <install type="module" version="1.5.0">
  3.     <name>Hoy hace un año</name>
  4.     <author>David Noguera</author>
  5.     <version>1.5.0</version>
  6.     <creationDate>30.07.2006</creationDate>
  7.     <description>Modulo que carga los artículos de tal dia como hoy pero hace un año</description>
  8.     <authorEmail> Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla </authorEmail>
  9.     <files>
  10.     <filename module="mod_anyo">mod_anyo.php</filename>
  11.         <filename>helper.php</filename>
  12.         <filename>mod_anyo.xml</filename>
  13.         <filename>tmpl/default.php</filename>
  14.         <filename>tmpl/index.html</filename>
  15.     </files>
  16. <params>
  17. <param name="clase" type="text" default="mod_anyo"
  18.             label="Clase Css para el ul"
  19.                 description="La clase que se aplicara al ul" />
  20. <param name="asignarCss" type="radio" default="1"
  21. label="Clase css" description="Determina si se debe asignar la clase css o no">
  22. <option value="0">No</option>
  23. <option value="1">Si</option>
  24. </param>
  25. </params>
  26. </install>


• Para finalizar solo queda meter todo esto en un zip y subirlo al instalador de Joomla!.





Google
 


     • Saludos y hasta la próxima.     



Agrega esta pagina a tu favoritos, en alguna "Red Social" de abajo
Reddit! Del.icio.us! Google! Live! Facebook! StumbleUpon! Yahoo! Free social bookmarking plugins and extensions for Joomla! websites!
PUEDES AGREGAR ESTE ARTICULO EN TU WEB

Para crear un link a este articulo en tu web,
copia - pega el codigo de abajo en tu pagina.




Vista previa :

Como se crea un módulo Joomla
Lunes, 09 Junio 2008

© 2008 - Joomla 1.5


Powered by QuoteThis © 2008
 

Un avance - Más leídos

- © Copyright 2008 - joomlatuto.com - web creada con Joomla! 1.5 - Ver licencia (texto,imagenes y videotutoriales): >> Licencia Creative Commons <<< Licencia Creative Commons