ThinkSNS-公共Widget

来自站长百科
跳转至: 导航、​ 搜索

导航: 上一页


Widget 扩展用于在页面根据需要输出不同的内容,Widget 扩展的定义是在项目的Lib\Widget 目录下面定义Widget 类库,例如用于显示最近的评论的Widget ShowCommentWidget.class.php Widget 类库需要继承Widget 类,并且必须定义render 方法实现.

例如

class ShowCommentWidget extends Widget{
public function render($data){
return '这是最新的'.$data['count'].'条评论信息';
}
}

render 方法必须使用return 返回要输出的字符串信息,而不是直接输出。Widget 也可以调用Widget 类的renderFile 方法,渲染模板后进行输出,。

class ShowCommentWidget extends Widget{
public function render($data){
$content = $this->renderFile('Article:comment',$data);
return $content;
}
}

定义好Widget 类库后,只需要做的是在模板文件里面使用W 方法调用Widget.

例如{:W('ShowComment')}

通常Widget 都有自己的调用参数来决定不同的输出内容 {:W('ShowComment',array('count'=>5))}

参数必须使用索引数组传入。在控制器里面也可以调用Widget 类进行输出,在Action 里面获取动态的Widget内容,可以使用下面的方式:$content = W('ShowComment', array('count'=>5),true);

第三个参数表示是否返回字符串,如果是false 就表示直接输出。返回值可以用于其他用途。

  • 先看是如何调用的

在某个应用的模板中加入这句话 {:WW('Pub_ShowComment',array('xxx'=>"public1-widget"))}即可调用公共Widget: "Pub_ShowComment" 插件.这样到时输出的时候,这块就会显示:public--->public1-widget.

  • 那么公共的插件放在哪个目录,又有什么命名规则呢?

公共插件的统一目录是PUBLIC/Widget 下,比如上个例子要调用的插件,Pub_ShowCommentWidget.class.php 中的内容如下:

<?php
class Pub_ShowCommentWidget extends Widget{
public function render($data){
$content = $this->Pub_renderFile('public1',$data);
return $content;
}
}
?>

然后public1.html 的内容如下:<p style="padding-left:60px">public--->{$xxx}</p>

需要注意的是命名规则:类名必须以Pub_开头,输出函数必须用Pub_renderFile函数,而不是ThinkPHP1.6 核心默认的renderFile 函数


参考资料[ ]