Rumah rangka kerja php ThinkPHP Ajar anda cara menggunakan taglib TP5 untuk menyesuaikan teg

Ajar anda cara menggunakan taglib TP5 untuk menyesuaikan teg

Sep 10, 2021 pm 04:07 PM
thinkphp5

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

taglib是tp框架自定义标签功能,如果你用过cms,肯定见过类似:

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

或者:

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

这样的操作,这对于开发工作是挺方便的,所以觉得有必要看下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;
    }
}
Salin selepas log masuk

这里演示的是一个文章标签 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;
    }
Salin selepas log masuk

之后,在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;, 
    ],
Salin selepas log masuk

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

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

{cc:articles cid="1" field=&#39;id,title&#39; limit="2" order="id asc" id="vo"}<li><a href="#">{$vo.title}</a></li>{/cc:articles}
Salin selepas log masuk

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

推荐学习:《thinkphp教程

Atas ialah kandungan terperinci Ajar anda cara menggunakan taglib TP5 untuk menyesuaikan teg. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah yang perlu saya lakukan jika saya mendapat ralat semasa menggunakan thinkphp5 di Pagoda? Apakah yang perlu saya lakukan jika saya mendapat ralat semasa menggunakan thinkphp5 di Pagoda? Dec 19, 2022 am 11:04 AM

Penyelesaian kepada ralat yang dilaporkan semasa menggunakan thinkphp5 dalam Pagoda: 1. Buka pelayan Pagoda, pasang sambungan php pathinfo dan dayakannya 2. Konfigurasikan fail ".access" dengan kandungan "RewriteRule ^(.*)$ index.php ?s=/$1 [QSA ,PT,L]”; 3. Dalam pengurusan laman web, hanya dayakan pseudo-static thinkphp.

Apakah yang perlu saya lakukan jika penulisan semula url thinkphp5 gagal? Apakah yang perlu saya lakukan jika penulisan semula url thinkphp5 gagal? Dec 12, 2022 am 09:31 AM

Penyelesaian untuk penulisan semula url thinkphp5 tidak berfungsi: 1. Semak sama ada modul mod_rewrite.so dimuatkan dalam fail konfigurasi httpd.conf 2. Tukar Tiada dalam AllowOverride None to All 3. Ubah suai fail konfigurasi Apache .htaccess kepada "RewriteRule ^ (.*)$ index.php [L,E=PATH_INFO:$1]" dan simpannya.

Bagaimana untuk mendapatkan URL yang diminta dalam thinkphp5 Bagaimana untuk mendapatkan URL yang diminta dalam thinkphp5 Dec 20, 2022 am 09:48 AM

Kaedah untuk thinkphp5 untuk mendapatkan URL yang diminta: 1. Gunakan kaedah "$request = Request::instance();" kelas "\think\Request" untuk mendapatkan maklumat URL semasa 2. Gunakan pembantu terbina dalam fungsi "$request-> url()" untuk mendapatkan alamat URL lengkap termasuk nama domain.

Apakah yang perlu saya lakukan jika catatan thinkphp5 tidak mendapat nilai? Apakah yang perlu saya lakukan jika catatan thinkphp5 tidak mendapat nilai? Dec 06, 2022 am 09:29 AM

catatan thinkphp5 tidak boleh mendapatkan nilai kerana TP5 menggunakan fungsi strpos untuk mencari rentetan app/json dalam nilai jenis kandungan Pengepala.

Bagaimana untuk mengalih keluar ikon bar tajuk thinkphp5 Bagaimana untuk mengalih keluar ikon bar tajuk thinkphp5 Dec 20, 2022 am 09:24 AM

Bagaimana untuk mengalih keluar ikon bar tajuk thinkphp5: 1. Cari fail favicon.ico di bawah kerangka kerja thinkphp5 awam 2. Padam fail atau pilih gambar lain untuk menamakannya kepada favicon.ico dan gantikan fail favicon.ico yang asal.

Apakah yang perlu saya lakukan jika thinkphp5 menggesa bahawa pengawal tidak wujud? Apakah yang perlu saya lakukan jika thinkphp5 menggesa bahawa pengawal tidak wujud? Dec 06, 2022 am 10:43 AM

Penyelesaian kepada thinkphp5 yang menyebabkan pengawal tidak wujud: 1. Semak sama ada ruang nama dalam pengawal yang sepadan ditulis dengan betul dan tukarkannya ke ruang nama yang betul 2. Buka fail tp yang sepadan dan ubah suai nama kelas;

Bagaimana untuk menanyakan data semalam dalam ThinkPHP5 Bagaimana untuk menanyakan data semalam dalam ThinkPHP5 Dec 05, 2022 am 09:20 AM

Cara menanyakan data semalam dalam ThinkPHP5: 1. Buka fail berkaitan ThinkPHP5 2. Tanya data semalam melalui ungkapan "db('table')->whereTime('c_time', 'semalam')->select();" .

Bagaimana untuk menyediakan gesaan ralat thinkphp5 Bagaimana untuk menyediakan gesaan ralat thinkphp5 Dec 07, 2022 am 10:31 AM

Cara menetapkan gesaan ralat dalam thinkphp5: 1. Masukkan folder awam dalam direktori akar projek dan buka fail entri index.php 2. Lihat komen pada suis mod nyahpepijat 3. Laraskan nilai pemalar "APP_DEBUG". kepada benar untuk memaparkan gesaan mesej ralat.

See all articles