Модуль FAQ
Модуль Часті запитання
Section titled “Модуль Часті запитання”Поширені запитання та відповіді щодо модулів XOOPS, встановлення та керування.
Встановлення та активація
Section titled “Встановлення та активація”Q: Як мені встановити модуль у XOOPS?
Section titled “Q: Як мені встановити модуль у XOOPS?”A:
- Завантажте zip-файл модуля
- Перейдіть до XOOPS Адміністратор > Модулі > Керування модулями
- Натисніть «Огляд» і виберіть файл zip
- Натисніть «Завантажити»
- Модуль з’являється в списку (зазвичай деактивований)
- Натисніть піктограму активації, щоб увімкнути її
Крім того, розпакуйте архів zip безпосередньо в /xoops_root/modules/ та перейдіть до панелі адміністратора.
З: Завантаження модуля не вдається через «Дозвіл відмовлено»
Section titled “З: Завантаження модуля не вдається через «Дозвіл відмовлено»”A: Це проблема дозволу на файл:
# 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/xoopsДля отримання додаткової інформації див. Помилки встановлення модуля.
Q: Чому я не бачу модуль в панелі адміністратора після встановлення?
Section titled “Q: Чому я не бачу модуль в панелі адміністратора після встановлення?”A: Перевірте наступне:
- Модуль не активовано - клацніть піктограму ока у списку модулів
- Відсутня сторінка адміністратора - Модуль повинен мати
hasAdmin = 1у версії XOOPS.php - Language files missing - Need
language/english/admin.php - Кеш не очищено - очистіть кеш і оновіть браузер
# Clear XOOPS cacherm -rf /path/to/xoops/xoops_data/caches/*З: Як видалити модуль?
Section titled “З: Як видалити модуль?”A:
- Перейдіть до XOOPS Адміністратор > Модулі > Керування модулями
- Деактивуйте модуль (клацніть піктограму ока)
- Натисніть піктограму trash/delete
- Вручну видаліть папку модуля, якщо ви хочете повністю видалити:
rm -rf /path/to/xoops/modules/modulenameКерування модулями
Section titled “Керування модулями”Q: Яка різниця між вимкненням і видаленням?
Section titled “Q: Яка різниця між вимкненням і видаленням?”A:
- Вимкнути: дезактивувати модуль (натисніть значок ока). Таблиці бази даних залишаються.
- Видалити: видалити модуль. Видаляє таблиці бази даних і видаляє зі списку.
Щоб справді видалити, також видаліть папку:
rm -rf modules/modulenameЗ: Як перевірити, чи правильно встановлено модуль?
Section titled “З: Як перевірити, чи правильно встановлено модуль?”A: Використовуйте сценарій налагодження:
<?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>";}?>Q: Чи можу я запустити кілька версій одного модуля?
Section titled “Q: Чи можу я запустити кілька версій одного модуля?”A: Ні, XOOPS не підтримує це оригінально. Однак ви можете:
- Create a copy with a different directory name:
mymoduleandmymodule2 - Оновіть ім’я каталогу у xoopsversion обох модулів.php
- Ensure unique database table names
Це не рекомендується, оскільки вони мають однаковий код.
Конфігурація модуля
Section titled “Конфігурація модуля”Q: Де я можу налаштувати параметри модуля?
Section titled “Q: Де я можу налаштувати параметри модуля?”A:
- Перейдіть до XOOPS Адміністратор > Модулі
- Натисніть значок settings/gear поруч із модулем
- Налаштуйте параметри
Налаштування зберігаються в таблиці xoops_config.
Доступ у коді:
<?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');}?>З: Як визначити параметри конфігурації модуля?
Section titled “З: Як визначити параметри конфігурації модуля?”A: У 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 ]];?>Функції модуля
Section titled “Функції модуля”З: Як додати сторінку адміністратора до свого модуля?
Section titled “З: Як додати сторінку адміністратора до свого модуля?”A: Створіть структуру:
modules/mymodule/├── admin/│ ├── index.php│ ├── menu.php│ └── menu_en.phpУ xoopsversion.php:
<?php$modversion['hasAdmin'] = 1;$modversion['adminindex'] = 'admin/index.php';?>Створити admin/index.php:
<?phprequire_once XOOPS_ROOT_PATH . '/kernel/admin.php';
xoops_cp_header();echo "<h1>Module Administration</h1>";xoops_cp_footer();?>З: Як додати функцію пошуку до свого модуля?
Section titled “З: Як додати функцію пошуку до свого модуля?”A:
- Встановіть у xoopsversion.php:
<?php$modversion['hasSearch'] = 1;$modversion['search'] = 'search.php';?>- Створіть
search.php:
<?phpfunction mymodule_search($queryArray, $andor, $limit, $offset) { // Search implementation $results = []; return $results;}?>З: Як додати сповіщення до свого модуля?
Section titled “З: Як додати сповіщення до свого модуля?”A:
- Встановіть у 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']];?>- Активуйте сповіщення в коді:
<?php$notification_handler = xoops_getHandler('notification');$notification_handler->triggerEvent( 'item_published', $item_id, 'Item published', 'description');?>Дозволи модуля
Section titled “Дозволи модуля”Q: Як встановити дозволи модуля?
Section titled “Q: Як встановити дозволи модуля?”A:
- Перейдіть до XOOPS Адміністратор > Модулі > Дозволи модуля
- Виберіть модуль
- Виберіть user/group та рівень дозволу
- Зберегти
У коді:
<?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');}?>База даних модуля
Section titled “База даних модуля”Q: Де зберігаються таблиці бази даних модуля?
Section titled “Q: Де зберігаються таблиці бази даних модуля?”A: Усе в основній базі даних XOOPS із префіксом вашої таблиці (зазвичай 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);}?>З: Як оновити таблиці бази даних модуля?
Section titled “З: Як оновити таблиці бази даних модуля?”A: Створіть сценарій оновлення у своєму модулі:
<?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;}?>Залежності модулів
Section titled “Залежності модулів”З: Як перевірити, чи встановлено необхідні модулі?
Section titled “З: Як перевірити, чи встановлено необхідні модулі?”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');}?>З: Чи можуть модулі залежати від інших модулів?
Section titled “З: Чи можуть модулі залежати від інших модулів?”A: Так, оголосити в xoopsversion.php:
<?php$modversion['dependencies'] = [ [ 'dirname' => 'required_module', 'version_min' => '1.0', 'version_max' => 0, // 0 = unlimited 'order' => 1 ]];?>Усунення несправностей
Section titled “Усунення несправностей”Q: Модуль з’являється в списку, але не активується
Section titled “Q: Модуль з’являється в списку, але не активується”A: Перевірити:
- xoopsversion.php syntax - Use PHP linter:
php -l modules/mymodule/xoopsversion.php- Файл бази даних SQL:
# Check SQL syntaxgrep -n "CREATE TABLE" modules/mymodule/sql/mysql.sql- Мовні файли:
ls -la modules/mymodule/language/english/Див. Помилки встановлення модуля для детальної діагностики.
Q: Модуль активовано, але не відображається на головному сайті
Section titled “Q: Модуль активовано, але не відображається на головному сайті”A:
- Встановіть
hasMain = 1у xoopsversion.php:
<?php$modversion['hasMain'] = 1;$modversion['main_file'] = 'index.php';?>- Створіть
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';?>Q: Модуль викликає “білий екран смерті”
Section titled “Q: Модуль викликає “білий екран смерті””A: Увімкніть налагодження, щоб знайти помилку:
<?php// In mainfile.phperror_reporting(E_ALL);ini_set('display_errors', '1');define('XOOPS_DEBUG_LEVEL', 2);?>Перевірте журнал помилок:
tail -100 /var/log/php/error.logtail -100 /var/log/apache2/error.logДивіться Білий екран смерті для вирішення.
Продуктивність
Section titled “Продуктивність”Q: Модуль працює повільно, як оптимізувати?
Section titled “Q: Модуль працює повільно, як оптимізувати?”A:
- Перевірте запити до бази даних - використовуйте журнал запитів
- Дані кешу - використовувати кеш XOOPS:
<?php$cache = xoops_cache_handler::getInstance();$data = $cache->read('mykey');if ($data === false) { $data = expensive_operation(); $cache->write('mykey', $data, 3600); // 1 hour}?>- Оптимізуйте шаблони - уникайте петель у шаблонах
- Увімкнути кеш коду операції PHP - APCu, XDebug тощо.
Див. Продуктивність FAQ для отримання додаткової інформації.
Розробка модуля
Section titled “Розробка модуля”Q: Де я можу знайти документацію щодо розробки модуля?
Section titled “Q: Де я можу знайти документацію щодо розробки модуля?”A: Дивіться:
- Посібник із розробки модуля
- Модульна структура
- Створення вашого першого модуля
Пов’язана документація
Section titled “Пов’язана документація”- Помилки встановлення модуля
- Модульна структура
- Продуктивність FAQ
- Увімкнути режим налагодження
#XOOPS #modules #faq #troubleshooting