DESTOON標簽(tag)調用手冊 模板製作參考手冊

来源:https://www.cnblogs.com/kaifatu/archive/2022/08/26/16629412.html
-Advertisement-
Play Games

什麼是標簽調用?標簽調用是根據調用條件(condition)從數據表(table)讀取調用數量(pagesize)條數據,並按排序方式(order)排序,最終通過標簽模板的佈局輸出數據。可以看出,標簽的工作分兩個部分,一是讀取數據,二是顯示數據。標簽函數原型標簽函數保存於 include/tag.f ...


什麼是標簽調用?
標簽調用是根據調用條件(condition)從數據表(table)讀取調用數量(pagesize)條數據,並按排序方式(order)排序,最終通過標簽模板的佈局輸出數據。
可以看出,標簽的工作分兩個部分,一是讀取數據,二是顯示數據。

標簽函數原型
標簽函數保存於 include/tag.func.php
tag($parameter, $expires = 0) $parameter 表示傳遞給tag函數的字元串,系統自動將其轉換為多個變數。
例如傳遞 table=destoon&pagesize=10&hello=world
系統相當於得到:
$table = 'destoon';
$pagesize = 10;
$hello = 'world';
三個變數
$expires 表示標簽緩存過期時間
>0 緩存$expires秒;0 - 系統預設標簽緩存時間;-1 - 不緩存;-2 - 緩存SQL結果;
一般情況保持預設不需要傳遞。

數據讀取過程
例如以下標簽:
<!--{tag("moduleid=5&condition=status=3&order=addtime desc&pagesize=10")}--> 會被轉換為如下的SQL語句:
SELECT *
FROM destoon_sell
WHERE status=3
ORDER BY addtime DESC
LIMIT 0,10 讀出的數據會保存在 $tags 數組裡
通常情況下不需要寫table=xxx,應該寫moduleid=模塊ID,系統會自動對應模塊的表

數據顯示過程
1、通過標簽模板顯示
傳遞&template=abc給標簽函數,例如:
<!--{tag("moduleid=...&template=abc")}--> 預設的標簽模板保存在模板目錄/tag/目錄里,例如&template=abc將調用模板目錄/tag/abc.htm模板來顯示數據。
如果標簽模板存放於其他目錄,例如def,則傳遞&dir=def&template=abc,系統將調用模板目錄/def/abc.htm模板。

2、直接在模板里迴圈數據
<!--{php $tags=tag("moduleid=...&template=null");}--> 此寫法傳遞標簽模板為null,並且直接返回數據給$tags數組,此時可以直接在模板里迴圈了。
以下為一個完整的示例:
<!--{php $tags=tag("moduleid=...&template=null");}-->
{loop $tags $t}
...
{/loop}
第一種寫法一般用於多次調用的數據,第二種寫法一般用於只調用一次的數據。

常用參數及含義
moduleid
moduleid指模塊ID,可在後臺模塊管理里查詢。對於直接調用模塊的數據,設置正確的模塊ID後,將不需要傳遞table參數,系統會自動獲取。
例如傳遞moduleid=5,系統將識別為調用供應信息,自動設置table參數為sell。
一般情況下,除了擴展模塊里的功能都需要通過moduleid來調用。
table
table指表名,可在後臺資料庫維護里查詢。對於DESTOON系統表,不需要加表的首碼;對於非DESTOON系統表,需要填寫完整的表名,且傳遞prefix參數。
例如對於DESTOON系統表,傳遞table=announce,如果表首碼為destoon_,系統將識別表名為 destoon_announce。
對於非DESTOON系統表,傳遞table=tb_abc&prefix=或者table=abc&prefix=tb_,系統將識別表名為 tb_abc。
fields
fields指查詢的欄位,預設為*。可以傳遞例如 fields=title,addtime,但是一般情況下無需傳遞,DESTOON獨有的標簽緩存機制會自動緩存查詢結果,不必擔心效率問題。
condition
condition指查詢的條件,如果不傳遞,則為1,代表任意條件的數據(此項需瞭解SQL語法)。DESTOON所有模塊遵循統一標準開發,所以很多條件是通用的。
例如 status=3表示正常通過的信息、status=3 and level=1表示級別為1的信息、status=3 and thumb<>''表示有標題圖片的信息等。
order
order指數據的排序方法(此項需瞭解SQL語法)。
例如order=addtime desc表示按添加時間降序排列、order=itemid desc表示按itemid降序排列、order=rand()表示隨機數據等。
pagesize
pagesize指調用數據的數量,如果不傳遞,預設為10。
template
template指指定的標簽模板,如果不傳遞,預設為list,位於模板目錄/tag/list.htm,如果傳遞為null,表示不應用標簽模板。參見上述數據顯示過程。
debug
debug參數用於調試標簽,例如傳遞&debug=1,系統將輸出標簽構造成的SQL語句,以便驗證標簽寫法是否正確,不需要調試的標簽不用加此參數。

數據字典
參考:http://www.destoon.com/doc/develop/56.html

其他常見用法舉例

&和and的區別
&用來分割參數,and是sql語句where後的讀取條件,二者完全不同。

多表聯合查詢
例如查詢會員名為destoon的會員和公司資料,可以使用:
{tag("table=destoon_member m,destoon_company c&prefix=&condition=m.userid=c.userid and m.username='destoon'&template=list-com")}
destoon_member和destoon_company是表的實際名稱(包含表首碼),prefix=表示系統不再自動在表名前加首碼。
通常通過傳遞moduleid可以實現大部分的調用,除非您確認熟悉聯合查詢,否則不推薦使用。
截至目前,系統預設模板里還沒有一個功能需要用到聯合查詢。

控制標題長度
在標簽里傳遞length參數,例如&length=20表示20個字元長度(一個漢字占2個字元),一般情況建議用css隱藏多餘字元(定義height和overflow:hidden)。
傳遞length參數,系統僅對title欄位自動截取,如果需要截取其他欄位,可用dsubstr函數。
例如 {dsubstr($t[company], 20, '...')} 表示截取company欄位為20個字元,截取後,結尾追加...

設置日期顯示格式
可以在標簽里傳遞datetype參數:
1 表示 年;
2 表示 月-日;
3 表示 年-月-日;
4 表示 月-日 時:分;
5 表示 年-月-日 時:分;
6 表示 年-月-日 時:分:秒
也可以在模板里直接使用date函數,例如{date('Y-m-d', $t[addtime])} 表示將時間轉換為 年-月-日 格式
date函數的使用請參閱PHP手冊。

調用某一分類的信息
在標簽里傳遞catid參數,例如&catid=5表示調用分類ID為5的所有信息。
如果調用多個分類,用逗號分隔分類ID,例如 &catid=5,6,7表示調用分類ID為5、6、7的所有信息。
分類調用預設包含子分類的信息,如果不需要包含子分類,可設置&child=0參數。
例如&catid=5&child=0表示只調用分類ID為5的信息,不包括子分類的信息。

調用某一地區的信息
調用地區信息和上述調用分類信息的方法完全相同,將其中的catid換為areaid即可。

顯示信息所在分類
<a href="{$MODULE[$moduleid][linkurl]}{$CATEGORY[$t[catid]][linkurl]}">{$CATEGORY[$t[catid]][catname]}</a> 註意:自V4.0,以上寫法將不可用,需要在標簽里傳遞&showcat=1參數,然後在模板里寫<a href="{$t[caturl]}">{$t[catname]}</a>

控制列數
此項常用於圖片的佈局,可使用cols參數。
例如調用12張圖片,一行顯示4個,共3行,則傳遞&pagesize=12&cols=4
支持cols參數的標簽模板限thumb-table.htm和list-table.htm
其中,thumb-table.htm顯示圖片列表,list-table.htm顯示文字列表
如果新建支持cols的標簽模板或直接迴圈$tags,可參考以上兩個模板的寫法
上述效果可以也可以通過CSS實現,無需使用表格,請自行書寫

顯示文章的簡介
使用{$t[introduce]}變數,如果要截取字數,例如80字元,可使用{dsubstr($t[introduce], 80, '...')}

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Sass提供了許多內置模塊,其中包含有用的函數(以及mixin)。這些模塊可以像任何用戶定義的樣式表一樣使用@use規則載入,它們的函數可以像任何其他模塊成員一樣調用。所有內置模塊URL都以sass開頭:表示它們是sass本身的一部分。 常見函數簡介,更多函數列表可看:https://sass-la ...
  • 引言 領域驅動設計並不是新的架構設計理論,從Eric Evans提出至今已經有十多年曆史。由於微服務架構的興起,DDD常用於指導微服務邊界劃分,並重新廣泛進入軟體研發大眾的視野。DDD的理念及應用普及在國外相對成熟,在國內尚處於初期發展階段。國內的很多社區以及企業組織內部近幾年對於DDD的探討和應用 ...
  • 微服務說起來高大尚,實際擼一遍來試試看,用現在比較常用的微服務框架,Consul和Ocelote做一個Demo,一起來試試吧! 說在前面的話 準備好環境,拉取源代碼,按照每個章節中的【實踐操作】進行操作,即可搭建起來,已經測試通過。 不想把篇幅拉太長,且此文實踐為主,如果對微服務沒有理論基礎,建議先 ...
  • 單例模式是一種創建型設計模式, 讓開發者能夠保證一個類只有一個實例, 並提供一個訪問該實例的全局節點,有助於協調系統整體的行為。 ...
  • 類成員函數指針(member function pointer),是 C++ 語言的一類指針數據類型,用於存儲一個指定類具有給定的形參列表與返回值類型的成員函數的訪問信息。一般我們是不會使用的,都是直接將帶有返回值的函數作為參數或者另存後使用;像函數指針我們一般在“由庫的提供者決定函數調用時機,庫的 ...
  • AOP面向切麵編程 什麼是AOP AOP (Aspect Oriented Programming)意為:面向切麵編程,通過預編譯方式和運行期動態代理實現程式功能的統一維護的一種技術。AOP是OOP的延續,是軟體開發中的一個熱點,也是Spring框架中的一個重要內容,是函數式編程的一種衍生範型。利用 ...
  • 目錄 一.OpenGL 圖像亮度調節 1.原始圖片 2.效果演示 二.OpenGL 圖像亮度調節源碼下載 三.猜你喜歡 零基礎 OpenGL ES 學習路線推薦 : OpenGL ES 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL ES 學習路線推薦 : OpenGL ES 學習目 ...
  • 1.字典的定義 使用{}定義字典,括弧內用逗號分隔開多個key:value,其中value可以是任意類型,但是key必須是不可變類型且不能重覆,是無序的! info=[ ['name','zhang'], ('age',19) ['gender','男'] ] d={} # 第一種方式定義 d=di ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...