一:在配置中载入标签库 |
'APP_AUTOLOAD_PATH' => '@.TagLib' , |
'TAGLIB_BUILD_IN' => 'Cx,Hd' , //Cx是tp里的核心标签 Hd是自己写的自定义标签名 |
二:写一个自定义标签类 |
<?php |
import( 'TagLib' ); |
/* |
*自定义标签库 |
*/ |
Class TagLibHd extends TagLib{ |
Protected $tags = array ( |
'nav' => array ( 'attr' => 'limit,order' , 'close' => 1), //定义属性 close=>1闭合标签 |
'hot' => array ( 'attr' => 'limit' , 'close' => 1), |
'new' => array ( 'attr' => 'limit' , 'close' => 1) |
); |
Public function _nav ( $attr , $content ) { |
$attr = $this ->parseXMLAttr( $attr ); |
$str = <<<str |
<?php |
\ $_nav_cate = M( 'cate' )->order( "{$attr['order']}" )->select(); |
import( 'Class.Category' ,APP_PATH); |
\ $_nav_cate = Category::unlimitedForLayer(\ $_nav_cate ); |
foreach (\ $_nav_cate as \ $_nav_cate_v ) : |
extract(\ $_nav_cate_v ); |
\ $url = U( '/c_' . $id ); |
?> |
str; |
$str .= $content ; |
$str .= '<?php endforeach;?>' ; |
return $str ; |
} |
Public function _hot ( $attr , $content ) { |
$attr = $this ->parseXMLAttr( $attr ); |
$limit = $attr [ 'limit' ]; |
$str = <<<str |
<?php |
\ $field = array ( 'id' , 'title' , 'hits' ); |
\ $_hot_blog = M( 'blog' )->field(\ $field )->limit({ $limit })->order( 'hits DESC' )->select(); |
foreach (\ $_hot_blog as \ $_hot_value ) : |
extract(\ $_hot_value ); |
\ $url = U( '/' .\ $id ); |
?> |
str; |
$str .= $content ; |
$str .= '<?php endforeach;?>' ; |
return $str ; |
} |
Public function _new ( $attr , $content ) { |
$attr = $this ->parseXMLAttr( $attr ); |
$limit = $attr [ 'limit' ]; |
$str = <<<str |
<?php |
\ $field = array ( 'id' , 'title' , 'time' , 'hits' ); |
\ $_hot_blog = M( 'blog' )->field(\ $field )->limit({ $limit })->order( 'time DESC' )->select(); |
foreach (\ $_hot_blog as \ $_hot_value ) : |
extract(\ $_hot_value ); |
\ $url = U( '/' .\ $id ); |
?> |
str; |
$str .= $content ; |
$str .= '<?php endforeach;?>' ; |
return $str ; |
} |
} |
?> |
三:在模板中使用标签 |
|