J3.x

Difference between revisions of "Creating a simple module/Developing a Basic Module/es"

From Joomla! Documentation

< J3.x:Creating a simple module
(Updating to match new version of source page)
 
(53 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
<noinclude><languages /></noinclude>
 
<noinclude><languages /></noinclude>
 
{{J3.x:Creating_a_simple_module/es}}
 
{{J3.x:Creating_a_simple_module/es}}
Un módulo es una extensión ligera y flexible. Se utilizan para pequeñas partes de la página que generalmente son menos complejas y son capaces de ser vistos a través de diferentes componentes.
+
Los módulos son una extensiones ligeras y flexibles. Se utilizan para pequeñas partes de la página que generalmente son menos complejas y son capaces de ser vistos a través de diferentes componentes.
  
 
Puedes ver muchos ejemplos de módulos en la instalación estándar de Joomla!: Menús - Últimas Noticias - Formulario de inicio de sesión y muchos más.
 
Puedes ver muchos ejemplos de módulos en la instalación estándar de Joomla!: Menús - Últimas Noticias - Formulario de inicio de sesión y muchos más.
Line 9: Line 9:
 
== Estructura del archivo ==
 
== Estructura del archivo ==
  
There are four basic files that are used in the standard pattern of module development:  
+
Hay cuatro tipos básicos de archivos que se utilizan en el patrón estándar del desarrollo de un módulo:  
* <code>mod_helloworld.php</code> - This file is the main entry point for the module. It will perform any necessary initialization routines, call helper routines to collect any necessary data, and include the template which will display the module output.
+
* <code>mod_helloworld.php</code> - Este archivo es el principal punto de entrada para el módulo. Llevará a cabo las rutinas de inicialización necesarias, llamará a rutinas auxiliares para recopilar todos los datos necesarios e incluirá la plantilla que va a mostrar el módulo de salida.
  
* <code>mod_helloworld.xml</code> - This file contains information about the module. It defines the files that need to be installed by the Joomla! installer and specifies configuration parameters for the module.
+
* <code>mod_helloworld.xml</code> - Este archivo contiene información sobre el módulo. Define los archivos que necesitan ser instalados por el instalador de Joomla! y especifica los parámetros de configuración para el módulo.
  
* <code>helper.php</code> - This file contains the helper class which is used to do the actual work in retrieving the information to be displayed in the module (usually from the database or some other source).
+
* <code>helper.php</code> - Este archivo contiene la clase helper que se utiliza para hacer el trabajo real en la recuperación de la información que se muestra en el módulo (generalmente a partir de la base de datos o alguna otra fuente).
  
* <code>tmpl/default.php</code> - This is the module template. This file will take the data collected by mod_helloworld.php and generate the HTML to be displayed on the page.
+
* <code>tmpl/default.php</code> - Esta es la plantilla del módulo. Este archivo va a tomar los datos recogidos por mod_helloworld.php y generar el código HTML que se mostrará en la página.
  
== Creating mod_helloworld.php ==
+
== Crear el archivo mod_helloworld.php ==
  
The <tt>mod_helloworld.php</tt> file will perform three tasks:
+
El archivo <tt>mod_helloworld.php</tt> realiza tres tareas:
* include the helper.php file which contains the class to be used to collect the necessary data
+
* incluir el archivo helper.php que contiene la clase que se utiliza para recoger los datos necesarios
* invoke the appropriate helper class method to retrieve the data
+
* invocar el método de la clase helper adecuado para recuperar los datos
* include the template to display the output.
+
* incluir la plantilla para mostrar la salida.
  
The helper class is defined in our helper.php file. This file is included with a require_once statement:
+
La clase helper se define en nuestro archivo helper.php. Este archivo se incluye con una declaración require_once:
 
   
 
   
 
<source lang="php">require_once dirname(__FILE__) . '/helper.php';</source>
 
<source lang="php">require_once dirname(__FILE__) . '/helper.php';</source>
  
<code>require_once</code> is used because our helper functions are defined within a class, and we only want the class defined once.
+
<code>require_once</code> se utiliza porque nuestro helper son funciones definidas dentro de una clase y sólo queremos que la clase sea definida una vez.
  
Our helper class has not been defined yet, but when it is, it will contain one method: getHello(). For our basic example, it is not really necessary to do this - the “Hello, World” message that this method returns could simply be included in the template. We use a helper class here to demonstrate this basic technique.
+
Nuestra clase helper no se ha definido aún, pero cuando lo sea, contendrá un método: getHello(). Para nuestro ejemplo básico, no es realmente necesario - el mensaje "Hola, Mundo" que este método devuelve simplemente podría ser incluido en la plantilla. Utilizamos una clase helper para demostrar esta técnica básica.
  
Our module currently does not use any parameters, but we will pass them to the helper method anyway so that it can be used later if we decide to expand the functionality of our module.
+
Nuestro módulo en la actualidad no se utiliza ningún parámetro, pero vamos a pasar al método helper uno de todos modos, así puede ser utilizado más tarde si decidimos ampliar la funcionalidad de nuestro módulo.
  
The helper class method is invoked in the following way:
+
El método de de la clase helper se invoca de la siguiente manera:
 
   
 
   
 
<source lang="php">$hello = modHelloWorldHelper::getHello($params);</source>
 
<source lang="php">$hello = modHelloWorldHelper::getHello($params);</source>
  
=== Completed mod_helloworld.php file ===
+
=== Archivo mod_helloworld.php completo ===
  
The complete <tt>mod_helloworld.php</tt> file is as follows:
+
El archivo <tt>mod_helloworld.php</tt> completo es el siguiente:
 
   
 
   
 
<source lang="php"><?php
 
<source lang="php"><?php
Line 64: Line 64:
 
$hello = modHelloWorldHelper::getHello($params);
 
$hello = modHelloWorldHelper::getHello($params);
 
require JModuleHelper::getLayoutPath('mod_helloworld');
 
require JModuleHelper::getLayoutPath('mod_helloworld');
 
 
</source>
 
</source>
  
The one line that we haven’t explained so far is the first line. This line checks to make sure that this file is being included from the Joomla! application. This is necessary to prevent variable injection and other potential security concerns.
+
<div class="mw-translate-fuzzy">
 +
Una línea que no hemos explicado hasta ahora es la primera. Esta línea de comprobaciones es para asegurarse que este archivo está siendo incluido desde la aplicación Joomla!. Esto es necesario para evitar la inyección de variables y otros posibles problemas de seguridad.
 +
</div>
  
== Creating helper.php ==
+
== Crear el archivo helper.php ==
  
The <tt>helper.php</tt> file contains that helper class that is used to retrieve the data to be displayed in the module output. As stated earlier, our helper class will have one method: getHello(). This method will return the ‘Hello, World’ message.
+
El archivo <tt>helper.php</tt> contiene la clase helper que se utiliza para recuperar los datos que se muestran en la salida del módulo. Como se indicó anteriormente, nuestra clase helper tendrá un método: getHello(). Este método devolverá el mensaje 'Hola, Mundo'.
  
Here is the code for the helper.php file:
+
Aquí está el código para el archivo helper.php:
 
   
 
   
 
<source lang="php"><?php
 
<source lang="php"><?php
Line 102: Line 103:
 
     }
 
     }
 
}
 
}
 
 
</source>
 
</source>
  
There is no rule stating that we must name our helper class as we have, but it is helpful to do this so that it is easily identifiable and locatable. Note that it is required to be in this format if you plan to use the com_ajax plugin.
+
<div class="mw-translate-fuzzy">
 +
No hay ninguna regla que indique que como debemos nombrar nuestra clase helper, pero es útil hacerlo así, por que es fácilmente identificable y localizable. Ten en cuenta que es necesario usar este formato si planeas usar el plugin com_ajax.
 +
</div>
  
More advanced modules might include database requests or other functionality in the helper class method.
+
Módulos avanzados pueden incluir solicitudes de base de datos u otro tipo de funcionalidad en el método de la clase helper.
  
== Creating tmpl/default.php ==
+
== Crear el archivo tmpl/default.php ==
  
The <tt>default.php</tt> file is the template which displays the module output.
+
El archivo <tt>default.php</tt> de plantilla es el que muestra la salida del módulo.
  
The code for the default.php file is as follows:
+
El código para el archivo default.php es el siguiente:
 
   
 
   
 
<source lang="php">
 
<source lang="php">
Line 122: Line 124:
 
</source>
 
</source>
  
An important point to note is that the template file has the same scope as the mod_helloworld.php file. What this means is that the variable $hello can be defined in the mod_helloworld.php file and then used in the template file without any extra declarations or function calls.
+
Un punto importante a tener en cuenta es que el archivo de plantilla tiene el mismo alcance que el archivo mod_helloworld.php. Lo que esto significa es que la variable $hello puede ser definida en el archivo mod_helloworld.php y a continuación, utilizala en el archivo de plantilla sin ningún tipo de declaraciones extra o llamadas a funciones.
  
== Creating mod_helloworld.xml ==
+
== Crear el archivo mod_helloworld.xml ==
  
The <tt>mod_helloworld.xml</tt> is used to specify which files the installer needs to copy and is used by the Module Manager to determine which parameters are used to configure the module. Other information about the module is also specified in this file.
+
El <tt>mod_helloworld.xml</tt> se utiliza para especificar los archivos que el programa de instalación necesita copiar y es utilizado por el Módulo de Administrador para determinar qué parámetros se utilizan para configurar el módulo. Otra información sobre el módulo también se especifica en este archivo.
  
The code for <tt>mod_helloworld.xml</tt> is as follows:
+
El código de <tt>mod_helloworld.xml</tt> es como sigue:
 
   
 
   
 
<source lang="xml">
 
<source lang="xml">
Line 150: Line 152:
 
</source>
 
</source>
  
[[S:MyLanguage/Manifest files|Manifest files]] explains the technical details of the elements used in the XML file.
+
[[S:MyLanguage/Manifest files|Archivos Manifest]] explica los detalles técnicos de los elementos utilizados en el archivo XML.
  
You will notice that there are two additional files that we have not yet mentioned: index.html and tmpl/index.html. These files are included so that these directories cannot be browsed. If a user attempts to point their browser to these folders, the index.html file will be displayed. These files can be left empty or can contain the simple line:
+
Notarás que hay dos archivos adicionales que aún no hemos mencionado: index.html y tmpl/index.html. Estos archivos son incluidos para que estos directorios no se puede navegar. Si un usuario intenta apuntar su navegador a estas carpetas, el archivo index.html se mostrará. Estos archivos se pueden dejar vacíos o puede contener una simple línea:
 
   
 
   
 
<source lang="html4strict"><html><body bgcolor="#FFFFFF"></body></html></source>
 
<source lang="html4strict"><html><body bgcolor="#FFFFFF"></body></html></source>
  
which will display an empty page.
+
que mostrará una página vacía.
  
Since our module does not use any [[S:MyLanguage/Form_field|form fields]], the config section is empty.
+
Ya que nuestro módulo no hace uso de ningún [[S:MyLanguage/Form_field|campo de formulario]], la configuración de la sección está vacía.
  
== Conclusion ==
+
== Installing and Viewing the Module ==
 +
To install the module, zip up the parent directory of your source files, to create a file called <tt>mod_helloworld.zip</tt>. Note that it needs to be a .zip file because the server needs to be able to extract it using Apache's mod_zlib library.
 +
Go into Joomla admin, to the Extensions / Manage / Install form, click on the Update Package File tab, and upload your zip file. You should find that the module installs ok. If it doesn't, then compare carefully your code with the code above, and ensure your source code files are named correctly.
 +
To make the module visible on your site web pages go into the Extensions / Modules listing and click on the Hello World module to edit it.
 +
# set the Status to Published
 +
# select the Position where the module should appear (if you're unsure about which Position to set, then navigate to Extensions / Templates / Styles, check which template is assigned on your web pages, then follow [[S:MyLanguage/Finding module positions on any given page|this guide]] to finding the module positions).
 +
# on the Menu Assignment tab set the Module Assignment to "On all pages"
 +
Save and Close your edit form.
 +
Now if you navigate to your site you should see "Hello, World!" displayed in your chosen module position.
  
Module development for Joomla! is a fairly simple, straightforward process. Using the techniques described in this tutorial, an endless variety of modules can be developed with little hassle.
+
== Conclusión ==
 +
El desarrollo de un módulo para Joomla! es bastante simple, un proceso sencillo. Utilizando las técnicas descriptas en este tutorial, una interminable variedad de módulos pueden ser desarrollados con poco esfuerzo.
  
 
<div class="row">  
 
<div class="row">  
<div class="large-6 columns">{{Basic button|S:MyLanguage/J3.x:Creating_a_simple_module/Introduction|Prev: Introduction|class=expand success}}</div>
+
<div class="large-6 columns">{{Basic button|S:MyLanguage/J3.x:Creating_a_simple_module|Prev: Introducción|class=expand success}}</div>
<div class="large-6 columns">{{Basic button|S:MyLanguage/J3.x:Creating_a_simple_module/Using_the_Database|Next: Using the Database|class=expand}}</div>
+
<div class="large-6 columns">{{Basic button|S:MyLanguage/J3.x:Creating_a_simple_module/Using_the_Database|Sig: Utilizar la base de datos|class=expand}}</div>
 
</div>
 
</div>
 
__NOTOC__
 
__NOTOC__
 
<noinclude>
 
<noinclude>
[[Category:Tutorials]]
+
[[Category:Tutorials/es]]
[[Category:Tutorials in a Series]]
+
[[Category:Tutorials in a Series/es]]
[[Category:Module Development]]
+
[[Category:Module Development/es]]
[[Category:Beginner Development]]
+
[[Category:Beginner Development/es]]
[[Category:Joomla! 3.x]]
+
[[Category:Joomla! 3.x/es]]
[[Category:Joomla! 3.0]]
+
[[Category:Joomla! 3.0/es]]
[[Category:Joomla! 3.1]]
+
[[Category:Joomla! 3.1/es]]
[[Category:Joomla! 3.2]]
+
[[Category:Joomla! 3.2/es]]
[[Category:Joomla! 3.3]]
+
[[Category:Joomla! 3.3/es]]
[[Category:Joomla! 3.4]]
+
[[Category:Joomla! 3.4/es]]
 
</noinclude>
 
</noinclude>

Latest revision as of 17:52, 21 July 2020

Other languages:
Bahasa Indonesia • ‎Deutsch • ‎English • ‎Nederlands • ‎español • ‎français • ‎português do Brasil • ‎русский • ‎中文(台灣)‎
Joomla! 
3.x
Tutorial
Crear un módulo simple

Esta es una serie de artículos múltiples sobre cómo crear un módulo para Joomla! Versión Joomla 3.x. Puedes navegar por los artículos en esta serie usando el menú desplegable de navegación.

Comienza con la Introducción y navega por los artículos de esta serie usando el botón de navegación en la parte inferior o en el cuadro de la derecha ("Artículos de esta serie").




Los módulos son una extensiones ligeras y flexibles. Se utilizan para pequeñas partes de la página que generalmente son menos complejas y son capaces de ser vistos a través de diferentes componentes.

Puedes ver muchos ejemplos de módulos en la instalación estándar de Joomla!: Menús - Últimas Noticias - Formulario de inicio de sesión y muchos más.

En este tutorial se explica cómo realizar la creación de un módulo simple Hello World. A través de este tutorial vamos a aprender la estructura básica del archivo de un módulo. Esta estructura básica puede luego ser ampliada para producir módulos más elaborados.

Estructura del archivo

Hay cuatro tipos básicos de archivos que se utilizan en el patrón estándar del desarrollo de un módulo:

  • mod_helloworld.php - Este archivo es el principal punto de entrada para el módulo. Llevará a cabo las rutinas de inicialización necesarias, llamará a rutinas auxiliares para recopilar todos los datos necesarios e incluirá la plantilla que va a mostrar el módulo de salida.
  • mod_helloworld.xml - Este archivo contiene información sobre el módulo. Define los archivos que necesitan ser instalados por el instalador de Joomla! y especifica los parámetros de configuración para el módulo.
  • helper.php - Este archivo contiene la clase helper que se utiliza para hacer el trabajo real en la recuperación de la información que se muestra en el módulo (generalmente a partir de la base de datos o alguna otra fuente).
  • tmpl/default.php - Esta es la plantilla del módulo. Este archivo va a tomar los datos recogidos por mod_helloworld.php y generar el código HTML que se mostrará en la página.

Crear el archivo mod_helloworld.php

El archivo mod_helloworld.php realiza tres tareas:

  • incluir el archivo helper.php que contiene la clase que se utiliza para recoger los datos necesarios
  • invocar el método de la clase helper adecuado para recuperar los datos
  • incluir la plantilla para mostrar la salida.

La clase helper se define en nuestro archivo helper.php. Este archivo se incluye con una declaración require_once:

require_once dirname(__FILE__) . '/helper.php';

require_once se utiliza porque nuestro helper son funciones definidas dentro de una clase y sólo queremos que la clase sea definida una vez.

Nuestra clase helper no se ha definido aún, pero cuando lo sea, contendrá un método: getHello(). Para nuestro ejemplo básico, no es realmente necesario - el mensaje "Hola, Mundo" que este método devuelve simplemente podría ser incluido en la plantilla. Utilizamos una clase helper para demostrar esta técnica básica.

Nuestro módulo en la actualidad no se utiliza ningún parámetro, pero vamos a pasar al método helper uno de todos modos, así puede ser utilizado más tarde si decidimos ampliar la funcionalidad de nuestro módulo.

El método de de la clase helper se invoca de la siguiente manera:

$hello = modHelloWorldHelper::getHello($params);

Archivo mod_helloworld.php completo

El archivo mod_helloworld.php completo es el siguiente:

<?php
/**
 * Hello World! Module Entry Point
 * 
 * @package    Joomla.Tutorials
 * @subpackage Modules
 * @license    GNU/GPL, see LICENSE.php
 * @link       http://docs.joomla.org/J3.x:Creating_a_simple_module/Developing_a_Basic_Module
 * mod_helloworld is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 */

// No direct access
defined('_JEXEC') or die;
// Include the syndicate functions only once
require_once dirname(__FILE__) . '/helper.php';

$hello = modHelloWorldHelper::getHello($params);
require JModuleHelper::getLayoutPath('mod_helloworld');

Una línea que no hemos explicado hasta ahora es la primera. Esta línea de comprobaciones es para asegurarse que este archivo está siendo incluido desde la aplicación Joomla!. Esto es necesario para evitar la inyección de variables y otros posibles problemas de seguridad.

Crear el archivo helper.php

El archivo helper.php contiene la clase helper que se utiliza para recuperar los datos que se muestran en la salida del módulo. Como se indicó anteriormente, nuestra clase helper tendrá un método: getHello(). Este método devolverá el mensaje 'Hola, Mundo'.

Aquí está el código para el archivo helper.php:

<?php
/**
 * Helper class for Hello World! module
 * 
 * @package    Joomla.Tutorials
 * @subpackage Modules
 * @link http://docs.joomla.org/J3.x:Creating_a_simple_module/Developing_a_Basic_Module
 * @license        GNU/GPL, see LICENSE.php
 * mod_helloworld is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 */
class ModHelloWorldHelper
{
    /**
     * Retrieves the hello message
     *
     * @param   array  $params An object containing the module parameters
     *
     * @access public
     */    
    public static function getHello($params)
    {
        return 'Hello, World!';
    }
}

No hay ninguna regla que indique que como debemos nombrar nuestra clase helper, pero es útil hacerlo así, por que es fácilmente identificable y localizable. Ten en cuenta que es necesario usar este formato si planeas usar el plugin com_ajax.

Módulos avanzados pueden incluir solicitudes de base de datos u otro tipo de funcionalidad en el método de la clase helper.

Crear el archivo tmpl/default.php

El archivo default.php de plantilla es el que muestra la salida del módulo.

El código para el archivo default.php es el siguiente:

<?php 
// No direct access
defined('_JEXEC') or die; ?>
<?php echo $hello; ?>

Un punto importante a tener en cuenta es que el archivo de plantilla tiene el mismo alcance que el archivo mod_helloworld.php. Lo que esto significa es que la variable $hello puede ser definida en el archivo mod_helloworld.php y a continuación, utilizala en el archivo de plantilla sin ningún tipo de declaraciones extra o llamadas a funciones.

Crear el archivo mod_helloworld.xml

El mod_helloworld.xml se utiliza para especificar los archivos que el programa de instalación necesita copiar y es utilizado por el Módulo de Administrador para determinar qué parámetros se utilizan para configurar el módulo. Otra información sobre el módulo también se especifica en este archivo.

El código de mod_helloworld.xml es como sigue:

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="3.1.0" client="site" method="upgrade">
    <name>Hello, World!</name>
    <author>John Doe</author>
    <version>1.0.0</version>
    <description>A simple Hello, World! module.</description>
    <files>
        <filename>mod_helloworld.xml</filename>
        <filename module="mod_helloworld">mod_helloworld.php</filename>
        <filename>index.html</filename>
        <filename>helper.php</filename>
        <filename>tmpl/default.php</filename>
        <filename>tmpl/index.html</filename>
    </files>
    <config>
    </config>
</extension>

Archivos Manifest explica los detalles técnicos de los elementos utilizados en el archivo XML.

Notarás que hay dos archivos adicionales que aún no hemos mencionado: index.html y tmpl/index.html. Estos archivos son incluidos para que estos directorios no se puede navegar. Si un usuario intenta apuntar su navegador a estas carpetas, el archivo index.html se mostrará. Estos archivos se pueden dejar vacíos o puede contener una simple línea:

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

que mostrará una página vacía.

Ya que nuestro módulo no hace uso de ningún campo de formulario, la configuración de la sección está vacía.

Installing and Viewing the Module

To install the module, zip up the parent directory of your source files, to create a file called mod_helloworld.zip. Note that it needs to be a .zip file because the server needs to be able to extract it using Apache's mod_zlib library. Go into Joomla admin, to the Extensions / Manage / Install form, click on the Update Package File tab, and upload your zip file. You should find that the module installs ok. If it doesn't, then compare carefully your code with the code above, and ensure your source code files are named correctly. To make the module visible on your site web pages go into the Extensions / Modules listing and click on the Hello World module to edit it.

  1. set the Status to Published
  2. select the Position where the module should appear (if you're unsure about which Position to set, then navigate to Extensions / Templates / Styles, check which template is assigned on your web pages, then follow this guide to finding the module positions).
  3. on the Menu Assignment tab set the Module Assignment to "On all pages"

Save and Close your edit form. Now if you navigate to your site you should see "Hello, World!" displayed in your chosen module position.

Conclusión

El desarrollo de un módulo para Joomla! es bastante simple, un proceso sencillo. Utilizando las técnicas descriptas en este tutorial, una interminable variedad de módulos pueden ser desarrollados con poco esfuerzo.