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 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] ]; /** * 文章标签 */ 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; } }
这里演示的是一个文章标签 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' => '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}
很方便吧,整了两个小时,才写好,特此记录一下,希望也能帮助到需要的朋友们!
推荐学习:《thinkphp教程》
위 내용은 TP5 taglib를 사용하여 태그를 사용자 정의하는 방법을 가르쳐주세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Pagoda에 thinkphp5를 배포할 때 보고된 오류에 대한 해결 방법: 1. Pagoda 서버를 열고 php pathinfo 확장을 설치하고 활성화합니다. 2. "RewriteRule ^(.*)$ index.php 콘텐츠로 ".access" 파일을 구성합니다. ?s=/$1 [QSA ,PT,L]”; 3. 웹사이트 관리에서 thinkphp의 pseudo-static을 활성화하면 됩니다.

thinkphp5 URL 재작성이 작동하지 않는 해결 방법: 1. mod_rewrite.so 모듈이 httpd.conf 구성 파일에 로드되었는지 확인합니다. 2. AllowOverride None에서 None을 All로 변경합니다. 3. Apache 구성 파일 .htaccess를 "RewriteRule ^ (.*)$ index.php [L,E=PATH_INFO:$1]" 하고 저장하세요.

요청된 URL을 얻는 thinkphp5의 방법: 1. 현재 URL 정보를 얻기 위해 "\think\Request" 클래스의 "$request = Request::instance();" 방법을 사용합니다. 도메인 이름을 포함한 전체 URL 주소를 얻으려면 "$request-> url()" 함수를 사용하세요.

thinkphp5 게시물은 TP5가 strpos 함수를 사용하여 헤더의 콘텐츠 유형 값에서 app/json 문자열을 찾기 때문에 값을 얻을 수 없습니다. 해결 방법은 헤더의 콘텐츠 유형 값을 app/json으로 설정하는 것입니다.

thinkphp5 제목 표시줄 아이콘을 제거하는 방법: 1. thinkphp5 프레임워크 공개에서 favicon.ico 파일을 찾습니다. 2. 파일을 삭제하거나 다른 사진을 선택하여 이름을 favicon.ico로 바꾸고 원본 favicon.ico 파일을 대체합니다.

컨트롤러가 존재하지 않는다고 메시지를 표시하는 thinkphp5에 대한 해결 방법: 1. 해당 컨트롤러의 네임스페이스가 올바르게 작성되었는지 확인하고 올바른 네임스페이스로 변경합니다. 2. 해당 tp 파일을 열고 클래스 이름을 수정합니다.

ThinkPHP5에서 어제의 데이터를 쿼리하는 방법: 1. ThinkPHP5 관련 파일을 엽니다. 2. "db('table')->whereTime('c_time', 'yesterday')->select();" 표현식을 통해 어제의 데이터를 쿼리할 수 있습니다. .

thinkphp5에서 오류 프롬프트를 설정하는 방법: 1. 프로젝트 루트 디렉터리에 있는 public 폴더를 입력하고 index.php 항목 파일을 엽니다. 2. 디버그 모드 스위치에 대한 설명을 봅니다. 3. "APP_DEBUG" 상수 값을 조정합니다. 오류 메시지 프롬프트를 표시하려면 true로 설정합니다.
