站長資訊網
        最全最豐富的資訊網站

        教你如何使用TP5 taglib自定義標簽

        學著寫了一下,終于搞定了,順便分享一下!

        taglib是tp框架自定義標簽功能,如果你用過cms,肯定見過類似:

        {dede:arclist typeid='' row='' col='' titlelen='' infolen=''  orderby='' keyword=''} ssss... {/dede:arclist}

        或者:

        {pc:content action="lists" cache="3600" num="20" page="$page"} {/pc}

        這樣的操作,這對于開發工作是挺方便的,所以覺得有必要看下tp的taglib,教程如下:

        1 、在common(我是在common,你自己看,反正是用命名空間載入)里新建目錄taglib
        2、在taglib里新建Cc.php 繼承think的Tglib,代碼如下:

        <?php /**  * Created by PhpStorm.  * User: lichenchen  * Date: 2018/3/25  * Time: 下午8:34  */ namespace appcommontaglib; use thinktemplateTagLib; use appcommonmodelArticle; class Cc extends TagLib {       protected $tags = [         'articles' => ['attr'=> 'field,id,limit,cid,order,returnname', 'close'=>1]     ];     /**      * 文章標簽      */     public function tagArticles($tag, $content)     {         $id = $tag['id']?$tag['id']:'vo';         $order         = empty($tag['order']) ? "'id DESC'" : '"'.$tag['order'].'"';         $returnname = 'article_data';         $field = "''";         if (!empty($tag['field'])) {             if (strpos($tag['field'], '$') === 0) {                 $field = $tag['field'];                 $this->autoBuildVar($field);             } else {                 $field = "'{$tag['field']}'";             }         }         $cid = "''";         if (!empty($tag['cid'])) {             if (strpos($tag['cid'], '$') === 0) {                 $cid = $tag['cid'];                 $this->autoBuildVar($cid);             } else {                 $cid = "'{$tag['cid']}'";             }         }         $limit = "''";         if (!empty($tag['limit'])) {             if (strpos($tag['limit'], '$') === 0) {                 $limit = $tag['limit'];                 $this->autoBuildVar($limit);             } else {                 $limit = "'{$tag['limit']}'";             }         }else{             $limit = '0,5';         }         $parse = <<<parse <?php     $$returnname = appcommonmodelArticle::taglib_articles([     'field'   => {$field},     'cid'=>{$cid},     'limit'=>{$limit},     'order'=>{$order} ]); ?> {volist name="{$returnname}" id="{$id}"} {$content} {/volist} parse;         return $parse;     } }

        這里演示的是一個文章標簽 articles里面調用了Article模型的靜態方法taglib_articles , 順便也貼下代碼吧,就是根據條件查詢的

        public static function taglib_articles($param)     {         $field = $param['field'];         $cid = $param['cid'];         $limit = $param['limit'];         $order = $param['order'];         $result = Article::where('cid', 'in',$cid)->field($field)->limit($limit)->order($order)->select();         return $result;     }

        之后,在tp的配置文件里,加一條配置載入自定義標簽文件的

        // +----------------------------------------------------------------------     // | 模板設置     // +----------------------------------------------------------------------     'template'               => [         // 模板引擎類型 支持 php think 支持擴展         'type'         => 'Think',         // 模板路徑         'view_path'    => '',         // 模板后綴         'view_suffix'  => 'html',         // 模板文件名分隔符         'view_depr'    => DS,         // 模板引擎普通標簽開始標記         'tpl_begin'    => '{',         // 模板引擎普通標簽結束標記         'tpl_end'      => '}',         // 標簽庫標簽開始標記         'taglib_begin' => '{',         // 標簽庫標簽結束標記         'taglib_end'   => '}',         'taglib_pre_load'     =>    'appcommontaglibCc',      ],

        就是:'taglib_pre_load' => 'appcommontaglibCc', 這條 。

        之后就可以在模版里使用了

        {cc:articles cid="1" field='id,title' limit="2" order="id asc" id="vo"}<li><a href="#">{$vo.title}</a></li>{/cc:articles}

        很方便吧,整了兩個小時,才寫好,特此記錄一下,希望也能幫助到需要的朋友們!

        推薦學習:《thinkphp教程》

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 四虎国产精品免费入口| 国产精品亚洲美女久久久| 欧美精品国产日韩综合在线| 亚洲精品黄色视频在线观看免费资源| 精品999久久久久久中文字幕 | 狼色精品人妻在线视频| 久久99精品久久久久久不卡| 国产91精品一区二区麻豆亚洲| 精品福利资源在线| 91在线视频精品| 精品人人妻人人澡人人爽人人 | 国产精品成人久久久久三级午夜电影 | 日韩精品无码一区二区中文字幕 | 欧美日韩精品在线| 国内精品一级毛片免费看| 3D动漫精品一区二区三区| 国产最新进精品视频| 精品人伦一区二区三区潘金莲| 香蕉久久夜色精品升级完成| 亚洲一日韩欧美中文字幕欧美日韩在线精品一区二 | av国内精品久久久久影院| 少妇人妻无码精品视频| 亚洲欧洲自拍拍偷精品 美利坚| 青娱乐国产精品视频| 亚洲国产综合精品一区在线播放| 美女岳肉太深了使劲国产精品亚洲专一区二区三区 | 欧洲精品99毛片免费高清观看| 亚洲国产另类久久久精品黑人| 亚洲精品国偷自产在线| 乱色精品无码一区二区国产盗| 精品国产一区二区三区色欲| 精品不卡一区二区| 国产高清在线精品一区| 四虎成人欧美精品在永久在线| 日本一区精品久久久久影院 | 97久久精品无码一区二区| 99re国产精品视频首页| 国产精品成人观看视频国产| 午夜精品美女写真福利| 国产精品无码一区二区在线观一 | 久久久久国产精品三级网|