FAQ module
module Pertanyaan yang Sering Diajukan
Section titled “module Pertanyaan yang Sering Diajukan”Pertanyaan dan jawaban umum tentang module, instalasi, dan manajemen XOOPS.
Instalasi & Aktivasi
Section titled “Instalasi & Aktivasi”Q: Bagaimana cara menginstal module di XOOPS?
Section titled “Q: Bagaimana cara menginstal module di XOOPS?”J:
- Unduh file zip module
- Buka Admin XOOPS > module > Kelola module
- Klik “Jelajahi” dan pilih file zip
- Klik “Unggah”
- module muncul dalam daftar (biasanya dinonaktifkan)
- Klik ikon aktivasi untuk mengaktifkannya
Alternatifnya, ekstrak zip langsung ke /xoops_root/modules/ dan navigasikan ke panel admin.
T: Pengunggahan module gagal dengan “Izin ditolak”
Section titled “T: Pengunggahan module gagal dengan “Izin ditolak””A: Ini adalah masalah izin file:
# 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/xoopsLihat Kegagalan Instalasi module untuk lebih jelasnya.
Q: Mengapa saya tidak dapat melihat module di panel admin setelah instalasi?
Section titled “Q: Mengapa saya tidak dapat melihat module di panel admin setelah instalasi?”J: Periksa hal berikut:
- module tidak diaktifkan - Klik ikon mata di daftar module
- Halaman admin tidak ada - module harus memiliki
hasAdmin = 1di xoopsversion.php - File bahasa hilang - Perlu
language/english/admin.php - Cache tidak dibersihkan - Hapus cache dan segarkan browser
# Clear XOOPS cacherm -rf /path/to/xoops/xoops_data/caches/*T: Bagaimana cara menghapus instalasi module?
Section titled “T: Bagaimana cara menghapus instalasi module?”J:
- Buka Admin XOOPS > module > Kelola module
- Nonaktifkan module (klik ikon mata)
- Klik ikon trash/delete
- Hapus folder module secara manual jika Anda ingin penghapusan total:
rm -rf /path/to/xoops/modules/modulenameManajemen module
Section titled “Manajemen module”T: Apa perbedaan antara menonaktifkan dan menghapus instalasi?
Section titled “T: Apa perbedaan antara menonaktifkan dan menghapus instalasi?”J:
- Nonaktifkan: Menonaktifkan module (klik ikon mata). Tabel database tetap ada.
- Copot pemasangan: Lepaskan module. Menghapus tabel database dan menghapus dari daftar.
Untuk benar-benar menghapus, hapus juga foldernya:
rm -rf modules/modulenameT: Bagaimana cara memeriksa apakah module terpasang dengan benar?
Section titled “T: Bagaimana cara memeriksa apakah module terpasang dengan benar?”A: Gunakan skrip debug:
<?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>";}?>T: Bisakah saya menjalankan beberapa versi dari module yang sama?
Section titled “T: Bisakah saya menjalankan beberapa versi dari module yang sama?”A: Tidak, XOOPS tidak mendukung ini secara asli. Namun, Anda dapat:
- Buat salinan dengan nama direktori berbeda:
mymoduledanmymodule2 - Perbarui nama dir di xoopsversion.php kedua module
- Pastikan nama tabel database unik
Ini tidak disarankan karena keduanya berbagi kode yang sama.
Konfigurasi module
Section titled “Konfigurasi module”T: Di mana saya dapat mengonfigurasi pengaturan module?
Section titled “T: Di mana saya dapat mengonfigurasi pengaturan module?”J:
- Buka Admin XOOPS > module
- Klik ikon settings/gear di sebelah module
- Konfigurasikan preferensi
Pengaturan disimpan di tabel xoops_config.
Akses dalam kode:
<?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');}?>T: Bagaimana cara menentukan opsi konfigurasi module?
Section titled “T: Bagaimana cara menentukan opsi konfigurasi module?”J: Di 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 ]];?>Fitur module
Section titled “Fitur module”T: Bagaimana cara menambahkan halaman admin ke module saya?
Section titled “T: Bagaimana cara menambahkan halaman admin ke module saya?”A: Buat struktur:
modules/mymodule/├── admin/│ ├── index.php│ ├── menu.php│ └── menu_en.phpDi xoopsversion.php:
<?php$modversion['hasAdmin'] = 1;$modversion['adminindex'] = 'admin/index.php';?>Buat admin/index.php:
<?phprequire_once XOOPS_ROOT_PATH . '/kernel/admin.php';
xoops_cp_header();echo "<h1>Module Administration</h1>";xoops_cp_footer();?>T: Bagaimana cara menambahkan fungsi pencarian ke module saya?
Section titled “T: Bagaimana cara menambahkan fungsi pencarian ke module saya?”J:
- Diatur di xoopsversion.php:
<?php$modversion['hasSearch'] = 1;$modversion['search'] = 'search.php';?>- Buat
search.php:
<?phpfunction mymodule_search($queryArray, $andor, $limit, $offset) { // Search implementation $results = []; return $results;}?>T: Bagaimana cara menambahkan notifikasi ke module saya?
Section titled “T: Bagaimana cara menambahkan notifikasi ke module saya?”J:
- Diatur di 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']];?>- Memicu notifikasi dalam kode:
<?php$notification_handler = xoops_getHandler('notification');$notification_handler->triggerEvent( 'item_published', $item_id, 'Item published', 'description');?>Izin module
Section titled “Izin module”T: Bagaimana cara mengatur izin module?
Section titled “T: Bagaimana cara mengatur izin module?”J:
- Buka Admin XOOPS > module > Izin module
- Pilih module
- Pilih user/group dan tingkat izin
- Simpan
Dalam kode:
<?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');}?>module Basis Data
Section titled “module Basis Data”T: Di mana tabel database module disimpan?
Section titled “T: Di mana tabel database module disimpan?”A: Semua di database utama XOOPS, diawali dengan awalan tabel Anda (biasanya 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);}?>T: Bagaimana cara memperbarui tabel database module?
Section titled “T: Bagaimana cara memperbarui tabel database module?”A: Buat skrip pembaruan di module Anda:
<?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;}?>Ketergantungan module
Section titled “Ketergantungan module”T: Bagaimana cara memeriksa apakah module yang diperlukan sudah diinstal?
Section titled “T: Bagaimana cara memeriksa apakah module yang diperlukan sudah diinstal?”J:
<?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');}?>T: Apakah module dapat bergantung pada module lain?
Section titled “T: Apakah module dapat bergantung pada module lain?”A: Ya, nyatakan di xoopsversion.php:
<?php$modversion['dependencies'] = [ [ 'dirname' => 'required_module', 'version_min' => '1.0', 'version_max' => 0, // 0 = unlimited 'order' => 1 ]];?>Pemecahan masalah
Section titled “Pemecahan masalah”Q: module muncul di daftar tetapi tidak aktif
Section titled “Q: module muncul di daftar tetapi tidak aktif”J: Periksa:
- Sintaks xoopsversion.php - Gunakan linter PHP:
php -l modules/mymodule/xoopsversion.php- File basis data SQL:
# Check SQL syntaxgrep -n "CREATE TABLE" modules/mymodule/sql/mysql.sql- File bahasa:
ls -la modules/mymodule/language/english/Lihat Kegagalan Pemasangan module untuk diagnostik terperinci.
Q: module diaktifkan tetapi tidak muncul di situs utama
Section titled “Q: module diaktifkan tetapi tidak muncul di situs utama”J:
- Tetapkan
hasMain = 1di xoopsversion.php:
<?php$modversion['hasMain'] = 1;$modversion['main_file'] = 'index.php';?>- Buat
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';?>T: module menyebabkan “layar putih kematian”
Section titled “T: module menyebabkan “layar putih kematian””A: Aktifkan debugging untuk menemukan kesalahan:
<?php// In mainfile.phperror_reporting(E_ALL);ini_set('display_errors', '1');define('XOOPS_DEBUG_LEVEL', 2);?>Periksa log kesalahan:
tail -100 /var/log/php/error.logtail -100 /var/log/apache2/error.logLihat Layar Putih Kematian untuk solusinya.
Kinerja
Section titled “Kinerja”Q: module lambat, bagaimana cara mengoptimalkannya?
Section titled “Q: module lambat, bagaimana cara mengoptimalkannya?”J:
- Periksa kueri basis data - Gunakan pencatatan kueri
- Data cache - Gunakan cache XOOPS:
<?php$cache = xoops_cache_handler::getInstance();$data = $cache->read('mykey');if ($data === false) { $data = expensive_operation(); $cache->write('mykey', $data, 3600); // 1 hour}?>- Optimalkan template - Hindari loop dalam template
- Aktifkan cache opcode PHP - APCu, XDebug, dll.
Lihat FAQ Kinerja untuk lebih jelasnya.
Pengembangan module
Section titled “Pengembangan module”T: Di mana saya dapat menemukan dokumentasi pengembangan module?
Section titled “T: Di mana saya dapat menemukan dokumentasi pengembangan module?”J: Lihat:
- Panduan Pengembangan module
- Struktur module
- Membuat module Pertama Anda
Dokumentasi Terkait
Section titled “Dokumentasi Terkait”- Kegagalan Instalasi module
- Struktur module
- FAQ Kinerja
- Aktifkan Mode Debug
#xoops #modules #faq #pemecahan masalah