首页 > 学院 > 开发设计 > 正文

CodeIgniter + smarty 实现widget功能

2019-11-15 01:25:51
字体:
来源:转载
供稿:网友
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);    }}?>


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表