首页 > Web开发 > 详细

ThinkPHP - 自定义标签库 - 标签驱动

时间:2016-02-19 20:32:30      阅读:159      评论:0      收藏:0      [点我收藏+]

ThinkPHP 官方文档:http://document.thinkphp.cn/manual_3_2/taglib_driver.html

创建一个类,继承自TagLib类:

<?php
/**
 * 自定义标签库
 */Class TagLibHf extends TagLib {
    //接收标签
    Protected $tags = array(
        ‘nav‘ => array(
            ‘attr‘ => ‘order‘,
            ‘close‘ => 1
        ),
    );

    Public function _nav($attr, $content) {
        $arr = $this->parseXMLAttr($attr, ‘nav‘);

        $str = <<<str
<?php
    \$_nav_cate = M(‘Cate‘)->order("{$arr[‘order‘]}")->select();
    import(‘Class.Category‘, APP_PATH);
    \$_nav_cate = Category::mergeCateToTwoArray(\$_nav_cate);
    foreach( \$_nav_cate as \$_nav_cate_v ) :
        extract( \$_nav_cate_v );
    \$url = U(‘/c_‘ . \$id);/*生成URL*/
?> str; $str .= $content; $str .= ‘<?php endforeach; ?>‘; return $str; } }

上面的代码最终生成的php代码:

<?php
 $_nav_cate = M(‘Cate‘)->order("sort")->select(); import(‘Class.Category‘, APP_PATH); $_nav_cate = Category::mergeCateToTwoArray($_nav_cate); foreach( $_nav_cate as $_nav_cate_v ) : extract( $_nav_cate_v ); ?><li class=‘nav-lv1-li‘>
                    <a href="" class=‘top-cate‘><?php echo ($name); ?></a>
                    <ul>
                        <?php if(is_array($child)): foreach($child as $key=>$v): ?><li><a href=""><?php echo ($v["name"]); ?></a></li><?php endforeach; endif; ?>
                    </ul>
                </li><?php endforeach; ?>

 

 

 

前台代码(部分):

<div class=‘top-nav-wrap‘>
    <ul class=‘nav-lv1‘>
        <li class=‘nav-lv1-li‘>
            <a href="" class=‘top-cate‘>博客首页</a>
        </li>

        <nav order="sort">
            <li class=‘nav-lv1-li‘>
                <a href="<{$url}>" class=‘top-cate‘><{$name}></a>
                <ul>
                    <foreach name="child" item="v" >
                        <li><a href="<{:U(‘/c_‘ . $v[‘id‘])}>"><{$v.name}></a></li>
                    </foreach>
                </ul>
            </li>
        </nav>
        
    </ul>
</div>

 

 

 

开启配置文件:

<?php
return array(
    ‘APP_AUTOLOAD_PATH‘ => ‘@.TagLib‘,
    ‘TAGLIB_BUILD_IN‘ => ‘Cx,Hf‘
);

 

ThinkPHP - 自定义标签库 - 标签驱动

原文:http://www.cnblogs.com/KTblog/p/5201944.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!