Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4262192
  • 博文数量: 601
  • 博客积分: 15410
  • 博客等级: 上将
  • 技术积分: 6884
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-16 08:11
个人简介

独学而无友,则孤陋而寡闻!

文章分类

全部博文(601)

文章存档

2020年(1)

2018年(4)

2017年(7)

2016年(42)

2015年(25)

2014年(15)

2013年(36)

2012年(46)

2011年(117)

2010年(148)

2009年(82)

2008年(37)

2007年(41)

分类: Python/Ruby

2011-03-16 22:18:30

  X1.5以后的版本,在写DIY模块时,不需要再修改source/include/portal文件夹中的portalclass.php,现在只需要把相应的文件放到/source/class/block/[模块类别]/block_模块名.php中即可。
  更新缓存就可以使用。

  调用的文件为source/function/function_block.php,更新缓存的函数为:function blockclass_cache() ,函数先遍历source/class/block文件夹,然后再遍历每一个子文件夹,找出所有的^block[\w]+\.php$文件,如果存在模块名.class,则自动进行初始化,然后读取相关的参数。

  注意:如果模块文件有语法错误,则后台更新缓存一般不会显示:“全部缓存更新完毕”字样。如果没有出现“全部缓存更新完毕”,可以直接用浏览器访问source/class/block/[模块类别]/模块文件,如果有语法错误,应该可以看到。

开发手册上的说明:  
  1. <?php

  2. class block_name {

  3.     /**
  4.      * 必须!
  5.      * 返回本数据调用类的显示名称(显示在创建模块时选择“模块数据”的下拉列表里)
  6.      * @return
  7.      */
  8.     function name() {
  9.         return '示例数据类';
  10.     }

  11.     /**
  12.      * 必须!
  13.      * 返回一个数组: 第一个值为本数据类所在的模块分类;第二个值为模块分类显示的名称(显示在 DIY 模块面板)
  14.      * @return
  15.      */
  16.     function blockclass() {
  17.         return array('sample', '示例分类');
  18.     }

  19.     /**
  20.      * 必须!
  21.      * 返回数据类中可供“模块样式”使用的字段。
  22.      * 格式见示例:
  23.      * name 为该字段的显示名称
  24.      * formtype 决定编辑单条数据时该字段的显示方式: 类型有: text, textarea, date, title, summary, pic; 详见 portalcp_block.htm 模板(搜 $field[formtype] )
  25.      * datatype 决定该字段的数据展示,类型有: string, int, date, title, summary, pic; 详见 function_block.php 中 block_template 函数
  26.      * @return
  27.      */
  28.     function fields() {
  29.         return array(
  30.             'field1' => array('name' => '示例字段1', 'formtype' => 'text', 'datatype' => 'string'),
  31.             'field2' => array('name' => '示例字段2', 'formtype' => 'title', 'datatype' => 'title'),
  32.         );
  33.     }

  34.     /**
  35.      * 必须!
  36.      * 返回使用本数据类调用数据时的设置项
  37.      * 格式见示例:
  38.      * title 为显示的名称
  39.      * type 为表单类型, 有: text, password, number, textarea, radio, select, mselect, mradio, mcheckbox, calendar; 详见 function_block.php 中 block_makeform() 函数
  40.      * @return
  41.      */
  42.     function getsetting() {
  43.         return array(
  44.             'param1' => array(
  45.                 'title' => '数据调用参数1',
  46.                 'type' => 'text',
  47.                 'default' => ''
  48.             ),
  49.             'param2' => array(
  50.                 'title' => '数据调用参数2',
  51.                 'type' => 'mcheckbox',
  52.                 'value' => array(
  53.                     array('1', '选项1'),
  54.                     array('2', '选项2'),
  55.                 ),
  56.                 'default' => '1'
  57.             ),
  58.         );
  59.     }

  60.     /**
  61.      * 必须!
  62.      * 处理设置参数,返回数据
  63.      * 返回数据有两种:
  64.      * 一种是返回 html,放到模块 summary 字段,直接显示; 返回格式为: array('html'=>'返回内容', 'data'=>null)
  65.      * 一种是返回 data,通过模块样式渲染后展示,返回的数据应该包含 fields() 函数中指定的所有字段; 返回格式为: array('html'=>'', 'data'=>array(array('title'=>'value1'), array('title'=>'value2')))
  66.      * 特别的:
  67.      * parameter 参数包含 getsetting() 提交后的内容; 并附加了字段:
  68.      * items ,为用户指定显示的模块数据条数;
  69.      * bannedids ,为用户选择屏蔽某数据时记录在模块中的该数据 id。 应该在获取数据时屏蔽该数据;
  70.      *
  71.      * 如果返回的数据给 data, 那么应该包含 fields() 函数指定的所有字段。并附加以下字段:
  72.      * id 标志该数据的 id,如果用户屏蔽某数据时,会将该数据的 id 添加到 parameter[bannedids] 里
  73.      * idtype 标志该数据的 idtype
  74.      *
  75.      * @param $style 模块样式(见 common_block_style 表)。 可以根据模块样式中用到的字段来选择性的获取/不获取某些数据
  76.      * @param $parameter 用户对 getsetting() 给出的表单提交后的内容。
  77.      * @return
  78.      */
  79.     function getdata($style, $parameter) {

  80.         // 返回summary
  81.         return array('html' => '

    这是一个演示模块数据类

    '
    , 'data' => null);

  82.         // 返回数据
  83.         // 需要注意: 除 id,idtype, title, url, pic, picflag, summary 几个字段外,其它字段需要放到 fields 数组里。 可以参考系统内置模块类 source/class/block/block_thread.php
  84.         return array('html'=>'', 'data' => array(
  85.             array(
  86.                 'id' => '1',
  87.                 'idtype' => 'sampleid',
  88.                 'title' => 'title1',
  89.                 'url' => '#',
  90.                 'pic' => 'nophoto.gif',
  91.                 'picflag' => '1',
  92.                 'summary' => '',
  93.                 'fields' => array(
  94.                     'field1' => 'value1'
  95.                 )
  96.             )
  97.         ));
  98.     }
  99.     
  100. }

  101. ?>

阅读(2344) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~