Xoops模块开发之文件结构

来自站长百科
跳转至: 导航、​ 搜索

导航: 上一页 | 首页 | DedeCMS | 帝国CMS | Drupal | PHPCMS | PHP168 | Joomla | PowerEasy | SupeSite

下面是XOOPS中的模块的一个基本结构。

注:

  • 不是每个模块都需要下面所有列出的目录或文件。
  • 以文档《xoops-module-skeleton.doc》为准

/admin目录

  • index.php
  • 模块管理内容的入口
  • menu.php
  • 这个文件包括用来为模块生成管理菜单的变量。

/language目录

这个目录至少应该包含定义语言常量的文件'english'目录。

该目录下的文件

  • english/main.php
在模块主要内容中定义语言常量。
  • english/admin.php
在模块管理部分定义语言常量。如果管理页面中没有多个语言常量,这个文件将和english/main.php合并。
  • english/modinfo.php
在xoops_version.php中定义语言常量。
  • english/blocks.php
在blocks/blocks.php中定义语言常量。

/blocks目录

这个目录包括定义块显示或编辑函数的文件

目录下的文件

  • blocks.php

/sql目录

安装模块的SQL文件。

目录下的文件

  • mysql.sql
  • mysql 转储文件
  • postgresql.sql
  • postgreSQL转储文件

/images目录

/templates目录

XOOPS的模块HTML模板文件,被xoops_version.php和$modversion数组调用。

目录下的文件

在模块中使用的所有模板。

/templates/blocks目录

XOOPS的模块模板文件,被xoops_version.php和$modversion数组调用。使用smarty区块变量显示模块数据信息。

目录下的文件

所有在模块区块中用到的模板。用smarty区块变量来显示模块区块信息。


xoops_version.php 文件[ ]

主要信息

<?php
$modversion['name'] = _MI_FOO_NAME; 
//模块名称 
$modversion['version'] = 1.00; 
//模块版本 
$modversion['description'] = _MI_FOO_DESC; 
//模块的描述 
$modversion['author'] = "Module Developer<br /><moduledeveloper@xoops.org>"; 
//模块的作者
$modversion['credits'] = "XOOPS Development Team";
//对模块有贡献的相关人员或组织
$modversion['help'] = "foo_help.html"; 
//模块的帮助文件
$modversion['license'] = "GPL see LICENSE"; 
//模块的许可证
$modversion['official'] = 1; 
//是官方模块(通常是0) 
$modversion['image'] = "images/ logo.png"; 
//模块面板中的图象和左边的导航菜单(如果有的话)
$modversion['dirname'] = "foo"; 
//模块的目录
?>
<pre>

'''SQL'''
<pre>
<?php
$modversion['sqlfile']['mysql'] = "sql/mysql.sql"; 
//SQL 声明建立模块需要的数据库表
$modversion['tables'][0] = "foo_table "; 
//sql 转储创建的表的目录; 用于卸载
//从0开始,下一个表的下标依次增加(例如: ['tables'][1],['tables'][2],等等)
?>

Admin

<?php
$modversion['hasAdmin'] = 1; 
//显示管理导航条
$modversion['adminindex'] = "admin/index.php"; 
//管理索引页
$modversion['adminmenu'] = "admin/menu.php"; 
//管理菜单的定义
?>

菜单

<?php>
$modversion['hasMain'] = 1; 
//插入主菜单 (没有设为0) 
$modversion['sub'][1]['name'] = _MI_FOO_SMNAME1; 
//主菜单中子菜单的名称 (单击模块时) 
$modversion['sub'][1]['url'] = "submit.php"; 
//插入模块目录的文件
?>

模板

<?php>
$modversion['templates'][1]['file'] = 'newbb_index.html'; 
//所有模板文件 (子目录为'subdir/newbb_sub.html') 
//从1开始,下一个文件的下标依次增加(例如: ['templates'][2],['templates'][3],等等) 
//将在数据库中被保存
$modversion['templates'][1]['description'] = ''; 
//模板文件的一个简短的描述 
//从1开始,下一个描述的下标依次增加(例如: ['description'][2],['description'][3],等等) 
//将在数据库中被保存
//注意: 这个数据项从1开始,而不是0。 
?>

区块

一个'file'可以有许多names, descriptions, functions, options, edit_func, and templates --- (只要创建另一个组, 也就是说用数组来区别)

$modversion['blocks'][1]['file'] = "foo_new.php"; 
$modversion['blocks'][1]['name'] = _MI_FOO_BNAME1; 
$modversion['blocks'][1]['description'] = "Shows recent items "; 
$modversion['blocks'][1]['show_func'] = "b_foo_new_show"; 
$modversion['blocks'][1]['options'] = "10|1|time"; 
$modversion['blocks'][1]['edit_func'] = "b_foo_new_edit"; 
$modversion['blocks'][1]['template'] = 'foo_block_new.html';

搜索

$modversion['hasSearch'] = 1; 
$modversion['search']['file'] = "include/search.inc.php"; 
$modversion['search']['func'] = "foo_search";

通知

$modversion['hasNotification'] = 1; 
$modversion['notification']['lookup_file'] = 'include/notification.inc.php'; 
$modversion['notification']['lookup_func'] = 'foo_notify_iteminfo';

$modversion['notification']['category'][1]['name'] = 'thread'; 
$modversion['notification']['category'][1]['title'] = _MI_FOO_THREAD_NOTIFY; 
$modversion['notification']['category'][1]['description'] = _MI_FOO_THREAD_NOTIFYDSC; 
$modversion['notification']['category'][1]['subscribe_from'] = 'viewitem.php'; 
$modversion['notification']['category'][1]['item_name'] = 'item_id'; 
$modversion['notification']['category'][1]['allow_bookmark'] = 1;

$modversion['notification']['event'][1]['name'] = 'new_item'; 
$modversion['notification']['event'][1]['category'] = 'thread'; 
$modversion['notification']['event'][1]['title'] = _MI_FOO_THREAD_NEWITEM_NOTIFY; 
$modversion['notification']['event'][1]['caption'] = _MI_FOO_THREAD_NEWPOST_NOTIFYCAP; 
$modversion['notification']['event'][1]['description'] = _MI_FOO_THREAD_NEWPOST_NOTIFYDSC; 
$modversion['notification']['event'][1]['mail_template'] = 'thread_newitem_notify'; 
$modversion['notification']['event'][1]['mail_subject'] = _MI_FOO_THREAD_NEWITEM_NOTIFYSBJ;

公共语言Strings (_MD_,_MB_,_AM_,_MI_)[ ]

任何以_MD_/_MB_/_AM_/_MI_ (模块命名约定)开头的是define()声明位于/language/english/*.php。

什么是 _MD_?

_MD_是一个在主模块定义中使用的字符串。

模块的定义文件通常象是- language/english/main.php。

什么是 _MB_?

_MB_是一个在模块区块中使用的字符串。

模块区块文件通常象是- language/english/ blocks.php。

什么是 _AM_?

_AM_是一个在模块管理中使用的字符串。

模块管理文件通常象是- language/english/admin.php。

什么是 _MI_?

_MI_是一个在模块安装和配置中使用的字符串。

模块安装和配置文件通常象是- language/english/modinfo.php。