1. Desarrollando un componente MVC : Introducción
  2. Desarrollando un componente MVC: Desarrollando un componente básico
  3. Desarrollando un componente MVC: Añadiendo una vista en el frontend
  4. Desarrollando un componente MVC: Añadiendo un tipo de menu al frontend
  5. Desarrollando un componente MVC: Añadiendo un modelo al frontend
  6. Desarrollando un componente MVC : Añadiendo una variable request en el tipo de menu
  7. Desarrollando un componente MVC : Usando la base de datos
  8. Desarrollando un componente MVC : Basic backend
  9. Desarrollando un componente MVC : Añadiendo gestión de idioma
  10. Desarrollando un componente MVC : Añadiendo acciones backend
  11. Desarrollando un componente MVC : Añadiendo adornos al backend
  12. Desarrollando un componente MVC : Añadiendo verificaciones
  13. Desarrollando un componente MVC : Añadiendo categorías
  14. Desarrollando un componente MVC : Añadiendo configuración
  15. Desarrollando un componente MVC : Añadiendo ACL (Access Control Levels)
  16. Desarrollando un componente MVC : Añadiendo un script de instalación-desinstalación-actualización
  17. Desarrollando un componente MVC : Usando la capacidad de filtro
  18. Desarrollando un componente MVC : Añadiendo un servidor de actualización

El primer componente básico

Vamos a crear un componente «Hola Mundo»

Parte pública

Con tu editor favorito crea un fichero yoursite/components/com_helloworld/helloworld.php que contenga:

Hello world

Puedes testear este componente básico accediendo a la dirección http://yoursite/index.php?option=com_helloworld en tu navegador (no olvides añadir antes la dirección a tu instalación Joomla!2.5) tras instalar este componente.

Gestión de Adminsitración

Con tu editor de ficheros favorito, crea un fichero yoursite/administrator/components/com_helloworld/helloworld.php que contenga:

Hello world administration

Puedes testear este componente básico visitando administrator/index.php?option=com_helloworld con tu navegador tras instalar el componente.

Empaquetando un fichero zip de instalaciñon

Si has utilizado Joomla antes de leer este tutorial, habrás notado que las extensiones se instalan utilizando un archivo comprimido conteniendo todos los recursos necesarios para instalar y desinstalar la extensión.

Con tu administrador de archivos preferido, crea un directorio (fuera del directorio de instalación de Joomla) que contenga:

  • helloworld.xml
  • site/helloworld.php
  • site/index.html
  • admin/index.html
  • admin/helloworld.php
  • admin/sql/index.html
  • admin/sql/updates/index.html
  • admin/sql/updates/mysql/index.html
  • admin/sql/updates/mysql/0.0.1.sql

admin/sql/updates/mysql/0.0.1.sql es un fichero vacío que permite inicializar la versión del esquema del componente com_helloworld.

admin/sql/updates/mysql/0.0.1.sql

Ahora comprime este directorio o directamente descargalo el archivo e instalalo utilizando la «Administración de extensiones» (Extension Manager) de Joomla. Puedes testear este componente básico accediendo a la dirección index.php?option=com_helloworld o administrator/index.php?option=com_helloworld con tu navegador favorito. También te darás cuenta de que el componente Hello World! está accesible en el area de administración de tu instalación Joomla, bajo el menú Componentes.

Nota: La etiqueta <name>Hello World!</name> te puede llevar a pensar que se trata simplemente del nombre, y que podrías llamarlo ‘fluffy’ o ‘bippo’, pero esto no es así. Los nombres entre las etiquetas se transforman, convirtiendolo en minúsculas y quitando los espacios y caracteres especiales (el ! por ejemplo) y joomla comienza a buscar ficheros/directorios que respondan con ese nombre. Asi que el nombre que utilices ahí es crucial para que el componente funcione. En otras palabras, Si quieres cambiar «Hello World!» a «helloworld» todo irá bien, pero si cambiaras el nombre a «helloworld2» el componente buscaría los ficheros y directorios equivocados.

helloworld.xml

<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="2.5.0" method="upgrade">
 
        <name>Hello World!</name>
        <!-- The following elements are optional and free of formatting constraints -->
        <creationDate>November 2009</creationDate>
        <author>John Doe</author>
        <authorEmail>john.doe@example.org</authorEmail>
        <authorUrl>http://www.example.org</authorUrl>
        <copyright>Copyright Info</copyright>
        <license>License Info</license>
        <!--  The version string is recorded in the components table -->
        <version>0.0.1</version>
        <!-- The description is optional and defaults to the name -->
        <description>Description of the Hello World component ...</description>
 
        <update> <!-- Runs on update; New in 2.5 -->
                <schemas>
                        <schemapath type="mysql">sql/updates/mysql</schemapath>
                </schemas>
        </update>
 
        <!-- Site Main File Copy Section -->
        <!-- Note the folder attribute: This attribute describes the folder
                to copy FROM in the package to install therefore files copied
                in this section are copied from /site/ in the package -->
        <files folder="site">
                <filename>index.html</filename>
                <filename>helloworld.php</filename>
        </files>
 
        <administration>
                <!-- Administration Menu Section -->
                <menu>Hello World!</menu>
                <!-- Administration Main File Copy Section -->
                <!-- Note the folder attribute: This attribute describes the folder
                        to copy FROM in the package to install therefore files copied
                        in this section are copied from /admin/ in the package -->
                <files folder="admin">
                        <!-- Admin Main File Copy Section -->
                        <filename>index.html</filename>
                        <filename>helloworld.php</filename>
                        <!-- SQL files section -->
                        <folder>sql</folder>
                </files>
        </administration>
 
</extension>

site/helloworld.php

Hello World

admin/helloworld.php

Hello World administration

index.html común en todos los directorios

<html><body bgcolor="#FFFFFF"></body></html>