特别是在使用bootstrap框架的时候引入很多js和css文件,虽然官方也提供了load、css、js等标签,但也仅仅是简写了html标签而已。 例如在assets目录下有主题文件夹theme1,在主题文件夹中有css、js和各种控件的目录,我们是否能只需要一个标签引入所有资源文件呢,利用thinkphp的自定义标签功能当然是能实现的了,代码如下
function _load($attr,$info){
extract($attr);
if (!$type) $type = 'js';
if(!$dir) $dir = 'assets/';
if($theme) $dir .= $theme.'/';
if($path) $dir = $path;
$fs = explode(",", $href);
foreach ($fs as $k) {
$f = $dir.$k;
if ($type == 'js') {
$s .= '<script type="text/javascript" src="'.$f.'.'.$type.'"></script>'."\n";
}elseif ($type == 'css') {
$s .= '<link rel="stylesheet" href="'.$f.'.'.$type.'">'."\n";
}
}
return $s;
}
使用
<Ui:load theme="theme1" type="css" href="css/styles,fonts/font-awesome/css/font-awesome.min" />
相当于
<link rel="stylesheet" href="assets/theme1/css/styles.css">
<link rel="stylesheet" href="assets/theme1/fonts/font-awesome/css/font-awesome.min.css">