J3.x

Een eenvoudige module maken - Ontwikkelen van een basis-module

From Joomla! Documentation

< J3.x:Creating a simple module
This page is a translated version of the page J3.x:Creating a simple module/Developing a Basic Module and the translation is 95% complete.

Outdated translations are marked like this.
Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎Bahasa Indonesia • ‎Nederlands • ‎português do Brasil • ‎русский
Joomla! 
3.x
Handleiding
Een eenvoudige module maken

Dit is een serie artikelen over het ontwikkelen van een module voor Joomla! versie Joomla 3.x. U kunt navigeren binnen de artikelen in deze serie met behulp van het navigatie drop-down menu.

Begin met de Introductie en navigeer door de artikelen van de serie door middel van de navigatieknop onderaan of het vak rechts (Artikelen in deze serie).



Modules zijn lichtgewicht en flexibele extensies.Ze worden gebruikt voor kleine onderdelen van de pagina die in het algemeen minder ingewikkeld zijn en die getoond kunnen worden bij verschillende componenten.

U kunt veel voorbeelden van modules zien in de standaard Joomla! installatie: - Menu's - Laatste nieuws - Inlogformulier - en veel meer.

Deze handleiding legt uit hoe een eenvoudige 'Hallo wereld' module gemaakt moet worden. Door middel van deze handleiding leert u de basis bestandsstructuur van een module. Deze basisstructuur kan dan uitgebreid worden om uitgebreidere modules te maken.

Bestandsstructuur

Er zijn vier basis-bestanden die worden gebruikt in het standaard patroon van module ontwikkeling:

  • mod_helloworld.php - Dit bestand is de hoofdingang van de module. Het voert alle nodige initialisatie routines uit, roept hulp-routines aan om noodzakelijke gegevens te verzamelen, en neemt het template op dat de module-uitvoer toont.
  • mod_helloworld.xml - Dit bestand bevat informatie over de module. Het definieert de bestanden die geïnstalleerd moeten worden door de Joomla! installer en bepaalt instellingen-parameters van de module.
  • helper.php - Dit bestand bevat de helper class die gebruikt wordt om het uiteindelijke werk uit te voeren door het ophalen van informatie die getoond moet worden in de module (meestal uit de database of een andere bron).
  • tmpl/default.php - Dit is de module template. Dit bestand pakt de gegevens op die mod_helloworld.php verzamelt en genereert de HTML die op de pagina vertoond wordt.

Het maken van mod_helloworld.php

Het mod_helloworld.php bestand voert drie taken uit:

  • neemt het helper.php bestand op dat de class bevat die gebruikt moet worden om de noodzakelijke gegevens op te halen
  • roept de juiste helper class methode aan om de gegevens op te halen
  • haalt het template op om de uitvoer te tonen.

De helper class is gedefinieerd in ons helper.php bestand. Dit bestand wordt opgenomen met een 'require_once' statement:

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

require_once wordt gebruikt omdat onze helper-functies binnen een class zijn gedefinieerd en we willen dat de class slechts één keer wordt gedefinieerd.

Onze helper class is nog niet gedefinieerd, maar als dat wel zo is, dan bevat het een methode: getHello(). Voor ons basis voorbeeld is het niet echt noodzakelijk om dit te doen - het “Hello, World” bericht dat deze methode teruggeeft kan eenvoudig opgenomen worden in het template. We gebruiken hier een helper class om de basis techniek te tonen.

Onze module gebruikt nu geen parameters, maar we geven ze toch door aan de helper methode zodat het later gebruikt kan worden als we besluiten de functionaliteit van onze module uit te breiden.

De helper class methode wordt op de volgende manier aangeroepen:

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

Voltooide mod_helloworld.php bestand

Het volledige mod_helloworld.php bestand ziet er als volgt uit:

<?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');

De enige regel die we tot nu toe nog niet hebben uitgelegd is de eerste regel. Deze regel controleert of het bestand wordt aangeroepen vanuit de Joomla! toepassing. Dit is nodig om 'variable injection' en andere potentiële beveiligingsrisico's te voorkomen.

Het maken van helper.php

Het helper.php bestand de helper class die gebruikt wordt om de gegevens op te halen die in de module uitvoer getoond wordt. Zoals eerder vermeld heeft onze helper class één methode: getHello(). Deze methode geeft het ‘Hello, World’ bericht terug.

Dit is de code voor het helper.php bestand:

<?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!';
    }
}

Er is geen regel die bepaalt dat we onze helper class de naam moeten geven die we hebben gebruikt, maar het is makkelijk dit te doen zodat het makkelijk herkenbaar en traceerbaar is. Let op dat het in dit formaat is als u van plan bent de com_ajax plugin te gebruiken.

Meer geavanceerde modules kunnen database benaderingen of andere functionaliteit bevatten in de helper class methode.

Het maken van tmpl/default.php

Het default.php bestand is het template dat de module uitvoer toont.

De code voor het default.php bestand is als volgt:

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

Een belangrijk punt om op te letten is dat het template bestand dezelfde scope (reikwijdte) heeft als het mod_helloworld.php bestand. Dit betekent dat de variabele $hello gedefinieerd kan worden in het mod_helloworld.php bestand en dan gebruikt kan worden in het template bestand zonder extra declaraties of functie-aanroepen.

Het maken van mod_helloworld.xml

De mod_helloworld.xml wordt gebruikt om aan te geven welke bestanden de installer moet kopiëren en wordt gebruikt door modulebeheer om te bepalen welke parameters gebruikt worden om de module in te stellen. Andere informatie over de module wordt ook aangegeven in dit bestand.

De code voor mod_helloworld.xml is als volgt:

<?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>

Manifest bestanden verklaart de technische details van de elementen die gebruikt worden in het XML bestand.

U zult merken dat er twee extra bestanden zijn die we nog niet genoemd hebben: index.html en tmpl/index.html. Deze bestanden zijn opgenomen, zodat er niet door deze mappen gebladerd kan worden. Als een gebruiker probeert met de browser naar deze mappen te gaan, dan wordt het index.html bestand weergegeven. Deze bestanden kunnen leeg worden gelaten of de volgende regel bevatten:

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

die een lege pagina laat zien.

Omdat onze module geen gebruik maakt van form fields is de configuratie sectie leeg.

Conclusie

Modules ontwikkelen voor Joomla! is een redelijk eenvoudig en duidelijk proces. Met de technieken in deze handleiding kan zonder veel moeite een eindeloze variatie aan modules ontwikkeld worden.