FAQ o modulu
modul Često postavljana pitanja
Section titled “modul Često postavljana pitanja”Uobičajena pitanja i odgovori o XOOPS modules, instalaciji i upravljanju.
Instalacija i aktivacija
Section titled “Instalacija i aktivacija”P: Kako mogu instalirati modul u XOOPS?
Section titled “P: Kako mogu instalirati modul u XOOPS?”A:
- Preuzmite zip datoteku modula
- Idite na XOOPS Admin > moduli > Upravljanje modulima
- Pritisnite “Pregledaj” i odaberite zip datoteku
- Kliknite “Učitaj”
- modul se pojavljuje na popisu (obično deaktiviran)
- Pritisnite ikonu za aktivaciju da biste je omogućili
Alternativno, izvucite zip izravno u /xoops_root/modules/ i idite na ploču admin.
P: Prijenos modula ne uspijeva s “dozvola odbijena”
Section titled “P: Prijenos modula ne uspijeva s “dozvola odbijena””O: Ovo je problem s dozvolom datoteke:
# Fix module directory permissionschmod 755 /path/to/xoops/modules
# Fix upload directory (if uploading)chmod 777 /path/to/xoops/uploads
# Fix ownership if neededchown -R www-data:www-data /path/to/xoopsZa više detalja pogledajte Neuspješne instalacije modula.
P: Zašto ne mogu vidjeti modul na ploči admin nakon instalacije?
Section titled “P: Zašto ne mogu vidjeti modul na ploči admin nakon instalacije?”A: Provjerite sljedeće:
- modul nije aktiviran - kliknite ikonu oka na popisu modula
- Nedostaje admin stranica - modul mora imati
hasAdmin = 1u xoopsverziji.php - Language files missing - Need
language/english/admin.php - predmemorija nije izbrisana - Obrišite cache i osvježite preglednik
# Clear XOOPS cacherm -rf /path/to/xoops/xoops_data/caches/*P: Kako mogu deinstalirati modul?
Section titled “P: Kako mogu deinstalirati modul?”A:
- Idite na XOOPS Admin > moduli > Upravljanje modulima
- Deaktivirajte modul (kliknite ikonu oka)
- Pritisnite ikonu za smeće/brisanje
- Ručno izbrišite mapu modula ako želite potpuno uklanjanje:
rm -rf /path/to/xoops/modules/modulenameUpravljanje modulom
Section titled “Upravljanje modulom”P: Koja je razlika između onemogućavanja i deinstaliranja?
Section titled “P: Koja je razlika između onemogućavanja i deinstaliranja?”A:
- Onemogući: Deaktivirajte modul (kliknite ikonu oka). Ostaju tablice baze podataka.
- Deinstaliraj: Uklonite modul. Briše tablice baze podataka i uklanja s popisa.
Za stvarno uklanjanje, izbrišite i mapu:
rm -rf modules/modulenameP: Kako mogu provjeriti je li modul ispravno instaliran?
Section titled “P: Kako mogu provjeriti je li modul ispravno instaliran?”A: Koristite skriptu za otklanjanje pogrešaka:
<?php// Create admin/debug_modules.phprequire_once XOOPS_ROOT_PATH . '/mainfile.php';
if (!is_object($xoopsUser) || !$xoopsUser->isAdmin()) { exit('Admin only');}
echo "<h1>Module Debug</h1>";
// List all modules$module_handler = xoops_getHandler('module');$modules = $module_handler->getObjects();
foreach ($modules as $module) { echo "<h2>" . $module->getVar('name') . "</h2>"; echo "Status: " . ($module->getVar('isactive') ? "Active" : "Inactive") . "<br>"; echo "Directory: " . $module->getVar('dirname') . "<br>"; echo "Mid: " . $module->getVar('mid') . "<br>"; echo "Version: " . $module->getVar('version') . "<br>";}?>P: Mogu li pokrenuti više verzija istog modula?
Section titled “P: Mogu li pokrenuti više verzija istog modula?”O: Ne, XOOPS to izvorno ne podržava. Međutim, možete:
- Napravite kopiju s drugim nazivom direktorija:
mymoduleimymodule2 - Ažurirajte dirname u obje modules’ xoopsversion.php
- Ensure unique database table names
To se ne preporučuje jer dijele isti kod.
Konfiguracija modula
Section titled “Konfiguracija modula”P: Gdje mogu konfigurirati postavke modula?
Section titled “P: Gdje mogu konfigurirati postavke modula?”A:
- Idite na XOOPS Admin > moduli
- Pritisnite ikonu postavki/zupčanika pored modula
- Konfigurirajte postavke
Postavke su pohranjene u tablici xoops_config.
Pristup u kodu:
<?php$module_handler = xoops_getHandler('module');$module = $module_handler->getByDirname('modulename');$config_handler = xoops_getHandler('config');$settings = $config_handler->getConfigsByCat(0, $module->mid());
foreach ($settings as $setting) { echo $setting->getVar('conf_name') . ": " . $setting->getVar('conf_value');}?>P: Kako mogu definirati opcije konfiguracije modula?
Section titled “P: Kako mogu definirati opcije konfiguracije modula?”A: U xoopsversion.php:
<?php$modversion['config'] = [ [ 'name' => 'items_per_page', 'title' => '_AM_MYMODULE_ITEMS_PER_PAGE', 'description' => '_AM_MYMODULE_ITEMS_PER_PAGE_DESC', 'formtype' => 'text', 'valuetype' => 'int', 'default' => 10 ], [ 'name' => 'enable_feature', 'title' => '_AM_MYMODULE_ENABLE_FEATURE', 'description' => '_AM_MYMODULE_ENABLE_FEATURE_DESC', 'formtype' => 'yesno', 'valuetype' => 'bool', 'default' => 1 ]];?>Značajke modula
Section titled “Značajke modula”P: Kako mogu dodati stranicu admin svom modulu?
Section titled “P: Kako mogu dodati stranicu admin svom modulu?”A: Napravite strukturu:
modules/mymodule/├── admin/│ ├── index.php│ ├── menu.php│ └── menu_en.phpU xoopsversion.php:
<?php$modversion['hasAdmin'] = 1;$modversion['adminindex'] = 'admin/index.php';?>Kreirajte admin/index.php:
<?phprequire_once XOOPS_ROOT_PATH . '/kernel/admin.php';
xoops_cp_header();echo "<h1>Module Administration</h1>";xoops_cp_footer();?>P: Kako mogu svom modulu dodati funkciju pretraživanja?
Section titled “P: Kako mogu svom modulu dodati funkciju pretraživanja?”A:
- Postavite u xoopsversion.php:
<?php$modversion['hasSearch'] = 1;$modversion['search'] = 'search.php';?>- Kreirajte
search.php:
<?phpfunction mymodule_search($queryArray, $andor, $limit, $offset) { // Search implementation $results = []; return $results;}?>P: Kako mogu dodati obavijesti svom modulu?
Section titled “P: Kako mogu dodati obavijesti svom modulu?”A:
- Postavite u xoopsversion.php:
<?php$modversion['hasNotification'] = 1;$modversion['notification_categories'] = [ ['name' => 'item_published', 'title' => '_NOT_ITEM_PUBLISHED']];$modversion['notifications'] = [ ['name' => 'item_published', 'title' => '_NOT_ITEM_PUBLISHED']];?>- Pokreni obavijest u kodu:
<?php$notification_handler = xoops_getHandler('notification');$notification_handler->triggerEvent( 'item_published', $item_id, 'Item published', 'description');?>dozvole modula
Section titled “dozvole modula”P: Kako postaviti dopuštenja modula?A:
Section titled “P: Kako postaviti dopuštenja modula?A:”- Idite na XOOPS Admin > moduli > dozvole modula
- Odaberite modul
- Odaberite korisnika/grupu i razinu dopuštenja
- Spremiti
U kodu:
<?php// Check if user can access moduleif (!xoops_isUser()) { exit('Login required');}
// Check specific permission$mperm_handler = xoops_getHandler('member_permission');$module_handler = xoops_getHandler('module');$module = $module_handler->getByDirname('mymodule');
if (!$mperm_handler->userCanAccess($module->mid())) { exit('Access denied');}?>baza podataka modula
Section titled “baza podataka modula”P: Gdje su pohranjene tablice baze podataka modula?
Section titled “P: Gdje su pohranjene tablice baze podataka modula?”A: Sve u glavnoj bazi podataka XOOPS, s prefiksom vaše tablice (obično xoops_):
# List all module tablesmysql> SHOW TABLES LIKE 'xoops_mymodule_%';
# Or in PHP<?php$result = $GLOBALS['xoopsDB']->query( "SHOW TABLES LIKE '" . XOOPS_DB_PREFIX . "mymodule_%'");while ($row = $result->fetch_assoc()) { print_r($row);}?>P: Kako mogu ažurirati tablice baze podataka modula?
Section titled “P: Kako mogu ažurirati tablice baze podataka modula?”O: Napravite skriptu za ažuriranje u svom modulu:
<?phprequire_once '../../mainfile.php';
if (!is_object($xoopsUser) || !$xoopsUser->isAdmin()) { exit('Admin only');}
// Add new column$sql = "ALTER TABLE `" . XOOPS_DB_PREFIX . "mymodule_items` ADD COLUMN `new_field` VARCHAR(255)";
if ($GLOBALS['xoopsDB']->query($sql)) { echo "✓ Updated successfully";} else { echo "✗ Error: " . $GLOBALS['xoopsDB']->error;}?>Ovisnosti modula
Section titled “Ovisnosti modula”P: Kako mogu provjeriti jesu li potrebni modules instalirani?
Section titled “P: Kako mogu provjeriti jesu li potrebni modules instalirani?”A:
<?php$module_handler = xoops_getHandler('module');
// Check if a module exists$module = $module_handler->getByDirname('required_module');
if (!$module || !$module->getVar('isactive')) { die('Error: required_module is not installed or active');}?>P: Može li modules ovisiti o drugom modules?
Section titled “P: Može li modules ovisiti o drugom modules?”A: Da, deklariraj u xoopsversion.php:
<?php$modversion['dependencies'] = [ [ 'dirname' => 'required_module', 'version_min' => '1.0', 'version_max' => 0, // 0 = unlimited 'order' => 1 ]];?>Rješavanje problema
Section titled “Rješavanje problema”P: modul se pojavljuje na popisu, ali se ne aktivira
Section titled “P: modul se pojavljuje na popisu, ali se ne aktivira”A: Provjerite:
- xoopsverzija.php syntax - Use PHP linter:
php -l modules/mymodule/xoopsversion.php- Datoteka baze podataka SQL:
# Check SQL syntaxgrep -n "CREATE TABLE" modules/mymodule/sql/mysql.sql- Jezične datoteke:
ls -la modules/mymodule/language/english/Pogledajte Neuspješne instalacije modula za detaljnu dijagnostiku.
P: modul je aktiviran, ali se ne prikazuje na glavnoj stranici
Section titled “P: modul je aktiviran, ali se ne prikazuje na glavnoj stranici”A:
- Postavite
hasMain = 1u xoopsversion.php:
<?php$modversion['hasMain'] = 1;$modversion['main_file'] = 'index.php';?>- Kreirajte
modules/mymodule/index.php:
<?phprequire_once '../../mainfile.php';include_once XOOPS_ROOT_PATH . '/header.php';
echo "Welcome to my module";
include_once XOOPS_ROOT_PATH . '/footer.php';?>P: modul uzrokuje “bijeli ekran smrti”
Section titled “P: modul uzrokuje “bijeli ekran smrti””O: Omogućite otklanjanje pogrešaka da biste pronašli pogrešku:
<?php// In mainfile.phperror_reporting(E_ALL);ini_set('display_errors', '1');define('XOOPS_DEBUG_LEVEL', 2);?>Provjerite zapisnik grešaka:
tail -100 /var/log/php/error.logtail -100 /var/log/apache2/error.logZa rješenja pogledajte Bijeli ekran smrti.
Izvedba
Section titled “Izvedba”P: modul je spor, kako da optimiziram?
Section titled “P: modul je spor, kako da optimiziram?”A:
- Provjerite upite baze podataka - Koristite bilježenje upita
- Podaci iz predmemorije - Koristite XOOPS cache:
<?php$cache = xoops_cache_handler::getInstance();$data = $cache->read('mykey');if ($data === false) { $data = expensive_operation(); $cache->write('mykey', $data, 3600); // 1 hour}?>- Optimiziraj templates - Izbjegavajte petlje u templates
- Omogući PHP operativni kod cache - APCu, XDebug, itd.
Za više detalja pogledajte FAQ o izvedbi.
Razvoj modula
Section titled “Razvoj modula”P: Gdje mogu pronaći dokumentaciju za razvoj modula?
Section titled “P: Gdje mogu pronaći dokumentaciju za razvoj modula?”A: Vidi:
- Vodič za razvoj modula
- Struktura modula
- Stvaranje vašeg prvog modula
Povezana dokumentacija
Section titled “Povezana dokumentacija”- Greške pri instalaciji modula
- Struktura modula
- Česta pitanja o izvedbi
- Omogućite način otklanjanja pogrešaka
#xoops #modules #faq #troubleshooting