suchen
HeimPHP-FrameworkDenken Sie an PHPErfahren Sie, wie Sie TP5 Taglib zum Anpassen von Tags verwenden

学着写了一下,终于搞定了,顺便分享一下!

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 app\common\taglib;
use think\template\TagLib;
use app\common\model\Article;
class Cc extends TagLib
{


    protected $tags = [
        &#39;articles&#39; => [&#39;attr&#39;=> &#39;field,id,limit,cid,order,returnname&#39;, &#39;close&#39;=>1]
    ];
    /**
     * 文章标签
     */
    public function tagArticles($tag, $content)
    {
        $id = $tag[&#39;id&#39;]?$tag[&#39;id&#39;]:&#39;vo&#39;;
        $order         = empty($tag[&#39;order&#39;]) ? "&#39;id DESC&#39;" : &#39;"&#39;.$tag[&#39;order&#39;].&#39;"&#39;;
        $returnname = &#39;article_data&#39;;
        $field = "&#39;&#39;";
        if (!empty($tag[&#39;field&#39;])) {
            if (strpos($tag[&#39;field&#39;], &#39;$&#39;) === 0) {
                $field = $tag[&#39;field&#39;];
                $this->autoBuildVar($field);
            } else {
                $field = "&#39;{$tag[&#39;field&#39;]}&#39;";
            }
        }
        $cid = "&#39;&#39;";
        if (!empty($tag[&#39;cid&#39;])) {
            if (strpos($tag[&#39;cid&#39;], &#39;$&#39;) === 0) {
                $cid = $tag[&#39;cid&#39;];
                $this->autoBuildVar($cid);
            } else {
                $cid = "&#39;{$tag[&#39;cid&#39;]}&#39;";
            }
        }
        $limit = "&#39;&#39;";
        if (!empty($tag[&#39;limit&#39;])) {
            if (strpos($tag[&#39;limit&#39;], &#39;$&#39;) === 0) {
                $limit = $tag[&#39;limit&#39;];
                $this->autoBuildVar($limit);
            } else {
                $limit = "&#39;{$tag[&#39;limit&#39;]}&#39;";
            }
        }else{
            $limit = &#39;0,5&#39;;
        }
        $parse = <<<parse
<?php
    \$$returnname = \app\common\model\Article::taglib_articles([
    &#39;field&#39;   => {$field},
    &#39;cid&#39;=>{$cid},
    &#39;limit&#39;=>{$limit},
    &#39;order&#39;=>{$order}
]);
?>
{volist name="{$returnname}" id="{$id}"}
{$content}
{/volist}
parse;
        return $parse;
    }
}

这里演示的是一个文章标签 articles里面调用了Article模型的静态方法taglib_articles , 顺便也贴下代码吧,就是根据条件查询的

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

之后,在tp的配置文件里,加一条配置载入自定义标签文件的 

// +----------------------------------------------------------------------
    // | 模板设置
    // +----------------------------------------------------------------------
    &#39;template&#39;               => [
        // 模板引擎类型 支持 php think 支持扩展
        &#39;type&#39;         => &#39;Think&#39;,
        // 模板路径
        &#39;view_path&#39;    => &#39;&#39;,
        // 模板后缀
        &#39;view_suffix&#39;  => &#39;html&#39;,
        // 模板文件名分隔符
        &#39;view_depr&#39;    => DS,
        // 模板引擎普通标签开始标记
        &#39;tpl_begin&#39;    => &#39;{&#39;,
        // 模板引擎普通标签结束标记
        &#39;tpl_end&#39;      => &#39;}&#39;,
        // 标签库标签开始标记
        &#39;taglib_begin&#39; => &#39;{&#39;,
        // 标签库标签结束标记
        &#39;taglib_end&#39;   => &#39;}&#39;,
        &#39;taglib_pre_load&#39;     =>    &#39;app\common\taglib\Cc&#39;, 
    ],

就是:'taglib_pre_load'     =>    'app\common\taglib\Cc', 这条 。

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

{cc:articles cid="1" field='id,title' limit="2" order="id asc" id="vo"}
  • {$vo.title}
  • {/cc:articles}

    很方便吧,整了两个小时,才写好,特此记录一下,希望也能帮助到需要的朋友们!

    推荐学习:《thinkphp教程

    Das obige ist der detaillierte Inhalt vonErfahren Sie, wie Sie TP5 Taglib zum Anpassen von Tags verwenden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme
    Dieser Artikel ist reproduziert unter:cnblogs. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
    Was sind die Hauptmerkmale des integrierten Test-Frameworks von ThinkPhp?Was sind die Hauptmerkmale des integrierten Test-Frameworks von ThinkPhp?Mar 18, 2025 pm 05:01 PM

    In dem Artikel wird das integrierte Test-Framework von ThinkPhP erläutert, wobei die wichtigsten Funktionen wie Einheit und Integrationstests hervorgehoben werden und wie die Anwendungszuverlässigkeit durch frühzeitige Fehlererkennung und verbesserte Codequalität verbessert wird.

    Wie kann man ThinkPhp zum Aufbau von Echtzeit-Aktienmarktdaten-Feeds verwenden?Wie kann man ThinkPhp zum Aufbau von Echtzeit-Aktienmarktdaten-Feeds verwenden?Mar 18, 2025 pm 04:57 PM

    In Artikel wird ThinkPhp für Echtzeit-Aktienmarktdaten-Feeds mit dem Schwerpunkt auf Setup, Datengenauigkeit, Optimierung und Sicherheitsmaßnahmen erörtert.

    Was sind die wichtigsten Überlegungen für die Verwendung von ThinkPhp in einer serverlosen Architektur?Was sind die wichtigsten Überlegungen für die Verwendung von ThinkPhp in einer serverlosen Architektur?Mar 18, 2025 pm 04:54 PM

    In dem Artikel werden wichtige Überlegungen zur Verwendung von ThinkPhp in serverlosen Architekturen erörtert, wobei der Schwerpunkt auf Leistungsoptimierung, staatslosem Design und Sicherheit liegt. Es unterstreicht Vorteile wie Kosteneffizienz und Skalierbarkeit, befasst sich aber auch mit Herausforderungen

    So implementieren Sie Service -Erkennung und Lastausgleich in ThinkPhp -Microservices?So implementieren Sie Service -Erkennung und Lastausgleich in ThinkPhp -Microservices?Mar 18, 2025 pm 04:51 PM

    In dem Artikel wird die Implementierung der Service -Erkennung und des Lastausgleichs in ThinkPhp Microservices erläutert und sich auf Setup, Best Practices, Integrationsmethoden und empfohlene Tools konzentrieren. [159 Zeichen]

    Was sind die erweiterten Merkmale des Abhängigkeitsinjektionsbehälters von ThinkPhp?Was sind die erweiterten Merkmale des Abhängigkeitsinjektionsbehälters von ThinkPhp?Mar 18, 2025 pm 04:50 PM

    IOC -Container von ThinkPhp bietet erweiterte Funktionen wie fauler Laden, Kontextbindung und Methodeninjektion für eine effiziente Abhängigkeitsführung in PHP -Apps.character Count: 159

    Wie kann man ThinkPhp zum Erstellen von Tools in Echtzeitkollaboration verwenden?Wie kann man ThinkPhp zum Erstellen von Tools in Echtzeitkollaboration verwenden?Mar 18, 2025 pm 04:49 PM

    In dem Artikel wird die Verwendung von ThinkPhp zum Aufbau von Tools in Echtzeitkollaboration erläutert und sich auf Setup, WebSocket-Integration und Best Practices für Sicherheitsförderungen konzentriert.

    Was sind die wichtigsten Vorteile der Verwendung von ThinkPhp zum Aufbau von SaaS -Anwendungen?Was sind die wichtigsten Vorteile der Verwendung von ThinkPhp zum Aufbau von SaaS -Anwendungen?Mar 18, 2025 pm 04:46 PM

    ThinkPhp profitiert SaaS -Apps mit leichten Design, MVC -Architektur und Erweiterbarkeit. Es verbessert die Skalierbarkeit, beschleunigt die Entwicklung und verbessert die Sicherheit durch verschiedene Merkmale.

    Wie erstelle ich ein verteiltes Task -Warteschlangensystem mit ThinkPhp und Rabbitmq?Wie erstelle ich ein verteiltes Task -Warteschlangensystem mit ThinkPhp und Rabbitmq?Mar 18, 2025 pm 04:45 PM

    Der Artikel beschreibt das Erstellen eines verteilten Task -Warteschlangensystems mit ThinkPhp und RabbitMQ, wobei sich die Installation, Konfiguration, Aufgabenverwaltung und Skalierbarkeit konzentriert. Zu den wichtigsten Problemen gehören die Gewährleistung einer hohen Verfügbarkeit, die Vermeidung häufiger Fallstricke wie Unmensch

    See all articles

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    AI Hentai Generator

    AI Hentai Generator

    Erstellen Sie kostenlos Ai Hentai.

    Heißer Artikel

    R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
    3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Beste grafische Einstellungen
    3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
    3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25: Wie man alles in Myrise freischaltet
    4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

    Heiße Werkzeuge

    WebStorm-Mac-Version

    WebStorm-Mac-Version

    Nützliche JavaScript-Entwicklungstools

    Senden Sie Studio 13.0.1

    Senden Sie Studio 13.0.1

    Leistungsstarke integrierte PHP-Entwicklungsumgebung

    DVWA

    DVWA

    Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

    Herunterladen der Mac-Version des Atom-Editors

    Herunterladen der Mac-Version des Atom-Editors

    Der beliebteste Open-Source-Editor

    Dreamweaver CS6

    Dreamweaver CS6

    Visuelle Webentwicklungstools