इसे छोड़कर कंटेंट पर जाएं

XOOPS मॉड्यूल सिस्टम

XOOPS मॉड्यूल सिस्टम मॉड्यूल कार्यक्षमता के विकास, स्थापना, प्रबंधन और विस्तार के लिए एक संपूर्ण ढांचा प्रदान करता है। मॉड्यूल स्व-निहित पैकेज हैं जो अतिरिक्त सुविधाओं और क्षमताओं के साथ XOOPS का विस्तार करते हैं।

मॉड्यूल आर्किटेक्चर

Section titled “मॉड्यूल आर्किटेक्चर”
graph TD
A[Module Package] -->|contains| B[xoops_version.php]
A -->|contains| C[Admin Interface]
A -->|contains| D[User Interface]
A -->|contains| E[Class Files]
A -->|contains| F[SQL Schema]
B -->|defines| G[Module Metadata]
B -->|defines| H[Admin Pages]
B -->|defines| I[User Pages]
B -->|defines| J[Blocks]
B -->|defines| K[Hooks]
L[Module Manager] -->|reads| B
L -->|controls| M[Installation]
L -->|controls| N[Activation]
L -->|controls| O[Update]
L -->|controls| P[Uninstallation]

मानक XOOPS मॉड्यूल निर्देशिका संरचना:

mymodule/
├── xoops_version.php # Module manifest and configuration
├── admin.php # Admin main page
├── index.php # User main page
├── admin/ # Admin pages directory
│ ├── main.php
│ ├── manage.php
│ └── settings.php
├── class/ # Module classes
│ ├── Handler/
│ │ ├── ItemHandler.php
│ │ └── CategoryHandler.php
│ └── Objects/
│ ├── Item.php
│ └── Category.php
├── sql/ # Database schemas
│ ├── mysql.sql
│ └── postgres.sql
├── include/ # Include files
│ ├── common.inc.php
│ └── functions.php
├── templates/ # Module templates
│ ├── admin/
│ │ └── main.tpl
│ └── user/
│ ├── index.tpl
│ └── item.tpl
├── blocks/ # Module blocks
│ └── blocks.php
├── tests/ # Unit tests
├── language/ # Language files
│ ├── english/
│ │ └── main.php
│ └── spanish/
│ └── main.php
└── docs/ # Documentation

XoopsModule वर्ग एक स्थापित XOOPS मॉड्यूल का प्रतिनिधित्व करता है।

namespace Xoops\Core\Module;
class XoopsModule extends XoopsObject
{
protected int $moduleid = 0;
protected string $name = '';
protected string $dirname = '';
protected string $version = '';
protected string $description = '';
protected array $config = [];
protected array $blocks = [];
protected array $adminPages = [];
protected array $userPages = [];
}
संपत्तिप्रकारविवरण
$moduleidintअद्वितीय मॉड्यूल आईडी
$nameस्ट्रिंगमॉड्यूल प्रदर्शन नाम
$dirnameस्ट्रिंगमॉड्यूल निर्देशिका नाम
$versionस्ट्रिंगवर्तमान मॉड्यूल संस्करण
$descriptionस्ट्रिंगमॉड्यूल विवरण
$configसारणीमॉड्यूल विन्यास
$blocksसारणीमॉड्यूल ब्लॉक
$adminPagesसारणीव्यवस्थापक पैनल पेज
$userPagesसारणीउपयोगकर्ता-सामना वाले पृष्ठ
public function __construct()

एक नया मॉड्यूल इंस्टेंस बनाता है और वेरिएबल प्रारंभ करता है।

नाम प्राप्त करें

Section titled “नाम प्राप्त करें”

मॉड्यूल का प्रदर्शन नाम प्राप्त करें।

public function getName(): string

रिटर्न: string - मॉड्यूल प्रदर्शन नाम

उदाहरण:

$module = new XoopsModule();
$module->setVar('name', 'Publisher');
echo $module->getName(); // "Publisher"

नाम प्राप्त करें

Section titled “नाम प्राप्त करें”

मॉड्यूल का निर्देशिका नाम प्राप्त करें।

public function getDirname(): string

रिटर्न: string - मॉड्यूल निर्देशिका नाम

उदाहरण:

echo $module->getDirname(); // "publisher"

संस्करण प्राप्त करें

Section titled “संस्करण प्राप्त करें”

वर्तमान मॉड्यूल संस्करण प्राप्त करता है।

public function getVersion(): string

रिटर्न: string - संस्करण स्ट्रिंग

उदाहरण:

echo $module->getVersion(); // "2.1.0"

विवरण प्राप्त करें

Section titled “विवरण प्राप्त करें”

मॉड्यूल विवरण प्राप्त करता है।

public function getDescription(): string

रिटर्न: string - मॉड्यूल विवरण

उदाहरण:

$desc = $module->getDescription();

कॉन्फिग प्राप्त करें

Section titled “कॉन्फिग प्राप्त करें”

मॉड्यूल कॉन्फ़िगरेशन पुनर्प्राप्त करता है।

public function getConfig(string $key = null): mixed

पैरामीटर:

पैरामीटरप्रकारविवरण
$keyस्ट्रिंगकॉन्फ़िगरेशन कुंजी (सभी के लिए शून्य)

रिटर्न: mixed - कॉन्फ़िगरेशन मान या सरणी

उदाहरण:

$config = $module->getConfig();
$itemsPerPage = $module->getConfig('items_per_page');

मॉड्यूल कॉन्फ़िगरेशन सेट करता है।

public function setConfig(string $key, mixed $value): void

पैरामीटर:

पैरामीटरप्रकारविवरण
$keyस्ट्रिंगकॉन्फ़िगरेशन कुंजी
$valueमिश्रितकॉन्फ़िगरेशन मान

उदाहरण:

$module->setConfig('items_per_page', 20);
$module->setConfig('enable_cache', true);

मॉड्यूल के लिए पूर्ण फ़ाइल सिस्टम पथ प्राप्त करता है।

public function getPath(): string

रिटर्न: string - पूर्ण मॉड्यूल निर्देशिका पथ

उदाहरण:

$path = $module->getPath(); // "/var/www/xoops/modules/publisher"
$classPath = $module->getPath() . '/class';

मॉड्यूल का URL प्राप्त करता है।

public function getUrl(): string

रिटर्न: string - मॉड्यूल URL

उदाहरण:

$url = $module->getUrl(); // "http://example.com/modules/publisher"

मॉड्यूल स्थापना प्रक्रिया

Section titled “मॉड्यूल स्थापना प्रक्रिया”

xoops_module_install फ़ंक्शन

Section titled “xoops_module_install फ़ंक्शन”

मॉड्यूल इंस्टॉलेशन फ़ंक्शन xoops_version.php में परिभाषित है:

function xoops_module_install_modulename($module)
{
// $module is an XoopsModule instance
// Create database tables
// Initialize default configuration
// Create default folders
// Set up file permissions
return true; // Success
}

पैरामीटर:

पैरामीटरप्रकारविवरण
$moduleXoopsModuleमॉड्यूल स्थापित किया जा रहा है

रिटर्न: bool - सफलता पर सच, असफलता पर झूठ

उदाहरण:

function xoops_module_install_publisher($module)
{
// Get module path
$modulePath = $module->getPath();
// Create uploads directory
$uploadsPath = XOOPS_ROOT_PATH . '/uploads/publisher';
if (!is_dir($uploadsPath)) {
mkdir($uploadsPath, 0755, true);
}
// Get database connection
global $xoopsDB;
// Execute SQL installation script
$sqlFile = $modulePath . '/sql/mysql.sql';
if (file_exists($sqlFile)) {
$sqlQueries = file_get_contents($sqlFile);
// Execute queries (simplified)
$xoopsDB->queryFromFile($sqlFile);
}
// Set default configuration
$module->setConfig('items_per_page', 10);
$module->setConfig('enable_comments', true);
return true;
}

xoops_module_uninstall फ़ंक्शन

Section titled “xoops_module_uninstall फ़ंक्शन”

मॉड्यूल अनइंस्टॉलेशन फ़ंक्शन:

function xoops_module_uninstall_modulename($module)
{
// Drop database tables
// Remove uploaded files
// Clean up configuration
return true;
}

उदाहरण:

function xoops_module_uninstall_publisher($module)
{
global $xoopsDB;
// Drop tables
$tables = ['publisher_items', 'publisher_categories', 'publisher_comments'];
foreach ($tables as $table) {
$xoopsDB->query('DROP TABLE IF EXISTS ' . $xoopsDB->prefix($table));
}
// Remove upload folder
$uploadsPath = XOOPS_ROOT_PATH . '/uploads/publisher';
if (is_dir($uploadsPath)) {
// Recursive directory deletion
$this->recursiveRemoveDir($uploadsPath);
}
return true;
}

मॉड्यूल हुक मॉड्यूल को अन्य मॉड्यूल और सिस्टम के साथ एकीकृत करने की अनुमति देते हैं।

xoops_version.php में:

$modversion['hooks'] = [
'system.page.footer' => [
'function' => 'publisher_page_footer'
],
'user.profile.view' => [
'function' => 'publisher_user_articles'
],
];

हुक कार्यान्वयन

Section titled “हुक कार्यान्वयन”
// In a module file (e.g., include/hooks.php)
function publisher_page_footer()
{
// Return HTML for footer
return '<div class="publisher-footer">Publisher Footer Content</div>';
}
function publisher_user_articles($user_id)
{
global $xoopsDB;
// Get user's articles
$result = $xoopsDB->query(
'SELECT * FROM ' . $xoopsDB->prefix('publisher_articles') .
' WHERE author_id = ? ORDER BY published DESC LIMIT 5',
[$user_id]
);
$articles = [];
while ($row = $xoopsDB->fetchAssoc($result)) {
$articles[] = $row;
}
return $articles;
}

उपलब्ध सिस्टम हुक| हुक | पैरामीटर्स | विवरण |

Section titled “उपलब्ध सिस्टम हुक| हुक | पैरामीटर्स | विवरण |”

|------|----|----| | system.page.header | कोई नहीं | पेज हेडर आउटपुट | | system.page.footer | कोई नहीं | पृष्ठ पादलेख आउटपुट | | user.login.success | $user वस्तु | उपयोगकर्ता लॉगिन के बाद | | user.logout | $user वस्तु | उपयोगकर्ता लॉगआउट के बाद | | user.profile.view | $user_id | उपयोगकर्ता प्रोफ़ाइल देखना | | module.install | $module वस्तु | मॉड्यूल स्थापना | | module.uninstall | $module वस्तु | मॉड्यूल अनइंस्टॉलेशन |

मॉड्यूल प्रबंधक सेवा

Section titled “मॉड्यूल प्रबंधक सेवा”

ModuleManager सेवा मॉड्यूल संचालन संभालती है।

नाम से एक मॉड्यूल पुनर्प्राप्त करता है।

public function getModule(string $dirname): ?XoopsModule

पैरामीटर:

पैरामीटरप्रकारविवरण
$dirnameस्ट्रिंगमॉड्यूल निर्देशिका नाम

रिटर्न: ?XoopsModule - मॉड्यूल इंस्टेंस या शून्य

उदाहरण:

$moduleManager = $kernel->getService('module');
$publisher = $moduleManager->getModule('publisher');
if ($publisher) {
echo $publisher->getName();
}

सभी मॉड्यूल प्राप्त करें

Section titled “सभी मॉड्यूल प्राप्त करें”

सभी स्थापित मॉड्यूल प्राप्त करता है।

public function getAllModules(bool $activeOnly = true): array

पैरामीटर:

पैरामीटरप्रकारविवरण
$activeOnlyबूलकेवल सक्रिय मॉड्यूल लौटाएं

रिटर्न: array - XoopsModule ऑब्जेक्ट की श्रृंखला

उदाहरण:

$activeModules = $moduleManager->getAllModules(true);
foreach ($activeModules as $module) {
echo $module->getName() . " - " . $module->getVersion() . "\n";
}

मॉड्यूलएक्टिव है

Section titled “मॉड्यूलएक्टिव है”

जाँचता है कि कोई मॉड्यूल सक्रिय है या नहीं।

public function isModuleActive(string $dirname): bool

उदाहरण:

if ($moduleManager->isModuleActive('publisher')) {
// Publisher module is active
}

एक मॉड्यूल सक्रिय करता है.

public function activateModule(string $dirname): bool

उदाहरण:

if ($moduleManager->activateModule('publisher')) {
echo "Publisher activated";
}

निष्क्रिय मॉड्यूल

Section titled “निष्क्रिय मॉड्यूल”

एक मॉड्यूल को निष्क्रिय कर देता है.

public function deactivateModule(string $dirname): bool

उदाहरण:

if ($moduleManager->deactivateModule('publisher')) {
echo "Publisher deactivated";
}

मॉड्यूल कॉन्फ़िगरेशन (xoops_version.php)

Section titled “मॉड्यूल कॉन्फ़िगरेशन (xoops_version.php)”

संपूर्ण मॉड्यूल मेनिफेस्ट उदाहरण:

<?php
/**
* Module manifest for Publisher
*/
$modversion = [
'name' => 'Publisher',
'version' => '2.1.0',
'description' => 'Professional content publishing module',
'author' => 'XOOPS Community',
'credits' => 'Based on original work by...',
'license' => 'GPL v2',
'official' => 1,
'image' => 'images/logo.png',
'dirname' => 'publisher',
'onInstall' => 'xoops_module_install_publisher',
'onUpdate' => 'xoops_module_update_publisher',
'onUninstall' => 'xoops_module_uninstall_publisher',
// Admin pages
'hasAdmin' => 1,
'adminindex' => 'admin/main.php',
'adminmenu' => [
[
'title' => 'Dashboard',
'link' => 'admin/main.php',
'icon' => 'dashboard.png'
],
[
'title' => 'Manage Items',
'link' => 'admin/items.php',
'icon' => 'items.png'
],
[
'title' => 'Settings',
'link' => 'admin/settings.php',
'icon' => 'settings.png'
]
],
// User pages
'hasMain' => 1,
'main_file' => 'index.php',
// Blocks
'blocks' => [
[
'file' => 'blocks/recent.php',
'name' => 'Recent Articles',
'description' => 'Display recent published articles',
'show_func' => 'publisher_recent_show',
'edit_func' => 'publisher_recent_edit',
'options' => '5|0|0',
'template' => 'publisher_block_recent.tpl'
],
[
'file' => 'blocks/featured.php',
'name' => 'Featured Articles',
'description' => 'Display featured articles',
'show_func' => 'publisher_featured_show',
'edit_func' => 'publisher_featured_edit'
]
],
// Module hooks
'hooks' => [
'system.page.footer' => [
'function' => 'publisher_page_footer'
],
'user.profile.view' => [
'function' => 'publisher_user_articles'
]
],
// Configuration items
'config' => [
[
'name' => 'items_per_page',
'title' => '_MI_PUBLISHER_ITEMS_PER_PAGE',
'description' => '_MI_PUBLISHER_ITEMS_PER_PAGE_DESC',
'formtype' => 'text',
'valuetype' => 'int',
'default' => '10'
],
[
'name' => 'enable_comments',
'title' => '_MI_PUBLISHER_ENABLE_COMMENTS',
'description' => '_MI_PUBLISHER_ENABLE_COMMENTS_DESC',
'formtype' => 'yesno',
'valuetype' => 'int',
'default' => '1'
]
]
];
function xoops_module_install_publisher($module)
{
// Installation logic
return true;
}
function xoops_module_update_publisher($module)
{
// Update logic
return true;
}
function xoops_module_uninstall_publisher($module)
{
// Uninstallation logic
return true;
}

सर्वोत्तम प्रथाएँ

Section titled “सर्वोत्तम प्रथाएँ”
  1. अपनी कक्षाओं को नेमस्पेस करें - टकराव से बचने के लिए मॉड्यूल-विशिष्ट नेमस्पेस का उपयोग करें

  2. हैंडलर का उपयोग करें - डेटाबेस संचालन के लिए हमेशा हैंडलर क्लास का उपयोग करें

  3. सामग्री का अंतर्राष्ट्रीयकरण - सभी उपयोगकर्ता-सामना वाली स्ट्रिंग के लिए भाषा स्थिरांक का उपयोग करें

  4. इंस्टॉलेशन स्क्रिप्ट बनाएं - डेटाबेस तालिकाओं के लिए SQL स्कीमा प्रदान करें

  5. दस्तावेज़ हुक - स्पष्ट रूप से दस्तावेज़ करें कि आपका मॉड्यूल क्या हुक प्रदान करता है

  6. अपने मॉड्यूल का संस्करण बनाएं - रिलीज के साथ संस्करण संख्याएं बढ़ाएं

  7. इंस्टॉलेशन का परीक्षण करें - इंस्टॉल/अनइंस्टॉल प्रक्रियाओं का पूरी तरह से परीक्षण करें

  8. अनुमतियाँ संभालें - कार्यों की अनुमति देने से पहले उपयोगकर्ता की अनुमतियाँ जांचें

संपूर्ण मॉड्यूल उदाहरण

Section titled “संपूर्ण मॉड्यूल उदाहरण”
<?php
/**
* Custom Article Module Main Page
*/
include __DIR__ . '/include/common.inc.php';
// Get module instance
$module = xoops_getModuleByDirname('mymodule');
// Check if module is active
if (!$module) {
die('Module not found');
}
// Get module configuration
$itemsPerPage = $module->getConfig('items_per_page');
// Get item handler
$itemHandler = xoops_getModuleHandler('item', 'mymodule');
// Fetch items with pagination
$criteria = new CriteriaCompo();
$criteria->add(new Criteria('status', 1));
$items = $itemHandler->getObjects($criteria, $itemsPerPage);
// Prepare template
$xoopsTpl->assign('items', $items);
$xoopsTpl->assign('module_name', $module->getName());
$xoopsTpl->display($module->getPath() . '/templates/user/index.tpl');

संबंधित दस्तावेज़ीकरण

Section titled “संबंधित दस्तावेज़ीकरण”
  • ../कर्नेल/कर्नेल-क्लासेस - कर्नेल आरंभीकरण और मुख्य सेवाएँ
  • ../टेम्पलेट/टेम्पलेट-सिस्टम - मॉड्यूल टेम्पलेट और थीम एकीकरण
  • ../डेटाबेस/QueryBuilder - डेटाबेस क्वेरी बिल्डिंग
  • ../Core/XoopsObject - बेस ऑब्जेक्ट क्लास

यह भी देखें: XOOPS मॉड्यूल डेवलपमेंट गाइड