溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用TP5 taglib自定義標(biāo)簽

發(fā)布時(shí)間:2021-09-10 16:35:06 來源:億速云 閱讀:142 作者:柒染 欄目:編程語言

本篇文章為大家展示了如何使用TP5 taglib自定義標(biāo)簽,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

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

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

或者:

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

這樣的操作,這對(duì)于開發(fā)工作是挺方便的,所以覺得有必要看下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 app\common\taglib;
use think\template\TagLib;
use app\common\model\Article;
class Cc extends TagLib
{


    protected $tags = [
        'articles' => ['attr'=> 'field,id,limit,cid,order,returnname', 'close'=>1]
    ];
    /**
     * 文章標(biāo)簽
     */
    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 = \app\common\model\Article::taglib_articles([
    'field'   => {$field},
    'cid'=>{$cid},
    'limit'=>{$limit},
    'order'=>{$order}
]);
?>
{volist name="{$returnname}" id="{$id}"}
{$content}
{/volist}
parse;
        return $parse;
    }
}

這里演示的是一個(gè)文章標(biāo)簽 articles里面調(diào)用了Article模型的靜態(tài)方法taglib_articles , 順便也貼下代碼吧,就是根據(jù)條件查詢的

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的配置文件里,加一條配置載入自定義標(biāo)簽文件的

// +----------------------------------------------------------------------
    // | 模板設(shè)置
    // +----------------------------------------------------------------------
    'template'               => [
        // 模板引擎類型 支持 php think 支持?jǐn)U展
        'type'         => 'Think',
        // 模板路徑
        'view_path'    => '',
        // 模板后綴
        'view_suffix'  => 'html',
        // 模板文件名分隔符
        'view_depr'    => DS,
        // 模板引擎普通標(biāo)簽開始標(biāo)記
        'tpl_begin'    => '{',
        // 模板引擎普通標(biāo)簽結(jié)束標(biāo)記
        'tpl_end'      => '}',
        // 標(biāo)簽庫(kù)標(biāo)簽開始標(biāo)記
        'taglib_begin' => '{',
        // 標(biāo)簽庫(kù)標(biāo)簽結(jié)束標(biāo)記
        'taglib_end'   => '}',
        'taglib_pre_load'     =>    'app\common\taglib\Cc', 
    ],

就是:'taglib_pre_load'     =>    'app\common\taglib\Cc', 這條 。

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

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


上述內(nèi)容就是如何使用TP5 taglib自定義標(biāo)簽,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI