欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ThinkPHP中Widget扩展的两种写法及调用方法详解

程序员文章站 2024-03-08 22:36:34
本文实例讲述了thinkphp中widget扩展的两种写法及调用方法。分享给大家供大家参考,具体如下: widget扩展一般用于页面组件的扩展,在页面根据需要输出不同的内...

本文实例讲述了thinkphp中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');

更多关于thinkphp相关内容感兴趣的读者可查看本站专题:《thinkphp入门教程》、《thinkphp模板操作技巧总结》、《thinkphp常用方法总结》、《codeigniter入门教程》、《ci(codeigniter)框架进阶教程》、《zend framework框架入门教程》及《php模板技术总结》。

希望本文所述对大家基于thinkphp框架的php程序设计有所帮助。