Hello World Module
Vodič za modul Hello World
Section titled “Vodič za modul Hello World”Ovaj vodič vas vodi kroz stvaranje vašeg prvog XOOPS modula. Na kraju ćete imati radni modul koji prikazuje “Hello World” i na sučelju i na admin područjima.
Preduvjeti
Section titled “Preduvjeti”- XOOPS 2.5.x instaliran i radi
- PHP 8.0 ili noviji
- Osnovno znanje PHP
- Uređivač teksta ili IDE (preporučuje se PhpStorm)
Korak 1: Napravite strukturu imenika
Section titled “Korak 1: Napravite strukturu imenika”Napravite sljedeću strukturu direktorija u /modules/helloworld/:
/modules/helloworld/ /admin/ admin_header.php admin_footer.php index.php menu.php /assets/ /images/ logo.png /language/ /english/ admin.php main.php modinfo.php /templates/ /admin/ helloworld_admin_index.tpl helloworld_index.tpl index.php xoops_version.phpKorak 2: Napravite definiciju modula
Section titled “Korak 2: Napravite definiciju modula”Kreirajte xoops_version.php:
<?php/** * Hello World Module - Module Definition * * @package HelloWorld * @author Your Name * @copyright 2025 Your Name * @license GPL 2.0 or later */
if (!defined('XOOPS_ROOT_PATH')) { die('XOOPS root path not defined');}
$modversion = [];
// Basic Module Information$modversion['name'] = _MI_HELLOWORLD_NAME;$modversion['version'] = 1.00;$modversion['description'] = _MI_HELLOWORLD_DESC;$modversion['author'] = 'Your Name';$modversion['credits'] = 'XOOPS Community';$modversion['help'] = 'page=help';$modversion['license'] = 'GPL 2.0 or later';$modversion['license_url'] = 'https://www.gnu.org/licenses/gpl-2.0.html';$modversion['image'] = 'assets/images/logo.png';$modversion['dirname'] = 'helloworld';
// Module Status$modversion['release_date'] = '2025/01/28';$modversion['module_website_url'] = 'https://xoops.org/';$modversion['module_website_name'] = 'XOOPS';$modversion['min_php'] = '8.0';$modversion['min_xoops'] = '2.5.11';
// Admin Configuration$modversion['hasAdmin'] = 1;$modversion['adminindex'] = 'admin/index.php';$modversion['adminmenu'] = 'admin/menu.php';$modversion['system_menu'] = 1;
// Main Menu$modversion['hasMain'] = 1;
// Templates$modversion['templates'][] = [ 'file' => 'helloworld_index.tpl', 'description' => _MI_HELLOWORLD_INDEX_TPL,];
// Admin Templates$modversion['templates'][] = [ 'file' => 'admin/helloworld_admin_index.tpl', 'description' => _MI_HELLOWORLD_ADMIN_INDEX_TPL,];
// No database tables needed for this simple module$modversion['tables'] = [];Korak 3: Stvorite jezične datoteke
Section titled “Korak 3: Stvorite jezične datoteke”modinfo.php (Module Information)
Section titled “modinfo.php (Module Information)”Kreiraj language/english/modinfo.php:
<?php/** * Module Information Language Constants */
// Module Infodefine('_MI_HELLOWORLD_NAME', 'Hello World');define('_MI_HELLOWORLD_DESC', 'A simple Hello World module for learning XOOPS development.');
// Template Descriptionsdefine('_MI_HELLOWORLD_INDEX_TPL', 'Main index page template');define('_MI_HELLOWORLD_ADMIN_INDEX_TPL', 'Admin index page template');glavni.php (Frontend Language)
Section titled “glavni.php (Frontend Language)”Kreiraj language/english/main.php:
<?php/** * Frontend Language Constants */
define('_MD_HELLOWORLD_TITLE', 'Hello World');define('_MD_HELLOWORLD_WELCOME', 'Welcome to the Hello World Module!');define('_MD_HELLOWORLD_MESSAGE', 'This is your first XOOPS module. Congratulations!');define('_MD_HELLOWORLD_CURRENT_TIME', 'Current server time:');define('_MD_HELLOWORLD_VISITOR_COUNT', 'You are visitor number:');admin.php (Administratorski jezik)
Section titled “admin.php (Administratorski jezik)”Kreiraj language/english/admin.php:
<?php/** * Admin Language Constants */
define('_AM_HELLOWORLD_INDEX', 'Dashboard');define('_AM_HELLOWORLD_ADMIN_TITLE', 'Hello World Administration');define('_AM_HELLOWORLD_ADMIN_WELCOME', 'Welcome to the Hello World Module Administration');define('_AM_HELLOWORLD_MODULE_INFO', 'Module Information');define('_AM_HELLOWORLD_VERSION', 'Version:');define('_AM_HELLOWORLD_AUTHOR', 'Author:');Korak 4: Stvorite Frontend Index
Section titled “Korak 4: Stvorite Frontend Index”Kreirajte index.php u korijenu modula:
<?php/** * Hello World Module - Frontend Index * * @package HelloWorld * @author Your Name * @copyright 2025 Your Name * @license GPL 2.0 or later */
declare(strict_types=1);
use Xmf\Request;
require_once dirname(__DIR__, 2) . '/mainfile.php';
// Load language filexoops_loadLanguage('main', 'helloworld');
// Get the module helper$helper = \Xmf\Module\Helper::getHelper('helloworld');
// Set page template$GLOBALS['xoopsOption']['template_main'] = 'helloworld_index.tpl';
// Include XOOPS headerrequire XOOPS_ROOT_PATH . '/header.php';
// Get module configuration/** @var \XoopsModule $xoopsModule */$xoopsModule = $GLOBALS['xoopsModule'];
// Generate page content$pageTitle = _MD_HELLOWORLD_TITLE;$welcomeMessage = _MD_HELLOWORLD_WELCOME;$contentMessage = _MD_HELLOWORLD_MESSAGE;$currentTime = date('Y-m-d H:i:s');
// Simple visitor counter (using session)if (!isset($_SESSION['helloworld_visits'])) { $_SESSION['helloworld_visits'] = 0;}$_SESSION['helloworld_visits']++;$visitorCount = $_SESSION['helloworld_visits'];
// Assign variables to template$xoopsTpl->assign([ 'page_title' => $pageTitle, 'welcome_message' => $welcomeMessage, 'content_message' => $contentMessage, 'current_time' => $currentTime, 'visitor_count' => $visitorCount, 'time_label' => _MD_HELLOWORLD_CURRENT_TIME, 'visitor_label' => _MD_HELLOWORLD_VISITOR_COUNT,]);
// Include XOOPS footerrequire XOOPS_ROOT_PATH . '/footer.php';Korak 5: Napravite predložak sučelja
Section titled “Korak 5: Napravite predložak sučelja”Kreiraj templates/helloworld_index.tpl:
<{* Hello World Module - Index Template *}>
<div class="helloworld-container"> <h1><{$page_title}></h1>
<div class="helloworld-welcome"> <p class="lead"><{$welcome_message}></p> </div>
<div class="helloworld-content"> <p><{$content_message}></p> </div>
<div class="helloworld-info"> <ul> <li><strong><{$time_label}></strong> <{$current_time}></li> <li><strong><{$visitor_label}></strong> <{$visitor_count}></li> </ul> </div></div>
<style>.helloworld-container { max-width: 800px; margin: 0 auto; padding: 20px;}
.helloworld-welcome { background-color: #f8f9fa; border-left: 4px solid #007bff; padding: 15px; margin: 20px 0;}
.helloworld-content { margin: 20px 0;}
.helloworld-info { background-color: #e9ecef; padding: 15px; border-radius: 5px;}
.helloworld-info ul { list-style: none; padding: 0; margin: 0;}
.helloworld-info li { padding: 5px 0;}</style>Korak 6: Stvorite administratorske datoteke
Section titled “Korak 6: Stvorite administratorske datoteke”Administratorsko zaglavlje
Section titled “Administratorsko zaglavlje”Kreiraj admin/admin_header.php:
<?php/** * Admin Header */
declare(strict_types=1);
require_once dirname(__DIR__, 3) . '/include/cp_header.php';
// Load admin language filexoops_loadLanguage('admin', 'helloworld');xoops_loadLanguage('modinfo', 'helloworld');
// Get module helper$helper = \Xmf\Module\Helper::getHelper('helloworld');$adminObject = \Xmf\Module\Admin::getInstance();
// Module directory$moduleDirname = $helper->getDirname();$modulePath = XOOPS_ROOT_PATH . '/modules/' . $moduleDirname;$moduleUrl = XOOPS_URL . '/modules/' . $moduleDirname;Administratorsko podnožje
Section titled “Administratorsko podnožje”Kreirajte admin/admin_footer.php:
<?php/** * Admin Footer */
// Display admin footer$adminObject->displayFooter();
require_once dirname(__DIR__, 3) . '/include/cp_footer.php';Administratorski izbornik
Section titled “Administratorski izbornik”Kreiraj admin/menu.php:
<?php/** * Admin Menu Configuration */
if (!defined('XOOPS_ROOT_PATH')) { die('XOOPS root path not defined');}
$adminmenu = [];
// Dashboard$adminmenu[] = [ 'title' => _AM_HELLOWORLD_INDEX, 'link' => 'admin/index.php', 'icon' => 'home.png',];Administratorska indeksna stranica
Section titled “Administratorska indeksna stranica”Kreiraj admin/index.php:
<?php/** * Admin Index Page */
declare(strict_types=1);
require_once __DIR__ . '/admin_header.php';
// Display admin navigation$adminObject->displayNavigation('index.php');
// Create admin info box$adminObject->addInfoBox(_AM_HELLOWORLD_MODULE_INFO);$adminObject->addInfoBoxLine( sprintf('<strong>%s</strong> %s', _AM_HELLOWORLD_VERSION, $helper->getModule()->getVar('version')));$adminObject->addInfoBoxLine( sprintf('<strong>%s</strong> %s', _AM_HELLOWORLD_AUTHOR, $helper->getModule()->getVar('author')));
// Display info box$adminObject->displayInfoBox(_AM_HELLOWORLD_MODULE_INFO);
// Display admin footerrequire_once __DIR__ . '/admin_footer.php';Korak 7: Stvorite Administratorski predložak
Section titled “Korak 7: Stvorite Administratorski predložak”Kreirajte templates/admin/helloworld_admin_index.tpl:
<{* Hello World Module - Admin Index Template *}>
<div class="helloworld-admin"> <h2><{$admin_title}></h2> <p><{$admin_welcome}></p></div>Korak 8: Napravite logotip modula
Section titled “Korak 8: Napravite logotip modula”Izradite ili kopirajte PNG sliku (preporučena veličina: 92x92 piksela) u:
assets/images/logo.png
Možete koristiti bilo koji uređivač slika za izradu jednostavnog logotipa ili koristiti rezervirano mjesto s web-mjesta kao što je placeholder.com.
Korak 9: Instalirajte modul
Section titled “Korak 9: Instalirajte modul”- Prijavite se na svoju stranicu XOOPS kao administrator
- Idite na Administrator sustava > moduli
- Pronađite “Hello World” na popisu dostupnih modules
- Pritisnite gumb Instaliraj
- Potvrdite instalaciju
Korak 10: Testirajte svoj modul
Section titled “Korak 10: Testirajte svoj modul”Test sučelja
Section titled “Test sučelja”- Idite na svoju stranicu XOOPS
- Kliknite na “Hello World” u glavnom izborniku
- Trebali biste vidjeti poruku dobrodošlice i trenutno vrijeme
Administratorski test
Section titled “Administratorski test”- Idite na područje admin
- Kliknite na “Hello World” u izborniku admin
- Trebali biste vidjeti kontrolnu ploču admin
Rješavanje problema
Section titled “Rješavanje problema”modul se ne pojavljuje na popisu za instalaciju
Section titled “modul se ne pojavljuje na popisu za instalaciju”- Provjerite dopuštenja za datoteke (755 za direktorije, 644 za datoteke)
- Provjerite da
xoops_version.phpnema grešaka u sintaksi - Prozirni XOOPS cache
predložak se ne učitava
Section titled “predložak se ne učitava”- Osigurajte da su datoteke predložaka u ispravnom direktoriju
- Provjerite odgovaraju li nazivi datoteka predložaka onima u
xoops_version.php - Provjerite je li sintaksa Smarty ispravna
Jezični nizovi se ne prikazuju
Section titled “Jezični nizovi se ne prikazuju”- Provjerite putanje datoteka language
- Provjerite jesu li konstante language definirane
- Provjerite postoji li ispravna mapa language
Sljedeći koraci
Section titled “Sljedeći koraci”Sada kada imate radni modul, nastavite učiti uz:
- Building-a-CRUD-Module - Dodavanje funkcionalnosti baze podataka
- ../Patterns/MVC-Pattern - Pravilno organizirajte svoj kod
- ../Best-Practices/Testing - Dodajte PHPUnit testove
Kompletna referenca datoteke
Section titled “Kompletna referenca datoteke”Vaš dovršeni modul trebao bi imati ove datoteke:
/modules/helloworld/ /admin/ admin_header.php admin_footer.php index.php menu.php /assets/ /images/ logo.png /language/ /english/ admin.php main.php modinfo.php /templates/ /admin/ helloworld_admin_index.tpl helloworld_index.tpl index.php xoops_version.phpSažetakčestitamo! Napravili ste svoj prvi XOOPS modul. Ključni pojmovi obuhvaćeni:
Section titled “Sažetakčestitamo! Napravili ste svoj prvi XOOPS modul. Ključni pojmovi obuhvaćeni:”- Struktura modula - standardni raspored direktorija modula XOOPS
- xoops_version.php - Definicija i konfiguracija modula
- Jezične datoteke - Podrška za internacionalizaciju
- predlošci - integracija predloška Smarty
- Administratorsko sučelje - Osnovna ploča admin
Vidi također: ../Razvoj modula | Izgradnja-CRUD-modula | ../Patterns/MVC-Uzorak