DiscuzX2第三方DIY模块拓展类的开发.docx
《DiscuzX2第三方DIY模块拓展类的开发.docx》由会员分享,可在线阅读,更多相关《DiscuzX2第三方DIY模块拓展类的开发.docx(21页珍藏版)》请在冰豆网上搜索。
DiscuzX2第三方DIY模块拓展类的开发
第三方DIY模块拓展类的开发
内置PHP类扩展方式
脚本目录
source/class/block/[模块大分类目录],此目录需要自行创建
必需的脚本
∙source/class/block/[模块大分类目录]/blockclass.php,此文件为该目录中必需存在的文件,其内容为:
php
$blockclass=array(
'name'=>'模块大分类名',//为此目录定义一个名字
);
?
>
∙source/class/block/[模块大分类目录]/block_name.php
注意:
脚本文件名必需以block_开头,且类名必需和文件名一样。
语言包位置(非必需)
source/language/block/lang_name.php
内容示例
source/class/block/[模块大分类目录]/block_name.php内容示例:
php
classblock_name{
/**
*必须!
*返回本数据调用类的显示名称(显示在创建模块时选择“模块数据”的下拉列表里)
*@return
*/
functionname(){
return'示例数据类';
}
/**
*必须!
*返回一个数组:
第一个值为本数据类所在的模块分类;第二个值为模块分类显示的名称(显示在DIY模块面板)
*@return
*/
functionblockclass(){
returnarray('sample','示例分类');
}
/**
*必须!
*返回数据类中可供“模块样式”使用的字段。
*格式见示例:
*name为该字段的显示名称
*formtype决定编辑单条数据时该字段的显示方式:
类型有:
text,textarea,date,title,summary,pic;详见portalcp_block.htm模板(搜$field[formtype])
*datatype决定该字段的数据展示,类型有:
string,int,date,title,summary,pic;详见function_block.php中block_template函数
*@return
*/
functionfields(){
returnarray(
'field1'=>array('name'=>'示例字段1','formtype'=>'text','datatype'=>'string'),
'field2'=>array('name'=>'示例字段2','formtype'=>'title','datatype'=>'title'),
);
}
/**
*必须!
*返回使用本数据类调用数据时的设置项
*格式见示例:
*title为显示的名称
*type为表单类型,有:
text,password,number,textarea,radio,select,mselect,mradio,mcheckbox,calendar;详见function_block.php中block_makeform()函数
*@return
*/
functiongetsetting(){
returnarray(
'param1'=>array(
'title'=>'数据调用参数1',
'type'=>'text',
'default'=>''
),
'param2'=>array(
'title'=>'数据调用参数2',
'type'=>'mcheckbox',
'value'=>array(
array('1','选项1'),
array('2','选项2'),
),
'default'=>'1'
),
);
}
/**
*必须!
*处理设置参数,返回数据
*返回数据有两种:
*一种是返回html,放到模块summary字段,直接显示;返回格式为:
array('html'=>'返回内容','data'=>null)
*一种是返回data,通过模块样式渲染后展示,返回的数据应该包含fields()函数中指定的所有字段;返回格式为:
array('html'=>'','data'=>array(array('title'=>'value1'),array('title'=>'value2')))
*特别的:
*parameter参数包含getsetting()提交后的内容;并附加了字段:
*items,为用户指定显示的模块数据条数;
*bannedids,为用户选择屏蔽某数据时记录在模块中的该数据id。
应该在获取数据时屏蔽该数据;
*
*如果返回的数据给data,那么应该包含fields()函数指定的所有字段。
并附加以下字段:
*id标志该数据的id,如果用户屏蔽某数据时,会将该数据的id添加到parameter[bannedids]里
*idtype标志该数据的idtype
*
*@param$style模块样式(见common_block_style表)。
可以根据模块样式中用到的字段来选择性的获取/不获取某些数据
*@param$parameter用户对getsetting()给出的表单提交后的内容。
*@return
*/
functiongetdata($style,$parameter){
//返回summary
returnarray('html'=>'
这是一个演示模块数据类
','data'=>null);
//返回数据
//需要注意:
除id,idtype,title,url,pic,picflag,summary几个字段外,其它字段需要放到fields数组里。
可以参考系统内置模块类source/class/block/block_thread.php
returnarray('html'=>'','data'=>array(
array(
'id'=>'1',
'idtype'=>'sampleid',
'title'=>'title1',
'url'=>'#',
'pic'=>'nophoto.gif',
'picflag'=>'1',
'summary'=>'',
'fields'=>array(
'field1'=>'value1'
)
)
));
}
}
?
>
第三方C/S扩展方式
此扩展方式需要第三方提供一个服务端应用程序接口,为使用该服务的客户端提供数据。
服务端提供的数据必需为XML格式的数据,具体的XML规范请参考下面的详细说明。
XML规范
配置规范
∙请示方式
客户端以GET的方式向服务器端提交以下参数请求此XML文档
op=getconfig,此参数表示客户端要请求配置文档;
clientid,客户端ID(服务器分配给客户端的ID);
charset,客户端的数据编码
sign=签名,如果服务器端没有设置通信密钥则此值为空,如果服务器端不使用签名则此值为通信密钥;签名机制
∙规范内容包括Title和Data部分
oTitle部分
此部分是固定的代码且区分大小写
[CDATA[Discuz!
Block]]>
∙
oData部分
主要包括5个属性
version版本号(必需)
name模块名(必需)
fields可显示的字段,在模块样式中使用(必需)包括以下内容
name为该字段的显示名称
formtype决定编辑单条数据时该字段的显示方式:
类型有:
text,textarea,date,title,summary,pic;
datatype决定该字段的数据展示,类型有:
string,int,date,title,summary,pic;
getsetting可设置和接收的参数(必需),包括以下内容
title为显示的名称
type为表单类型,有:
text,password,number,textarea,radio,select,mselect,mradio,mcheckbox,calendar;
style内置的显示样式(非必需)
∙配置规范XML文档示例如下
xmlversion="1.0"encoding="ISO-8859-1"?
>
[CDATA[Discuz!
Block]]>
[CDATA[X1.5]]>
[CDATA[C/S数据类]]>
[CDATA[链接地址]]>
[CDATA[text]]>
[CDATA[string]]>
[CDATA[标题]]>
[CDATA[title]]>
[CDATA[title]]>
[CDATA[图片]]>
[CDATA[pic]]>
[CDATA[pic]]>
[CDATA[简介]]>
[CDATA[summary]]>
[CDATA[summary]]>
[CDATA[作者]]>
[CDATA[text]]>
[CDATA[text]]>
[CDATA[作者ID]]>
[CDATA[text]]>
[CDATA[int]]>
[CDATA[字段1]]>
[CDATA[text]]>
[CDATA[string]]>
[CDATA[字段2]]>
[CDATA[text]]>
[CDATA[string]]>
[CDATA[数据调用参数1]]>
[CDATA[text]]>
[CDATA[]]>
[CDATA[数据调用参数2]]>
[CDATA[mcheckbox]]>
[CDATA[1]]>
[CDATA[选项1]]>
[CDATA[2]]>
[CDATA[选项2]]>
[CDATA[1]]>
[CDATA[标题长度]]>
[CDATA[text]]>
[CDATA[40]]>
[CDATA[简介长度]]>
[CDATA[text]]>
[CDATA[80]]>
[CDATA[起始数据行数]]>
[CDATA[text]]>
[CDATA[0]]>
[CDATA[模板名称]]>
[CDATA[[loop]uid={authorid}">{author}
{title} [/loop]