Tvorba modulu pro CMS Joomla!

Souborová struktura

Standardně jsou při vývoji Joomla! modulu používány následující základní soubory:

  • mod_tags.php: Hlavní vstupní bod mobulu. Shromažďuje všechna potřebná data, tzn. provede všechny potřebné inicializační rutiny, zavolá procesní rutiny. Uvádí šablonu, která bude zobrazována na výstupu modulu.
  • mod_tags.xml: Obsahuje informace o modulu. Určuje soubory, které Joomla! musí nainstalova. Specifikuje konfiguraci modulu.
  • helper.php: Obsahuje helpertřídu používanou k provedení načtení informací zobrazovaných v modulu (zpravidla z databáze či z jiného zdroje).
  • tmpl/default.pgp: Šablona modulu.Vezme získaná data a vygeneruje HTML zobrazené na stránce.
mod_tags.php

Soubor provádí tři úkoly:

  • Vkládá soubor helper.php, který obsahuje třídu určenou pro sběr potřebných dat.
  • Vyvolá příslušnou metodu třídy helperu k načtení dat.
  • Vkládá šablony k zobrazení výstupu.

Soubor helper.php (ve kterém je definována třída helperu) je vložen pomocí funkce requer_once:

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

Celý soubor mod_tags.php vypadá následovně:

<?php
/**
* Tags Module Entry Point
* @package mod_tags
* @version 1.0.0
* @copyright Copyright (C) 2019 Petr Dusek. All rights reserved.
* @license GNU/GPL, see LICENSE.php
* @link https://www.silenceplease.cz
*/

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

$tags = modTagsHelper::getTags($params);
require JModuleHelper::getLayoutPath('mod_tags');
helper.php

Obsahuje třídu helperů používaných pro načtení dat, která mají být zobrazena na výstupu modulu. V našem případě má jendu metodu getTags().

/**
* Helper class for Hello World! module
* @package mod_tags
* @version 1.0.0
* @copyright Copyright (C) 2019 Petr Dusek. All rights reserved.
* @license GNU/GPL, see LICENSE.php
* @link https://www.silenceplease.cz
*/

class modTagsHelper
{
/**
* Retrieves the database
* @param array $params An object containing the module parameters
* @access public
*/
public static function getTags($params)
{
// Obtain a database connection
$db = JFactory::getDbo();
// Retrieve the shout
$query = $db->getQuery(true)
->join('INNER', '#__contentitem_tag_map AS tags ON `tags`.`content_item_id` = `#__content`.`id`')
->from($db->quoteName('#__nazevdatabaze'));
// Prepare the query
$db->setQuery($query);
// Load the row.
$result = $db->loadResult();
// Return result
return $result;
}
}
tmpl/default.php

Obsahuje šablonu zobrazovanou na výstupupu modulu.

<?php 
// No direct access
defined('_JEXEC') or die; ?>
<?php echo $tags; ?> 
mod_helloworld.xml

Specifikuje, které soubory instalátor potřebuje zkopírovat, používá jej Module Manager pro určení, které parametry jsou používány pro konfiuraci modulu.

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="3.1.0" client="site" method="upgrade">
  <name>Tags</name>
  <author>Petr Dusek</author>
  <version>1.0.0</version>
  <description>A simple tags module.</description>
  <files>
    <filename>mod_tags.xml</filename>
    <filename module="mod_tags">mod_tags.php</filename>
    <filename>index.html</filename>
    <filename>helper.php</filename>
    <filename>tmpl/default.php</filename>
    <filename>tmpl/index.html</filename>
</files>
<config>
</config>
</extension>
Další soubory: index.html a tmpl/index.html

Ty slouží k tomu, aby nebylo možné procházet adresáře. V případě, že se uživatel pokusí zobrazit tyto adresáře, zobrazí se mu tyto soubory, které mohou být prázedné anebo monou obsahovat jednoduchý řádek:

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

Zdroje: