最近在用ecmall做二次开发,用到里面的挂件,在此和大家分享一下
首先ecmall的挂件地址为\external\widgets下,每个文件夹下分别有四个文件,分别为:
config.html // 此文件为配置的html也就是你点击挂件之后显示在页面上有小扳手和关闭按钮的那部分内容
wedgit.html // 此文件为内容html页面,也就是你设置完成之后所展示的页面,比如说你的分类列表页面
main.wedgit.php //这个文件大家看了就会一目了然了,是挂件的信息页面,包括挂件的名称、描述、版本等
widget.info.php //操作获取数据文件
下面列举一个简单的列子,config.html页面,一个简单的下拉框
<select name="studentid"> <!-- {foreach from=$data key=stu_id item=stu} --> <option value="{$stu.stu_id}">{$stu.name}</option> <!-- {/foreach} --> </select>
widget.html一个简单的循环列表
<div style="width:100px; height:100px; "> <h2><b title="测试挂件"></b></h2> <div> <ul> <li><a href="javascript:void(0);"></a></li> <!--{foreach from=$widget_data item=stu}--> <li><a href="javascript:void(0);">{$stu.score}</a></li> <!--{/foreach}--> </ul> </div> </div>
widget.info.php此文件配置挂件的主要信息,名称、作者、描述
return array( 'name'=>'test', 'display_name'=>'测试挂件', 'author'=>'lisan', 'version'=>'1.0', 'website'=>'http://www.cnblogs.com/lhs-blog/', 'desc'=>'获取学生信息', 'configurable'=>true, );
main.widget.php
class TestWidget extends BaseWidget { var $_name ='test'; var $_num = '6'; function _get_data() { if($this->options['studentid']){ $tm = &m('test2'); $testdata = $tm->get_list($this->options['studentid']); return $testdata; } } function get_config_datasrc() { $tm = &m('test'); $testdata = $tm->getallstu(); $this->assign('data',$testdata); } function parse_config($input){ if($input['studentid']<=0){ $input['studentid']=0; } return $input; } }
$_name 为你挂件的名称也就是'test';$_num想要显示的条数
function get_config_datasrc()此方法去获取config.html中所需的循环数据,返回$testdata并assign到页面中
config.html中接收来自$data的值并进行循环。
function parse_config($input)方法,因为config中需要传递 studentid 参数,此函数接收 studentid 的值
function _get_data() 方法具体对获取信息进行操作得到studentid 的值进行查询并返回数据,在此方法中
studentid = $this->options['studentid']。widget.html中接收 $testdata 对其进行循环。