·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> php网站开发 >> CodeIgniter + smarty 实现widget功能

CodeIgniter + smarty 实现widget功能

作者:佚名      php网站开发编辑:admin      更新时间:2022-07-23
CodeIgniter + smarty 实现widget功能 2014-02-25 13:09 by 萧 云, ... 阅读, ... 评论, 收藏, 编辑

在开发过程中,经常需要widget功能,一可以隔离页面逻辑,二可以重用代码。结合smarty的plugin功能,可以方便的实现该功能。

譬如,我们的页面中可以这样写:

{{extends file='_layout.html'}} {{block name='content'}}<!--content--><div>    <div>        {{widgets path='widgets/carousel'}}        {{widgets path='widgets/news'}}    </div>    {{widgets path='widgets/hots'}}    {{widgets path='widgets/tops'}}</div><!--/content-->{{/block}}

{{widgets path='widgets/news'}}表示调用widgets Controller 的news action,最终输出的html嵌入这里。

需要实现该功能,可以借助smarty 的function plugin,创建一个function.widgets.php

<?phpfunction smarty_function_widgets($params,&$smarty){            $path = $params['path'];    $args = isset($params['args']) ? $params['args'] : NULL;        if($path){        $ps = explode('/', $path);                $controller = $ps[0];        $method = $ps[1];                require_once APPPATH.'controllers/'.$controller.'.php';                        $c = new $controller;                if(!isset($params['args']))            $c->$method();        else            $c->$method($args);    }}?>