码迷,mamicode.com
首页 > 其他好文 > 详细

问答项目---面包削导航的处理!

时间:2017-08-30 22:35:14      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:ret   result   amp   参考   php   技术分享   name   一个   src   

技术分享

首先要根据当前的 id 获取到它所有顶级栏目:

要从顶级栏目到二级栏目,所以要倒序排列下:array_reverse();

/**
 * 传递一个分类ID 返回该分类的所有父级分类
 */
function get_all_parent($array,$id){
    $arr = array();
    foreach($array as $v){
        if($v[‘id‘] == $id){
            $arr[] = $v;
            $arr = array_merge($arr,get_all_parent($array,$v[‘pid‘]));
        }
    }
    return $arr;
}

定义标签:(考虑到每次访问这个都要去读这个,会很耗性能,所以做了缓存处理)

<?php
namespace Common\Tag;
use Think\Template\TagLib;
class My extends TagLib{
    // 定义标签
    // 参考文章 : http://www.thinkphp.cn/topic/34758.html
    protected $tags = array(        
        ‘location‘=> array(‘attr‘=>‘cid‘)
    );
    // location 标签
    public function _location($attr,$content){
        $cid = $attr[‘cid‘];
        $str = <<<str
<?php 
    \$cid = {$cid};
    if(S(‘location_‘.\$cid)){
        \$_location_result = S(‘location_‘ . \$cid);
    }else{
        \$_location_category = M(‘category‘)->select();
        \$_location_result = array_reverse(get_all_parent(\$_location_category,\$cid));
        S(‘location_‘.\$cid);
    }
    foreach(\$_location_result as \$v):
        extract(\$v);
?>
str;
    $str .= $content;
    $str .= ‘<?php endforeach; ?>‘;
    return $str;
    }
};

具体使用:

<div id=‘location‘>
    <a href="{:U(‘List/index‘)}">全部分类</a>
    <if condition="isset($_GET[‘id‘])">&nbsp;&gt;&nbsp;
        <location cid=‘$_GET["id"]‘>
            <if condition="$id == $_GET[‘id‘]">
                {$name}
            <else/>
                <a href="{:U(‘List/index‘,array(‘id‘=>$id))}">{$name}</a>&nbsp;&gt;&nbsp;
            </if>
        </location>
    </if>
</div>

 

问答项目---面包削导航的处理!

标签:ret   result   amp   参考   php   技术分享   name   一个   src   

原文地址:http://www.cnblogs.com/e0yu/p/7455476.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!