- 内置PHP类扩展方式:
- 脚本目录:
source/class/block/[模块大分类目录] ,此目录需要自行创建
- 必需的脚本:
1. source/class/block/[模块大分类目录]/blockclass.php, 此文件为该目录中必需存在的文件,其内容为:
<?php $blockclass = array( \'name\' => \'模块大分类名\', //为此目录定义一个名字 ); ?>
2. source/class/block/[模块大分类目录]/block_name.php 注意:脚本文件名必需以
block_
开头,且类名必需和文件名一样。
- 语言包位置(非必需):
source/language/block/lang_
name
.php
source/class/block/[模块大分类目录]/block_name.php内容示例:
<?php
class block_name {
/** * 必须! * 返回本数据调用类的显示名称(显示在创建模块时选择“模块数据”的下拉列表里) * @return <type> */ function name() { return \'示例数据类\'; }
/** * 必须! * 返回一个数组: 第一个值为本数据类所在的模块分类;第二个值为模块分类显示的名称(显示在 DIY 模块面板) * @return <type> */ function blockclass() { return array(\'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 <type> */ function fields() { return array( \'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 <type> */ function getsetting() { return array( \'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 <type> $style 模块样式(见 common_block_style 表)。 可以根据模块样式中用到的字段来选择性的获取/不获取某些数据 * @param <type> $parameter 用户对 getsetting() 给出的表单提交后的内容。 * @return <type> */ function getdata($style, $parameter) {
// 返回summary return array(\'html\' => \'<p>这是一个演示模块数据类</p>\', \'data\' => null);
// 返回数据 // 需要注意: 除 id,idtype, title, url, pic, picflag, summary 几个字段外,其它字段需要放到 fields 数组里。 可以参考系统内置模块类 source/class/block/block_thread.php return array(\'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 规范请参考下面的详细说明。
|
- 广告类
脚本位置:source/class/adv/adv_
name
.php 语言包位置:source/language/adv/lang_
name
.php
<?php
class adv_name {
var $version = \'1.0\';//脚本版本号 var $name = \'name\';//广告类型名称 (可填写语言包项目) var $description = \'desc\';//广告类型说明 (可填写语言包项目) var $copyright = \'Comsenz Inc.\';//版权 (可填写语言包项目) var $targets = array(\'portal\', \'home\', \'member\', \'forum\', \'group\', \'userapp\', \'plugin\', \'custom\');//广告类型适用的投放范围 var $imagesizes = array(\'120x60\', \'120x240\');//图片广告推荐大小
function getsetting() {//返回设置项目 $settings = array( \'text\' => array( \'title\' => \'text_title\',//设置项目名称 (可填写语言项目) \'type\' => \'mradio\',//项目类型 \'value\' => array(),//项目选项 \'default\' => 0,//项目默认值 ) ); return $settings; }
function setsetting(&$advnew, &$parameters) {//保存设置项目 }
function evalcode() {//广告显示时的运行代码 return array( //检测广告是否投放时的代码 \'check\' => \' if(condition) { $checked = false; }\', //广告显示时的代码 (随机调用投放的广告) \'create\' => \'$adcode = $codes[$adids[array_rand($adids)]];\', ); } }
?>
- 道具类
脚本位置:source/class/magic/magic_
name
.php 语言包位置:source/language/magic/lang_
name
.php
<?php
class magic_name {
var $version = \'1.0\';//脚本版本号 var $name = \'name\';//道具名称 (可填写语言包项目) var $description = \'desc\';//道具说明 (可填写语言包项目) var $price = \'10\';//道具默认价格 var $weight = \'10\';//道具默认重量 var $copyright = \'Comsenz Inc.\';//版权 (可填写语言包项目)
function getsetting() {//返回设置项目 $settings = array( \'text\' => array( \'title\' => \'text_title\',//设置项目名称 (可填写语言项目) \'type\' => \'mradio\',//项目类型 \'value\' => array(),//项目选项 \'default\' => 0,//项目默认值 ) ); return $settings; }
function setsetting(&$advnew, &$parameters) {//保存设置项目 }
function usesubmit($magic, $parameters) {//道具使用 }
function show($magic) {//道具显示 }
}
?>
- 任务类
脚本位置:source/class/task/task_
name
.php 语言包位置:source/language/task/lang_
name
.php
<?php
class task_name {
var $version = \'1.0\';//脚本版本号 var $name = \'name\';//任务名称 (可填写语言包项目) var $description = \'desc\';//任务说明 (可填写语言包项目) var $copyright = \'Comsenz Inc.\';//版权 (可填写语言包项目) var $icon = \'\';//默认图标 var $period = \'\';//默认任务间隔周期 var $periodtype = 0;//默认任务间隔周期单位 var $conditions = array(//任务附加条件 \'text\' => array( \'title\' => \'text_title\',//设置项目名称 (可填写语言项目) \'type\' => \'mradio\',//项目类型 \'value\' => array(),//项目选项 \'default\' => 0,//项目默认值 \'sort\' => \'complete\',//条件类型 (apply:申请任务条件 complete:完成任务条件) ), );
function preprocess($task) {//申请任务成功后的附加处理 }
function csc($task = array()) {//判断任务是否完成 (返回 TRUE:成功 FALSE:失败 0:任务进行中进度未知或尚未开始 大于0的正数:任务进行中返回任务进度) }
function sufprocess($task) {//完成任务后的附加处理 }
function view($task, $taskvars) {//任务显示 }
function install() {//任务安装的附加处理 }
function uninstall() {//任务卸载的附加处理 }
function upgrade() {//任务升级的附加处理 }
}
?>
- 验证问答类
脚本位置:source/class/secqaa/secqaa_
name
.php 语言包位置:source/language/secqaa/lang_
name
.php
<?php
class secqaa_name {
var $version = \'1.0\';//脚本版本号 var $name = \'name\';//验证问答名称 (可填写语言包项目) var $description = \'desc\';//验证问答说明 (可填写语言包项目) var $copyright = \'Comsenz Inc.\';//版权 (可填写语言包项目)
function make(&$question) {//返回安全问答的答案和问题 ($question 为问题,函数返回值为答案) }
}
?>
|