跳到內容

XoopsModule API 參考

XOOPS 模組系統的完整 API 文件。


graph TB
subgraph "Module Loading"
A[Request] --> B[Router]
B --> C{Module Exists?}
C -->|Yes| D[Load xoops_version.php]
C -->|No| E[404 Error]
D --> F[Initialize Module]
F --> G[Check Permissions]
G --> H[Execute Controller]
end
subgraph "Module Components"
I[XoopsModule] --> J[Config]
I --> K[Templates]
I --> L[Blocks]
I --> M[Handlers]
I --> N[Preloads]
end
H --> I

class XoopsModule extends XoopsObject
{
// Properties
public $modinfo; // Module info array
public $adminmenu; // Admin menu items
// Methods
public function __construct();
public function loadInfo(string $dirname, bool $verbose = true): bool;
public function getInfo(string $name = null): mixed;
public function setInfo(string $name, mixed $value): bool;
public function mainLink(): string;
public function subLink(): string;
public function loadAdminMenu(): void;
public function getAdminMenu(): array;
public function loadConfig(): bool;
public function getConfig(string $name = null): mixed;
}
屬性型別描述
midint模組 ID
namestring顯示名稱
versionstring版本號
dirnamestring目錄名稱
isactiveint活動狀態 (0/1)
hasmainint有主要區域
hasadminint有管理區域
hassearchint有搜尋功能
hasconfigint有設定
hascommentsint有評論
hasnotificationint有通知
// Get module instance
$module = $GLOBALS['xoopsModule'];
// Or load by dirname
$moduleHandler = xoops_getHandler('module');
$module = $moduleHandler->getByDirname('mymodule');
// Get module info
$version = $module->getVar('version');
$name = $module->getVar('name');
$dirname = $module->getVar('dirname');
// Get module config
$config = $module->getConfig();
$specificConfig = $module->getConfig('items_per_page');
// Check if module has feature
$hasAdmin = $module->getVar('hasadmin');
$hasSearch = $module->getVar('hassearch');
// Get module path
$modulePath = XOOPS_ROOT_PATH . '/modules/' . $module->getVar('dirname');
$moduleUrl = XOOPS_URL . '/modules/' . $module->getVar('dirname');

class XoopsModuleHandler extends XoopsPersistableObjectHandler
{
public function create(bool $isNew = true): XoopsModule;
public function get(int $id): ?XoopsModule;
public function getByDirname(string $dirname): ?XoopsModule;
public function insert(XoopsObject $module, bool $force = false): bool;
public function delete(XoopsObject $module, bool $force = false): bool;
public function getList(?CriteriaElement $criteria = null): array;
public function getObjects(?CriteriaElement $criteria = null): array;
}
// Get handler
$moduleHandler = xoops_getHandler('module');
// Get all active modules
$criteria = new Criteria('isactive', 1);
$activeModules = $moduleHandler->getObjects($criteria);
// Get module by dirname
$publisherModule = $moduleHandler->getByDirname('publisher');
// Get modules with admin
$criteria = new CriteriaCompo();
$criteria->add(new Criteria('isactive', 1));
$criteria->add(new Criteria('hasadmin', 1));
$adminModules = $moduleHandler->getObjects($criteria);
// Check if module is installed
$module = $moduleHandler->getByDirname('mymodule');
if ($module && $module->getVar('isactive')) {
// Module is installed and active
}

stateDiagram-v2
[*] --> Uninstalled
Uninstalled --> Installing: Install Module
Installing --> Installed: Success
Installing --> Uninstalled: Failure
Installed --> Active: Activate
Installed --> Uninstalling: Uninstall
Active --> Inactive: Deactivate
Active --> Updating: Update Available
Inactive --> Active: Activate
Inactive --> Uninstalling: Uninstall
Updating --> Active: Update Success
Updating --> Active: Update Failure
Uninstalling --> Uninstalled: Success
Uninstalling --> Installed: Failure
Uninstalled --> [*]

<?php
// Module metadata
$modversion['name'] = _MI_MYMODULE_NAME;
$modversion['version'] = '1.0.0';
$modversion['description'] = _MI_MYMODULE_DESC;
$modversion['author'] = 'Your Name';
$modversion['credits'] = 'XOOPS Community';
$modversion['license'] = 'GPL 2.0+';
$modversion['license_url'] = 'https://www.gnu.org/licenses/gpl-2.0.html';
$modversion['image'] = 'assets/images/logo.png';
$modversion['dirname'] = basename(__DIR__);
// Requirements
$modversion['min_php'] = '7.4';
$modversion['min_xoops'] = '2.5.10';

另請參閱:XOOPS 原始程式碼