直接调用方法:
例如调用cate
<ul class="nav"> <php> $cate = M('cate')->order('sort')->select(); import('Class.Category',APP_PATH); $cate = Category::unlimitedForLayer($cate); </php> <foreach name="cate" item="v"> <li> <a href="">{$v.name}</a> <ul class="subnav" style="display:none;"> <foreach name="v.child" item='value'> <li><a href="">{$value.name}</a></li> </foreach> </ul> </li> </foreach> </ul>
自定义标签方法:
1、在相应分组下TagLib文件夹中 建立文件如: TagLibNav.class.php
内容如下:
注意:
1)、自定义的固定格式
2)、注意使用"\"进行双引号中变量的转义,也可以用单引号,就不需要转义了,那得一句一句写,使用 ".="进行连接。
说明: $attr是传递了自定义标签的attribute的array , $content传递了自定义标签的内容,
<?php import('TagLib');/*** 自定义标签,来自视频40*/class TagLibNav extends TagLib{ protected $tags = array( 'nav'=>array('attr'=>'limit,order','close'=>1), ); public function _nav($attr,$content){ // echo $attr; // echo $content; $attr = $this->parseXmlAttr($attr); $limit = $attr['limit'];$str = <<<str<?php \$cate = M('Cate')->order("{$attr['order']}")->limit({$attr['limit']})->select(); import('Class.Category' ,APP_PATH); \$cate = Category::unlimitedForLayer(\$cate); foreach (\$cate as \$v) : extract(\$v); \$url = U('/c_' . \$id);?>str; $str .= $content; $str .= '<?php endforeach;?>'; return $str; }}?>
2、在相应的分组config.php中配置
'APP_AUTOLOAD_PATH' = > '@.TagLib' ,
'TAGLIB_BUILD_IN'=>'Cx,Nav',
3、在相应的文件里使用自定义标签
<nav limit='6' order='sort ASC'> <li><a href="{$url}">{$name}</a></li> <ul> <foreach name ='child' item='v'> <li><a href="{:U('/c_' . $v['id'])}">{$v.name}</a></li> </foreach> </ul> </nav>
Widget方法:
1、在相应分组中建立Widget\HotWidget.class.php
< ? php
/*** 自定义widget*/class HotWidget extends Widget{ public function render($data) { // p($data); // return "测试"; // $blog = M('blog')->field(array('id','title','click'))->order('click Desc')->limit(5)->select(); // p($blog); $data['blog'] = M('blog')->field(array('id','title','click'))->order('click Desc')->limit(5)->select(); return $this->renderFile('',$data); }} ?>
2、建立模板文件Widget\Hot\Hot.html
3、调用
<dl> <dt>热门博文(widget)</dt> <foreach name ='blog' item ='v'> <dd><a href="{:U('/' .$v['id'])}">{$v.title}</a> <span>{$v.click}</span></dd> </foreach></dl>
{ : W( 'Hot' , array ( 'id' = > 100 ))}
调用时可传入参数,用array形式传入。