Actions

User

Rvsjoen/tutorial/Developing a Module/Part 05

From Joomla! Documentation

< User:Rvsjoen‎ | tutorial/Developing a Module
Revision as of 16:47, 13 March 2012 by Rvsjoen (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Contents

Adding a helper

A helper in the context of a Joomla! extension is usually just a class providing various static helper functions to perform operations. A helper could be used to accomplish a lot of things but common examples are to get a list of items from a database, get the number of currently logged in users, etc... To illustrate how this works, we are going to implement a helper to the module which simple provides the module with yet another string.

With your favorite editor, create the following file

helper.php

<?php 
 
/**
 * @package     Joomla.Tutorials
 * @subpackage  Module
 * @copyright   Copyright (C) 2005 - 2010 Open Source Matters, Inc. All rights reserved.
 * @license     License GNU General Public License version 2 or later; see LICENSE.txt
 */
 
// No direct access to this file
defined('_JEXEC') or die;
 
class modHelloWorldHelper
{
        public static function getGreeting() {
                return "Message from the helper";
        }
}

As you can see, this is nothing more than a class with a static function in it. The class will need to be loaded in the module entry point.

With your favorite editor, edit the following file

mod_helloworld.php

<?php 
 
/**
 * @package     Joomla.Tutorials
 * @subpackage  Module
 * @copyright   Copyright (C) 2005 - 2010 Open Source Matters, Inc. All rights reserved.
 * @license     License GNU General Public License version 2 or later; see LICENSE.txt
 */
 
// No direct access to this file
defined('_JEXEC') or die;
 
JLoader::register('modHelloWorldHelper', JPATH_BASE.'/modules/mod_helloworld/helper.php'); 
require JModuleHelper::getLayoutPath('mod_helloworld', $params->get('layout', 'default'));

The highlighted line takes care of loading the class. We could have used the require() function call to do this, but JLoader offers additional advantages such as lazy loading (The class is not actually loaded unless it is needed). The first argument is the name of the class, and the second argument is the path to the file. JPATH_BASE is a macro which always points to the root of the Joomla! application, in this case the frontend.

tmpl/default.php

<?php 
 
/**
 * @package     Joomla.Tutorials
 * @subpackage  Module
 * @copyright   Copyright (C) 2005 - 2010 Open Source Matters, Inc. All rights reserved.
 * @license     License GNU General Public License version 2 or later; see LICENSE.txt
 */
 
// No direct access to this file
defined('_JEXEC') or die;
?>
 
<p><?php echo $params->get('greeting', JText::_('MOD_HELLOWORLD_GREETING_DEFAULT')); ?></p>
<p><?php echo modHelloWorldHelper::getGreeting(); ?></p>

Here we modify the module template to call the helper function getGreeting() in our helper class and render the string it returns in a new paragraph in addition to the original greeting.

With your favorite editor, edit the following file

mod_helloworld.xml

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="2.5.0" method="upgrade">
 
        <name>MOD_HELLOWORLD</name>
        <!-- The following elements are optional and free of formatting constraints -->
        <creationDate>Once upon a time</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 stored in the extension table -->
        <version>0.0.5</version>
        <!-- The description is optional and defaults to the name -->
        <description>MOD_HELLOWORLD_XML_DESCRIPTION</description>
 
        <!-- Note the folder attribute: This attribute describes what to copy
                into the module folder -->
        <files>
                <filename module="mod_helloworld">mod_helloworld.php</filename>
                <filename>mod_helloworld.xml</filename>
                <filename>helper.php</filename>                <folder>tmpl</folder>
                <folder>language</folder>
        </files>
 
        <config>
                <fields name="params">
                        <fieldset name="basic">
                                <field
                                        name="greeting"
                                        type="text"
                                        default="MOD_HELLOWORLD_GREETING_DEFAULT"
                                        label="MOD_HELLOWORLD_GREETING_LABEL"
                                        description="MOD_HELLOWORLD_GREETING_DESC"
                                />
                        </fieldset>
                </fields>
        </config>
 
</extension>

Here we simply add helper.php to the list of files to be copied when the extension is installed.

File listing

Testing your module

For details on how to install the module into your Joomla! site, refer to the information provided in Part 01.

Download this part

Download example package

Articles in this series

This tutorial is supported by the following versions of Joomla!

Joomla 2.5