سوالات متداول ماژول
ماژول سوالات متداول
Section titled “ماژول سوالات متداول”پرسش ها و پاسخ های متداول در مورد ماژول های XOOPS، نصب و مدیریت.
نصب و فعال سازی
Section titled “نصب و فعال سازی”س: چگونه یک ماژول را در XOOPS نصب کنم؟
Section titled “س: چگونه یک ماژول را در XOOPS نصب کنم؟”الف:
- فایل فشرده ماژول را دانلود کنید
- به XOOPS Admin > Modules > Manage Modules بروید
- روی «مرور» کلیک کنید و فایل فشرده را انتخاب کنید
- روی «آپلود» کلیک کنید
- ماژول در لیست ظاهر می شود (معمولاً غیرفعال می شود)
- روی نماد فعال سازی کلیک کنید تا فعال شود
متناوبا، فایل فشرده را مستقیماً در /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برای جزئیات بیشتر به خطاهای نصب ماژول مراجعه کنید.
س: چرا بعد از نصب نمی توانم ماژول را در پنل مدیریت ببینم؟
Section titled “س: چرا بعد از نصب نمی توانم ماژول را در پنل مدیریت ببینم؟”A: موارد زیر را بررسی کنید:
- ماژول فعال نشده - روی نماد چشم در لیست ماژول ها کلیک کنید
- صفحه مدیریت گم شده - ماژول باید
hasAdmin = 1در xoopsversion.php داشته باشد - فایل های زبان موجود نیست - نیاز به
language/english/admin.php - حافظه پنهان پاک نشده - کش را پاک کنید و مرورگر را تازه کنید
# Clear XOOPS cacherm -rf /path/to/xoops/xoops_data/caches/*س: چگونه یک ماژول را حذف نصب کنم؟
Section titled “س: چگونه یک ماژول را حذف نصب کنم؟”الف:
- به XOOPS Admin > Modules > Manage Modules بروید
- ماژول را غیرفعال کنید (روی نماد چشم کلیک کنید)
- روی نماد trash/delete کلیک کنید
- اگر می خواهید به طور کامل حذف شود، پوشه ماژول را به صورت دستی حذف کنید:
rm -rf /path/to/xoops/modules/modulenameمدیریت ماژول
Section titled “مدیریت ماژول”س: تفاوت بین غیرفعال کردن و حذف نصب چیست؟
Section titled “س: تفاوت بین غیرفعال کردن و حذف نصب چیست؟”الف:
- غیرفعال کردن: ماژول را غیرفعال کنید (روی نماد چشم کلیک کنید). جداول پایگاه داده باقی مانده است.
- حذف نصب: ماژول را حذف کنید. جداول پایگاه داده را حذف می کند و از لیست حذف می کند.
برای حذف واقعی، پوشه را نیز حذف کنید:
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>";}?>س: آیا می توانم چندین نسخه از یک ماژول را اجرا کنم؟
Section titled “س: آیا می توانم چندین نسخه از یک ماژول را اجرا کنم؟”A: نه، XOOPS به صورت بومی از این پشتیبانی نمی کند. با این حال، شما می توانید:
- یک کپی با نام دایرکتوری متفاوت ایجاد کنید:
mymoduleوmymodule2 - نام dirname را در هر دو ماژول xoopsversion.php به روز کنید
- از نام های جداول پایگاه داده منحصر به فرد اطمینان حاصل کنید
این توصیه نمی شود زیرا آنها یک کد را به اشتراک می گذارند.
پیکربندی ماژول
Section titled “پیکربندی ماژول”س: کجا تنظیمات ماژول را پیکربندی کنم؟
Section titled “س: کجا تنظیمات ماژول را پیکربندی کنم؟”الف:
- به XOOPS Admin > Modules بروید
- روی نماد 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 “س: چگونه قابلیت جستجو را به ماژول خود اضافه کنم؟”الف:
- در 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 > Modules > Module Permissions بروید
- ماژول را انتخاب کنید
- 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 “س: جداول پایگاه داده ماژول در کجا ذخیره می شوند؟”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 “س: چگونه می توانم بررسی کنم که آیا ماژول های مورد نیاز نصب شده اند؟”الف:
<?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');}?>س: آیا ماژول ها می توانند به ماژول های دیگر وابسته باشند؟A: بله، در xoopsversion.php اعلام کنید:
Section titled “س: آیا ماژول ها می توانند به ماژول های دیگر وابسته باشند؟A: بله، در xoopsversion.php اعلام کنید:”<?php$modversion['dependencies'] = [ [ 'dirname' => 'required_module', 'version_min' => '1.0', 'version_max' => 0, // 0 = unlimited 'order' => 1 ]];?>عیب یابی
Section titled “عیب یابی”س: ماژول در لیست ظاهر می شود اما فعال نمی شود
Section titled “س: ماژول در لیست ظاهر می شود اما فعال نمی شود”A: بررسی کنید:
- نحو 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 “س: ماژول باعث “صفحه سفید مرگ” می شود”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 “عملکرد”س: ماژول کند است، چگونه بهینه سازی کنم؟
Section titled “س: ماژول کند است، چگونه بهینه سازی کنم؟”الف:
- پرس و جوهای پایگاه داده را بررسی کنید - از ثبت درخواست استفاده کنید
- داده های کش - از حافظه نهان 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، و غیره.
برای جزئیات بیشتر به سوالات متداول عملکرد مراجعه کنید.
توسعه ماژول
Section titled “توسعه ماژول”س: کجا می توانم اسناد توسعه ماژول را پیدا کنم؟
Section titled “س: کجا می توانم اسناد توسعه ماژول را پیدا کنم؟”A: ببینید:
- راهنمای توسعه ماژول
- ساختار ماژول
- ایجاد اولین ماژول شما
مستندات مرتبط
Section titled “مستندات مرتبط”- خرابی های نصب ماژول
- ساختار ماژول
- سوالات متداول عملکرد
- حالت Debug Mode را فعال کنید
#xoops #modules #faq #عیبیابی