מודול FAQ
שאלות נפוצות של מודול
Section titled “שאלות נפוצות של מודול”שאלות ותשובות נפוצות לגבי XOOPS מודולים, התקנה וניהול.
התקנה והפעלה
Section titled “התקנה והפעלה”ש: כיצד אוכל להתקין מודול ב-XOOPS?
Section titled “ש: כיצד אוכל להתקין מודול ב-XOOPS?”ת:
- הורד את קובץ ה-zip של המודול
- עבור אל XOOPS ניהול > מודולים > ניהול מודולים
- לחץ על “עיון” ובחר את קובץ ה-zip
- לחץ על “העלה”
- המודול מופיע ברשימה (בדרך כלל מושבת)
- לחץ על סמל ההפעלה כדי להפעיל אותו
לחלופין, חלץ את ה-zip ישירות לתוך /xoops_root/modules/ ונווט לפאנל הניהול.
ש: העלאת מודול נכשלה עם “הרשאה נדחתה”
Section titled “ש: העלאת מודול נכשלה עם “הרשאה נדחתה””ת: זוהי בעיית הרשאת קובץ:
# 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ראה כשלי התקנת מודול לפרטים נוספים.
ש: מדוע איני יכול לראות את המודול בפאנל הניהול לאחר ההתקנה?
Section titled “ש: מדוע איני יכול לראות את המודול בפאנל הניהול לאחר ההתקנה?”ת: בדוק את הדברים הבאים:
- המודול לא הופעל - לחץ על סמל העין ברשימת המודולים
- דף ניהול חסר - המודול חייב להיות
hasAdmin = 1ב-xoopsversion.php - חסרים קבצי שפה - צריך
language/english/admin.php - הcache לא נקה - נקה cache ורענן את הדפדפן
# Clear XOOPS cacherm -rf /path/to/xoops/xoops_data/caches/*ש: כיצד אוכל להסיר התקנה של מודול?
Section titled “ש: כיצד אוכל להסיר התקנה של מודול?”ת:
- עבור אל XOOPS ניהול > מודולים > ניהול מודולים
- השבת את המודול (לחץ על סמל העין)
- לחץ על הסמל trash/delete
- מחק ידנית את תיקיית המודול אם אתה רוצה הסרה מלאה:
rm -rf /path/to/xoops/modules/modulenameניהול מודול
Section titled “ניהול מודול”ש: מה ההבדל בין השבתה להסרה?
Section titled “ש: מה ההבדל בין השבתה להסרה?”ת:
- השבתה: השבת את המודול (לחץ על סמל העין). נותרו טבלאות מסד נתונים.
- הסר התקנה: הסר את המודול. מוחק טבלאות מסד נתונים ומסיר מהרשימה.
כדי להסיר באמת, מחק גם את התיקיה:
rm -rf modules/modulenameש: כיצד אוכל לבדוק אם מודול מותקן כהלכה?
Section titled “ש: כיצד אוכל לבדוק אם מודול מותקן כהלכה?”ת: השתמש בסקריפט באגים:
<?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>";}?>ש: האם אני יכול להריץ גרסאות מרובות של אותו מודול?
Section titled “ש: האם אני יכול להריץ גרסאות מרובות של אותו מודול?”ת: לא, XOOPS אינו תומך בכך באופן מקורי. עם זאת, אתה יכול:
- צור עותק עם שם ספרייה אחר:
mymoduleו-mymodule2 - עדכן את שם ה-dir ב-xoopsversion.php של שני המודולים
- ודא שמות טבלאות מסד נתונים ייחודיים
זה לא מומלץ מכיוון שהם חולקים את אותו קוד.
תצורת מודול
Section titled “תצורת מודול”ש: איפה אני מגדיר את הגדרות המודול?
Section titled “ש: איפה אני מגדיר את הגדרות המודול?”ת:
- עבור אל XOOPS Admin > מודולים
- לחץ על הסמל 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 “ש: כיצד אוכל להגדיר אפשרויות תצורה של מודול?”ת: ב-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 “ש: כיצד אוכל להוסיף דף ניהול למודול שלי?”ת: צור את המבנה:
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 “ש: כיצד אוכל להוסיף פונקציונליות חיפוש למודול שלי?”ת:
- הגדר ב-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 “ש: כיצד אוכל להוסיף הודעות למודול שלי?”ת:
- הגדר ב-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 “הרשאות מודול”ש: כיצד אוכל להגדיר הרשאות מודול?
Section titled “ש: כיצד אוכל להגדיר הרשאות מודול?”ת:
- עבור אל XOOPS Admin > מודולים > הרשאות מודול
- בחר את המודול
- בחרו 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 “מסד נתונים של מודול”ש: היכן מאוחסנות טבלאות מסד נתונים של מודול?
Section titled “ש: היכן מאוחסנות טבלאות מסד נתונים של מודול?”ת: הכל במסד הנתונים הראשי 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 “ש: כיצד אוכל לעדכן טבלאות מסד נתונים של מודול?”ת: צור סקריפט עדכון במודול שלך:
<?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 “ש: כיצד אוכל לבדוק אם מותקנים מודולים נדרשים?”א:
<?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 “ש: האם מודולים יכולים להיות תלויים במודולים אחרים?”ת: כן, הצהיר ב-xoopsversion.php:
<?php$modversion['dependencies'] = [ [ 'dirname' => 'required_module', 'version_min' => '1.0', 'version_max' => 0, // 0 = unlimited 'order' => 1 ]];?>פתרון בעיות
Section titled “פתרון בעיות”ש: המודול מופיע ברשימה אך לא יופעל
Section titled “ש: המודול מופיע ברשימה אך לא יופעל”ת: בדיקה:
- תחביר xoopsversion.php - השתמש ב- 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/ראה כשלי התקנת מודול לאבחון מפורט.
ש: מודול מופעל אך אינו מופיע באתר הראשי
Section titled “ש: מודול מופעל אך אינו מופיע באתר הראשי”ת:
- הגדר
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';?>ש: מודול גורם ל”מסך מוות לבן”
Section titled “ש: מודול גורם ל”מסך מוות לבן””ת: אפשר איתור באגים כדי למצוא את השגיאה:
<?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 “ביצועים”ש: המודול איטי, כיצד אוכל לבצע אופטימיזציה?
Section titled “ש: המודול איטי, כיצד אוכל לבצע אופטימיזציה?”ת:
- בדוק שאילתות מסד נתונים - השתמש ברישום שאילתות
- נתוני cache - השתמש ב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}?>- בצע אופטימיזציה של תבניות - הימנע מלולאות בתבניות
- אפשר PHP cache opcode - APCu, XDebug וכו’.
ראה ביצועים FAQ לפרטים נוספים.
פיתוח מודול
Section titled “פיתוח מודול”ש: היכן אוכל למצוא תיעוד לפיתוח מודול?
Section titled “ש: היכן אוכל למצוא תיעוד לפיתוח מודול?”ת: ראה:
- מדריך לפיתוח מודול
- מבנה מודול
- יצירת המודול הראשון שלך
תיעוד קשור
Section titled “תיעוד קשור”- כשלים בהתקנת מודול
- מבנה מודול
- ביצועים FAQ
- הפעל מצב ניפוי באגים
#xoops #מודולים #שאלות נפוצות #פתרון בעיות