CodeIgniter + smarty 实现widget功能
2018-05-28
后端
{{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
<?php
function 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);
}
}
?>