xoops模组开发手册(繁体中文转简体中文)-1/11 |
||||
---|---|---|---|---|
初级会员
注册日期:
2005/3/31 15:21 所属群组:
注册会员 等级: 3; EXP: 93
HP: 0 / 73 MP: 9 / 1209 |
最近在http://xoops.tnc.edu.tw/modules/tadbook2/view.php?book_sn=1&bdsn=1 看到一份关于模组开发的文本,但是本人不太喜欢看繁体,所以将其转为简体,并且将其中部分名词术语转为大陆常用术语,权当为xoops出点力。
1 前言 [color=000000]觉得XOOPS2的模块不够多吗?没关系!咱们就自己动手来写。不过在进入本单元之前,您可能得有个心理准备,因为XOOPS2的程序模块大概是所有 CMS中最麻烦的了!并不是程序难写,而是您必须符合XOOPS2繁琐的模块架构,此模块才运行得起来。不过,也别太担心,本文会一步一步的带您探索 XOOPS2的模块架构,那您轻松的搞定XOOPS2模块
2005/4/9 10:12
|
|||
|
xoops模组开发手册(繁体中文转简体中文)-2/11 |
||||
---|---|---|---|---|
初级会员
注册日期:
2005/3/31 15:21 所属群组:
注册会员 等级: 3; EXP: 93
HP: 0 / 73 MP: 9 / 1209 |
2 在区块中写程序
假设您实在厌烦庞杂的XOOPS2的模块架构,但您会写些PHP程序,那么,这个方法相当适合您,您只要在区块中写下您的PHP程序即可,而无须理会那些模块规则,下面我们用一个简单的例子来说明。 请进入管理区,然后到区块显示安排中,在下方有添加区块的界面,您只要在「内容」的地方填入PHP程序代码即可。记得!不需要输入「<?php」或「? >」这类的符号,换言之,整个内容都必须是PHP程序代码,若需要显示出文字或HTML语法,只要用 echo 即可。例如: 图 1. 在区块中写PHP程序 最下方的「内容形式」记得选择「PHP语言」,并设定好区块的标题以及要出现在什么地方,其结果看起来就会像图 2所示,完全呈现出我们在区块中所写的PHP程序之结果。 图 2. 中间区块就是PHP程序的执行结果 当然,这个范例是相当基础的,只是单纯的去抓日期以及环境变量,然后将变量值打印出来而已。此范例的重点并不在于PHP要写些什么,而是您只要知道在区块 中也是可以执行PHP程序即可,您甚至可以在区块中连结数据库,然后把撷取出的资料整理之后显示出亦可,如何运用就看您啰!
2005/4/9 10:27
|
|||
|
xoops模组开发手册(繁体中文转简体中文)-3/11 |
||||
---|---|---|---|---|
初级会员
注册日期:
2005/3/31 15:21 所属群组:
注册会员 等级: 3; EXP: 93
HP: 0 / 73 MP: 9 / 1209 |
2-1 在区块中连接数据库
如果要使用XOOPS的数据库对象,您可以在区块中这样写: 引用:
重点在这一行: 引用:
建立一个XOOPS的数据库对象。 引用:
这一句是 SQL 语法,白话文就是:请从 users 这个表找出所有资料数。user 是会员资料表,所有资料数就是会员人数,换言之,这是一找出所有会员数的写法。 $xoopsDB->prefix("users") 就是要去呼叫 users 这个资料表,由于 XOOPS 的资料表有所谓的前导符,例如 users 在数据库实际为 xoops_user(xoops_即为前导符),用 $xoopsDB->prefix("资料表") 就会自动帮您加入前导符。 引用:
执行 SQL 语法 引用:
利用 $xoopsDB->fetchRow 将执行结果读出来,然后利用 list() 将读出的数组放到变量中,由于我们只请求一项数据(count(*)),所以list 只放到一个变量中,如果请求三项数据,那么应为 list($var1,$var2,$var3)。 引用:
打印出区快要显示的结果。
2005/4/9 10:39
|
|||
|
xoops模组开发手册(繁体中文转简体中文)-4/11 |
||||
---|---|---|---|---|
初级会员
注册日期:
2005/3/31 15:21 所属群组:
注册会员 等级: 3; EXP: 93
HP: 0 / 73 MP: 9 / 1209 |
3 XOOPS2模块的灵魂xoops_version.php
以上是一个在 XOOPS2 中使用 PHP 最简单的方法,但接着,我们要开始进入棘手的部分了!本文以建立一个简单的通讯簿为范例,示范整个模块开发的流程,只要流程熟悉了,那么,开发模块就简单了! 首先,您得知道的是,XOOPS2 的所有模块都放在「XOOPS安装目录\modules」底下,换言之, modules 目录下的每一个目录都是一个模块。因此,我们要建立一个新模块,第一步就是先在 modules 目录下建立一个新目录。本例在 modules 目录下建立一个名为 my_phonebook 的目录,文后一律称之为「模块目录」。 XOOPS2 的模块可大可小,但有几个目录及文件是一定要有的,我们先来认识一下最重要的一个文件就是 xoops_version.php。这一个文件是模块的设定文件,掌管着模块的大小信息,同时也是和 XOOPS2 系统沟通的重要管道,小从模块名称设定,大到该模块是否需要选单、区块、样版、管理接口...等,通通要在里头设定。因此,本文从头到尾这个档您会常常看 到。 每个模块一定都会有一个 xoops_version.php,而且内容都很长!看起来似乎相当复杂,其实,若是一步一步来看,您会发现:原来并不复杂嘛!OK!您可以在您的xoops_version.php 档中输入以下内容: 引用:
内容中,最重要的是 $modversion['dirname'] 必须填入该模块的目录的名称,填错了模块可是不能动的!其余的部分,只要是等号(=)后面的,您都可以自行修改。至于图档,没放也无所谓,不过,建议您还 是设计个图档,并且依据您的设定值,建立相关的目录及文件,以上面的设定为例,我们还必须在您的模块目录下建立一个 images 的目录,并且放置一个名为 logo.png 的图文件,以作为模块图标。 输入完之后,进入管理接口的模块管理中,您就会发现,可以安装的模块中,已经多了一个叫做「我的电话簿」的模块,点选安装也真的可以安装喔!不过,目前空空如也,所以,并没有安装的必要。 图 1. 已经出现在模块管理中啰!
2005/4/9 10:51
|
|||
|
Re: xoops模组开发手册(繁体中文转简体中文)-4/11 |
||||
---|---|---|---|---|
初级会员
注册日期:
2005/3/31 15:21 所属群组:
注册会员 等级: 3; EXP: 93
HP: 0 / 73 MP: 9 / 1209 |
4 资料表设定
大部分的模块都会用到数据库的资料表,若是您的模块不需要,那么这部分可以略过。如果需要资料表,那么您必须在 xoops_version.php 加入资料表的相关设定: 引用:
$modversion['sqlfile']['mysql']是设定安装模块时,要汇入数据库的资料表结构文件的位置。mysql.sql 的内容可以自行撰写,档名也可以自己取,文件中一次可以放好几个资料表,您也可以利用 phpMyAdmin 去新增资料表,然后利用输出功能把资料表的架构输出存盘,这样是比较方便的作法。我们在模块目录下建立一个 sql 目录,其中放置 mysql.sql,其内容为: 引用:
另外,$modversion['tables'][n]则是设定 mysql.sql 中的资料表名称,此名称必须和 mysql.sql 中的资料表名称相符。若是同时有数个资料表,那么 n 可以从 0 开始依序递增即可。
2005/4/9 11:00
|
|||
|
xoops模组开发手册(繁体中文转简体中文)-5/11 |
||||
---|---|---|---|---|
初级会员
注册日期:
2005/3/31 15:21 所属群组:
注册会员 等级: 3; EXP: 93
HP: 0 / 73 MP: 9 / 1209 |
5 模块管理接口设定 您的模块需要管理接口吗?如果需要,那么您必须在 xoops_version.php 加入: 引用:
若您想替该模块加个管理接口,$modversion['hasAdmin'] 必须设定成 1,若不需要,设成 0 即可。 $modversion['adminindex']是设定主要管理程序的位置,通常会放在 admin 目录中,因此必须建立一个 admin 目录,并产生一个 index.php 文件以作为管理程序的主文件。 和index.php息息相关的是 $modversion['adminmenu'] 设定,它是设定当鼠标移到模块图标上时,所出现的浮动选单的内容文件,通常命名为 menu.php。当使用者点选 menu.php 中的选项时,系统会将执行命令传给 menu.php 中所设定的 $adminmenu[n]['link'] 位置,而此位置通常就是 $modversion['adminmenu']的所在位置。 menu.php 的内容两两为一组,包含指令名称 ($adminmenu[n]['title']) 以及指令的执行连结 ($adminmenu[n]['link']),原则上可以无限多组,例如选单中希望有 10 个执行指令,那么,n 就可以从 1 编到 10。我们只要在选单中放两个功能,所以只有两组设定,menu.php 内容看起来就像这样: 引用:
|
|||
|
xoops模组开发手册(繁体中文转简体中文)-6/11 |
||||
---|---|---|---|---|
初级会员
注册日期:
2005/3/31 15:21 所属群组:
注册会员 等级: 3; EXP: 93
HP: 0 / 73 MP: 9 / 1209 |
6 管理接口的index.php
从选单内容来看可以知道,我们设定了两个功能,分别为新增和删除,这两个功能必须靠 index.php 来执行,因此,我们在 index.php 中就必须做出这两个功能出来。本例的 index.php 内容如下: 引用:
看起来似乎很常很复杂,其实,撇开PHP的部分不说,仅说 XOOPS2 的模块规则,那到还蛮简单的。 第一行的「include '../../../include/cp_header.php'; 」是一定要加的,该程序算是一个中介程序,让您的模块与系统接轨用的,所以相当重要。此外,最后的「xoops_cp_header();」是管理页的页 首檔,而「xoops_cp_footer();」是管理页的页尾档,这两个文件可以让您的模块看起来像是嵌在 XOOPS2 的管理接口中一样。其余的部分您可以自行发挥! 以本例而言,index.php 所负责的就是新增和删除数据,因此,里头包含三个主要函数,分别为用来进行新增、删除以及列表。若您的函数中会用到数据库,那么记得宣告「global $xoopsDB;」,以便让函数内部也可以取得数据库设定。 另外,当您要呼叫资料表时,请用「$xoopsDB->prefix("资料表名称")」的方式来呼叫,因为 XOOPS2 会自动替每一个资料表加上前导符,原先您的表叫做「phone」的话,安装到 XOOPS2 中,可能会变成「xoops_phone」,若直接呼教会很容易出错,因为前导符是可以随使用者高兴而随便订的!因此,用「$xoopsDB-> prefix("资料表名称")」这种方式,他会自动帮您判断前导符为何,以确保能够正确的找到资料表。 在送出 SQL 请求的时候,您可以用 XOOPS2 内建的数据库对象来操作,例如:「$xoopsDB->query(SQL语法)」,若是您的 SQL 语法是要删除或修改,请用「$xoopsDB->queryF(SQL语法)」来进行。 若是语法执行失败,XOOPS2 通常会出现一个警告画面,然后转到某一页去,这样的功能用「redirect_header("欲导向的位置","显示的时间","画面讯息"); 」即可做到。 其余的部分均是 PHP 的程序代码,只要稍具 PHP 程序撰写能力,应该相当容易懂。 .
2005/4/9 11:12
|
|||
|
xoops模组开发手册(繁体中文转简体中文)-7/11 |
||||
---|---|---|---|---|
初级会员
注册日期:
2005/3/31 15:21 所属群组:
注册会员 等级: 3; EXP: 93
HP: 0 / 73 MP: 9 / 1209 |
7 模块主程序
管理接口做好了之后,现在要来做的就是给使用者看的画面,亦即模块的主程序。模块的主程序请命名为 index.php,并放置在模块目录的根目录下。 以本例而言,我们从数据库中读取所有的电话簿资料,然后显示出给使用者观看,所以整个程序很简单,只要把资料给抓出来并显示出即可。 引用:
「include '../../mainfile.php'; 」是引入 XOOPS2 主要设定档,非常重要,一定要引入的,比较大型的模块可能会将之放在 header.php 中,供其它程序引入。 「include XOOPS_ROOT_PATH.'/header.php';」是 XOOPS2 的网页页首档,「include XOOPS_ROOT_PATH.'/footer.php'; 」则是 XOOPS2 的网页页尾档,利用这两个档案将您的程序包起来,可以让您的模块看起来像是嵌在 XOOPS2 里面一样。 另外,为了让使用者能够在选单上点选该模块功能,我们必须在 xoops_version.php 加入: 引用:
这样最基本的模块就大功告成了! .
2005/4/9 11:16
|
|||
|
xoops模组开发手册(繁体中文转简体中文)-8/11 |
||||
---|---|---|---|---|
初级会员
注册日期:
2005/3/31 15:21 所属群组:
注册会员 等级: 3; EXP: 93
HP: 0 / 73 MP: 9 / 1209 |
8 安装模块
做到这里,最简单的模块已经出炉了!您可以将模块上传,并开始进入管理接口中的模块管理来进行安装! 图 2. 模块安装画面 安装后,您就会看到您的管理区多了一个模块的管理图标,而且,选单中也会有内容喔!点进去就可以进到管理主程序去新增内容啰! 图 1. 管理画面 新增内容后,回到首页就可以看到选单上也出现了模块名称,点进去便可以看到主要画面了! 图 3. 使用者看的主画面 以上是最阳春,但算是小而美的模块。不过,此模块的版面目前得靠修改程序才能作改变,如此,太埋没 XOOPS2 强大的样版功能了,所以接着我们就来看看如何将程序与版面分开来!
2005/4/9 11:22
|
|||
|
xoops模组开发手册(繁体中文转简体中文)-9/11 |
||||
---|---|---|---|---|
初级会员
注册日期:
2005/3/31 15:21 所属群组:
注册会员 等级: 3; EXP: 93
HP: 0 / 73 MP: 9 / 1209 |
9 模块样版设定
每一个模块都可以有许多支程序,而每一支程序都可以搭配一个样版档,样版档可以让使用者在不动到主程序的情形下,更改网页呈现的外观。样版档通常是 HTML 档,可有可无,端视您的开发需求。如果需要,那么您必须在 xoops_version.php 加入: 引用:
这也是两个为一组: $modversion['templates'][n]['file'] 是设定样版文件名称; $modversion['templates'][n]['description'] 则是设定该样版的描述。 要特别注意的是,模块的样版文件一律放在 templates 目录下,因此,您必须先在您的模块目录下建立一个名为 templates 的目录,然后依照您的设定,放置相关的档案,如:phone.html。 样版文件一定要和某一个程序配合才有意义,亦即程序来负责运算及输出内容,样版档则专心负责版面呈现。以本例而言,我们希望我们的模块主程序 index.php 来搭配 phone.html 样版档,故我们得先改造一下 index.php 的内容,好让程序得以输出样版变量: 引用:
其中「$xoopsOption['template_main'] = 'phone.html';」就是告知该程序引用样版文件的动作,此样版档需和 xoops_version.php 中的样版档设定一致。 「$xoopsTpl->assign('lang_title', "我的电话簿"); 」和「$xoopsTpl->assign('show_tel', $alldata); 」都是产生样版变量的动作,届时会有 lang_title 及 show_tel 两个样版变量传给样版文件。其用法很简单:「$xoopsTpl->assign('变量名称', "变量值");」即可。 phone.html 接收两个变量,分别为「$lang_title」及「$show_tel」,因此只要利用 <{}> 符号将该变量包起来,然后就任您怎么编排了!读取后,显示画面就会如您编排的位置以及效果来呈现,其内容看起来如下: 引用:
由于我们修改了 xoops_version.php 设定,因此,您必须到管理接口中的管理模块来把该模块「更新」,如此,XOOPS2 才会得到新的设定值,您也才能看到正确的效果喔! 图 1. 程序已经套用样版档了 有了样版档以后,日后若想改变模块的呈现外观,您就可以不用去动到程序本身了!您只要修改样版档即可,很方便吧!至于以上介绍的样版使用方法,其实只是九牛之一毛,XOOPS2 使用 smarty 样版引擎,其功能非常多,有兴趣的读者可以至 http://smarty.php.net 去瞧瞧喔! .
2005/4/9 11:30
|
|||
|