当前位置:首页 > CMS教程 > 其它CMS > 列表

blogCMS标签库源码例子

发布:smiling 来源: PHP粉丝网  添加日期:2014-12-04 11:35:54 浏览: 评论:0 

最近用ThinkPHP3.1版本重写了下自己的轻博客系统,新增加了标签库功能,如果使用过织梦或是74CMS的标签,会对此比较熟悉,标签库源码如下:

  1. <?php 
  2. import('TagLib'); 
  3. class TagLibBlog extends TagLib { 
  4.     
  5.    protected $tags=array
  6.        'blog_cate'=>array('attr'=>'typeid,reid,model,menu,order,limit,name','close'=>0), 
  7.        'blog_blog'=>array('attr'=>'id,typeid,order,limit,name','close'=>0), 
  8.        'blog_link'=>array('attr'=>'kind,order,limit,name','close'=>0), 
  9.        'blog_sql'=>array('attr'=>'sql,name','close'=>0), 
  10.        'blog_comment'=>array('attr'=>'aid,reid,order,limit,name','close'=>0), 
  11.        'blog_tag'=>array('attr'=>'order,limit,name','close'=>0), 
  12.        'blog_group'=>array('attr'=>'order,limit,name','close'=>0), 
  13.    ); 
  14.     
  15.    //获取栏目信息 
  16.    public function _blog_cate($attr){ 
  17.        $attr=$this->parseXmlAttr($attr); 
  18.        extract($attr); 
  19.        $sql='where 1'
  20.        if(isset($typeid)){ 
  21.            $sql.=" and id=$typeid"
  22.        } 
  23.        if(isset($reid)){ 
  24.            $sql.=" and reid=$reid"
  25.        } 
  26.        if(isset($model)){ 
  27.            $sql.=" and model=$model"
  28.        } 
  29.        if(isset($menu)){ 
  30.            $sql.=" and menu=$menu"
  31.        } 
  32.        if(isset($order)){ 
  33.            $sql.=" order by $order"
  34.        } 
  35.        if(isset($limit)){ 
  36.            $sql.=" limit $limit"
  37.        } 
  38.        if(emptyempty($name)){ 
  39.            $name='list'
  40.        } 
  41.        $str=<<<str 
  42.        <?php 
  43.        ${$name}=M()->query("select id,name,reid from blog_category {$sql}"); 
  44.        import('@.Class.Tool'); 
  45.        ${$name}=Tool::formatMultiArray(${$name}); 
  46.        ?> 
  47. str; 
  48.        return $str
  49.    } 
  50.     
  51.    //获取博文列表 
  52.    public function _blog_blog($attr){ 
  53.        $attr=$this->parseXmlAttr($attr); 
  54.        extract($attr); 
  55.        $sql='where 1'
  56.        if(isset($id)){ 
  57.            $sql.=" and a.id in ($id)"
  58.        } 
  59.        if(isset($typeid)){ 
  60.            import('@.Class.Tool'); 
  61.            $categories=M('category')->select(); 
  62.            $arr=Tool::getChildsId($categories,$typeid); 
  63.            $arrStr=implode(",",$arrStr); 
  64.            $sql.=" and a.reid in ($typeid)"
  65.        } 
  66.        if(isset($order)){ 
  67.            $sql.=" order by a.$order"
  68.        } 
  69.        if(isset($limit)){ 
  70.            $sql.=" limit $limit"
  71.        } 
  72.        if(emptyempty($name)){ 
  73.            $name='list'
  74.        } 
  75.        $str=<<<str 
  76.        <?php 
  77.        ${$name}=M()->query("select a.*,c.name as cname from blog_article as a left join blog_category as c on a.reid=c.id {$sql}"); 
  78.        foreach(${$nameas $key=>$value){ 
  79.            if($value['keywords']){ 
  80.                ${$name}[$key]['tag']=explode(',',$value['keywords']); 
  81.            } 
  82.        } 
  83.        ?> 
  84. str; 
  85.        return $str;     
  86.    } 
  87.  
  88.    //友链调用标签 
  89.    public function _blog_link($attr){ 
  90.        $attr=$this->parseXmlAttr($attr); 
  91.        extract($attr); 
  92.        $sql='where 1 and state=1'
  93.        if(isset($kind)){ 
  94.            $sql.=" and kind=$kind"
  95.        } 
  96.        if(isset($order)){ 
  97.            $sql.=" order by $order"
  98.        } 
  99.        if(isset($limit)){ 
  100.            $sql.=" limit $limit"
  101.        } 
  102.        if(emptyempty($name)){ 
  103.            $name='list'
  104.        } 
  105.        $str=<<<str 
  106.        <?php 
  107.        ${$name}=M()->query("select name,url,imgurl from blog_link {$sql}"); 
  108.        ?> 
  109. str; 
  110.        return $str
  111.    } 
  112.     
  113.    //万能sql调用标签 
  114.    public function _blog_sql($attr){ 
  115.        $attr=$this->parseXmlAttr($attr); 
  116.        extract($attr); 
  117.        if(emptyempty($name)){ 
  118.            $name='list'
  119.        } 
  120.        if(emptyempty($sql)){ 
  121.            echo '模板标签有误'
  122.            exit
  123.        } 
  124.        if(preg_match('/update|insert|delete/',$sql)){ 
  125.            echo 'sql语句包含危险操作'
  126.            exit
  127.        } 
  128.        $str=<<<str 
  129.        <?php 
  130.        ${$name}=M()->query("{$sql}"); 
  131.        p(${$name}); 
  132.        exit
  133.        ?> 
  134. str; 
  135.        return $str
  136.    } 
  137.     
  138.    //评论列表标签 
  139.    public function _blog_comment($attr){ 
  140.        $attr=$this->parseXmlAttr($attr); 
  141.        extract($attr); 
  142.        $sql='where 1 and islock=0'
  143.        if(isset($aid)){ 
  144.            $sql.=" and aid=$aid"
  145.        } 
  146.        if(isset($reid)){ 
  147.            $sql.=" and reid=$reid"
  148.        } 
  149.        if(isset($order)){ 
  150.            $sql.=" order by $order"
  151.        } 
  152.        if(isset($limit)){ 
  153.            $sql.=" limit $limit"
  154.        } 
  155.        if(emptyempty($name)){ 
  156.            $name='list'
  157.        } 
  158.        $str=<<<str 
  159.        <?php 
  160.        ${$name}=M()->query("select * from blog_comment $sql"); 
  161.        import('@.Class.Tool'); 
  162.        ${$name}=Tool::formatOneArray(${$name}); 
  163.        ?> 
  164. str; 
  165.        return $str
  166.    } 
  167.     
  168.    //Tag列表标签 
  169.    public function _blog_tag($attr){ 
  170.        $attr=$this->parseXmlAttr($attr); 
  171.        extract($attr); 
  172.        $sql='where 1'
  173.        if(isset($order)){ 
  174.            $sql.=" order by $order"
  175.        } 
  176.        if(isset($limit)){ 
  177.            $sql.=" limit $limit"
  178.        } 
  179.        if(emptyempty($name)){ 
  180.            $name='list'
  181.        } 
  182.        $str=<<<str 
  183.        <?php 
  184.        ${$name}=M()->query("select tagname,counts from blog_tag $sql"); 
  185.        foreach(${$nameas $key=>$value){ 
  186.            $num=floor(($value['counts']+1200)/100); 
  187.            $num=$num>30? 30:$num
  188.            ${$name}[$key]['size']=$num
  189.        } 
  190.        shuffle(${$name}); 
  191.        ?> 
  192. str; 
  193.        return $str;         
  194.    } 
  195.     
  196.    //文档归档标签 
  197.    public function _blog_group($attr){ 
  198.        $attr=$this->parseXmlAttr($attr); 
  199.        extract($attr); 
  200.        $sql='where 1'
  201.        if(emptyempty($name)){ 
  202.            $name='list'
  203.        } 
  204.        $str=<<<str 
  205.        <?php 
  206.        ${$name}=M()->query("select count(*) as num,from_unixtime(pubdate,'%Y-%m') as pdate from blog_article group by pdate order by pdate desc");//开源软件:phpfensi.com 
  207.        ?> 
  208. str; 
  209.        return $str;         
  210.    } 
  211.  
  212. ?>

Tags: blogCMS标签 blogCMS源码

分享到: