这篇文章主要介绍了thinkphp中widget扩展的两种写法及调用方法,详细分析了widget扩展的写法及相应的调用技巧,需要的朋友可以参考下
widget扩展一般用于页面组件的扩展,在页面根据需要输出不同的内容,下面介绍一下thinkphp中widget的两种写法及调用
写法一:
articlwidget.class.php文件:
class articlewidget extends widget {
/**
*
* @param array $data
* @return type
* 调用方法:{:w('articlelist',array('cid'=>25,'limit'=>5))}
* cid为分类id,limit为调用数量
*/
public function render($data) {
$article = m('article');
$articlemap["cid"] = $data["cid"];
$data["articlelist"] = $article->where($articlemap)->order('id desc')->limit($data["limit"])->select();
foreach ($articlelist as $key => $value) {
if ($value["thumbnail"] == "") {
$data["articlelist"][$key]["thumbnail"] = '/public/img/common/nothumbnail.jpg';
}
}
return $this->renderfile('articlelist', $data);
}
}
模板文件articlelist.html在lib/widget/article目录下
<volist name="articlelist" id="articlelist_vo">
<li>
<a href="__app__/channel/articledetail/code/article/id/{$articlelist_vo.id}" rel="external nofollow" title="{$articlelist_vo.title}">{$articlelist_vo.title}</a>
</li>
</volist>
写法二:
class articlewidget extends action {
/**
*
* @param array $data
* @return type
* 调用方法:{:r('article/articlelist',array('cid'=>25,'limit'=>5),'widget')}
* cid为分类id,limit为调用数量
*/
public function articlelist($cid, $limit) {
$article = m('article');
$articlemap["cid"] = $cid;
$data = $article->where($articlemap)->order('id desc')->limit($limit)->select();
foreach ($data as $key => $value) {
if ($value["thumbnail"] == "") {
$data[$key]["thumbnail"] = '/public/img/common/nothumbnail.jpg';
}
}
$this->assign('articlelist', $data);
$this->display('widget:articlelist');
}
}
模板文件articlelist.html,内容同写法一,但放在tpl/风格名/widget/目录下
如果模板文件放在articlewiget.class.php文件所在目录的article文件夹下,则写法如下:
$this->display(dirname(__file__) . '/article/articlelist.html');
相关推荐:php预定义变量9大超全局数组用法详解_php基础
php 随机数 c扩展随机数
理解php依赖注入和控制反转_php技巧
以上就是thinkphp中widget扩展的两种写法及调用方法的详细内容。