最近用thinkphp 模仿ecshop
遇到有的smarty标签thinkphp 内置模板引擎解析不了;看手册说可以扩展;
现在项目目录 tshop/LIb/ 建立 TagLib 文件夹;在创建自己的标签库文件;tshop/Lib/TagLib/TagLibHo.class.php
<?php
class TagLibHo extends TagLib{
protected $tags = array(
//ho 是标签名称;attr 是标签的属性;close是代表闭合标签;还是单标签
'ho'=>array('attr'=>'options,selected','close'=>0),
);
public function _ho($attr,$content){
$attr = $this->parseXmlAttr($attr);
$options = $attr['options'];
$selected = $attr['selected'];
$str = '<?php ';
$str.=' foreach('.$options .' as $k=>$v):';
$str.=' $sd = $k=='.$selected.'?"selected":"";';
$str.=' echo "<option value=\'$k\' $sd >$v</option>";';
$str.='endforeach ?>';
return $str;
}
}
?>
ecshop 中smarty的模板标签 {html_options options="$option" selected="$sel"} // 这个标签其实就是变成字符串 <option>name</option>的下拉列表
在Thinkphp中先在可以这样 $options 就是对应值得option的数组
<ho optionss='$options' selected="$sel" />
最后要加载标签库
在项目配置文件 tshop/conf/config.php 加入
'SHOW_PAGE_TRACE'=>true,
'TAGLIB_LOAD'=>true,
'APP_AUTOLOAD_PATH'=>'@.TagLib',
'TAGLIB_BUILD_IN'=>'Cx,Ho',