[TOC]
## 欄目標簽
用于調用欄目管理的數據
## 格式示例
~~~
// 獲取頂級菜單欄目
{hkcms:channel type="top" where="ismenu=1"}
標題:{$item.title}
{/hkcms:channel}
~~~
<blockquote class="danger"><p>2.1.220504_202205201800版本起,新增ismenu屬性,如下</p></blockquote>
~~~
// 獲取頂級菜單欄目、顯示導航欄目菜單
{hkcms:channel type="top" ismenu="1"}
標題:{$item.title}
{/hkcms:channel}
~~~
## 參數
| 參數名稱 | 可選值 | 默認值 | 是否必填 | 支持版本 | 說明 |
| --- | --- | --- | --- | --- |--- |
| name | 欄目ID或變量 | - | type值為peer或son時必填 | - | 欄目ID,可以傳入變量或指定ID,2.2.3.220920版本起支持多個id,詳情見下面參數說明 |
| type | son<br>peer<br>top <br>selftop<br>selfson| - | - | - | 指定獲取的欄目層級<br>son-獲取下級欄目<br>peer-表示同級欄目<br>top-表示頂級欄目<br>selftop獲取頂級欄目的下的第一級全部欄目<br>selfson獲取當前欄目的下級欄目,若下級欄目不存在依然返回當前同級欄目 |
| num | 例子:<br>10<br>或者<br>10,12 | - | - | - | 限制結果數量<br>例如:<br>10 : 表示獲取10條<br>10,12 : 表從第10開始的12條記錄 |
| model | 模型表ID | - | - | - | 指定模型ID |
| where | - | - | - | - | 數據庫查詢條件 |
| order | - | weigh desc | - | - | 排序方式, 格式為 order="字段名稱 desc" 其中desc是倒序,asc是升序 |
| id | - | $item | - | - | 指定循環里的變量名,例如id='obj',模板調用如:{$item.title} 變成 {$obj.title} |
| empty | - | - | - | - | 為空的時候輸出提示,支持傳入html |
| currentstyle | - | active | - | - | css class 類名,用于定義當前選中狀態樣式 |
| cache | - | 3600秒 | - | - | 緩存時間,默認3600秒 |
| istotal | 1 | - | - | - | 統計文檔數量 |
| ismenu | 1 | - | - | >=v2.1.220504 | 顯示導航欄目菜單 |
| lang | - | - | - | >=v2.2.1.20220603 | 多語言情況下獲取指定語言的欄目 |
| mod | - | - | - | >=v2.2.1.20220603 | 調用:{$mod}<br>用于控制偶數輸出、換行等,更多查看下面的示例 |
| key | - | - | - | >=v2.2.1.20220603 | 指定循環值變量名,默認為$i,從1開始計數每循環一次+1 |
## 參數說明
- `name` 參數通常用于查單條特定的欄目數據。如果type值為peer或son時該值必填,支持變量或數字id
獲取欄目ID為3的記錄
~~~
{hkcms:channel name="3"}
標題:{$item.title} <br>
{/hkcms:channel}
~~~
根據變量來獲取欄目,假設在內容詳情頁有`$Info`變量,$Info.categroy.id 是當前文章所屬ID,那么我們可以通過這個id來獲取欄目同級的欄目代碼如下:
~~~
// 同級
{hkcms:channel name="$Info.category.id" type="peer"}
標題:{$item.title} <br>
{/hkcms:channel}
~~~
或者使用變量可以獲取當前欄目的上級欄目信息
~~~
// $Cate 是當前 欄目的信息該變量在欄目首頁、列表頁、詳情頁、單頁都存在
{hkcms:channel name="$Cate.parent_id"}
欄目標題:{$item.title}
{/hkcms:channel}
~~~
2.2.3.220920版本起支持多個id獲取欄目。如下,多個欄目ID逗號分隔開
```
{hkcms:channel name="1,3,7"}
標題:{$item.title} <br>
{/hkcms:channel}
```
- `type`屬性用于獲取的欄目層級,如下
1.`son` 獲取下級欄目,需要結合name使用
~~~
// 獲取欄目ID為1的所有下級菜單
{hkcms:channel name="1" type="son" }
標題:{$item.title} <br>
{/hkcms:channel}
~~~
2.`peer` 表示同級欄目,需要結合name使用
~~~
// 獲取欄目ID為1的所有同級菜單
{hkcms:channel name="1" type="peer" }
標題:{$item.title} <br>
{/hkcms:channel}
~~~
3.`top` 表示頂級欄目
~~~
// 獲取頂級菜單
{hkcms:channel type="top" ismenu="1" }
標題:{$item.title} <br>
{/hkcms:channel}
~~~
- `num` 限制結果數量。例如獲取10條欄目那么num="10",當然也支持從第幾條開始,例如num="4,2" 表示從第4條獲取兩條那就是第4條、第五條。
~~~
// 獲取頂級欄目從第二條開始獲取兩條
{hkcms:channel type="top" ismenu="1" num="2,3"}
標題:{$item.title} <br>
{/hkcms:channel}
~~~
- `model`模型id,模型ID在模型管理里面可以看到
~~~
// 獲取模型id=1的所有欄目
{hkcms:channel model="1"}
標題:{$item.title} <br>
{/hkcms:channel}
~~~
~~~
// 使用變量的形式獲取頂級欄目
{hkcms:channel model="$Info.model_id" type="top"}
標題:{$item.title} <br>
{/hkcms:channel}
~~~
- `where` 數據庫查詢條件,語法跟SQL where基本相同。格式:where="字段名 = 1" ,支持傳入變量
~~~
{// 獲取模型id為1的記錄,where條件意思是只顯示閱讀量大于1的記錄}
{hkcms:content model="1" where="views > 1"}
標題:{$item.title}
描述:{$item.description}
{/hkcms:content}
~~~
**sql語法可參考:https://www.w3school.com.cn/sql/sql_where.asp**
**更多查詢表達式參考:http://www.hmoore.net/manual/thinkphp6_0/1037537**
<br />
- `order` 用于字段排序例如上面的代碼,格式為order="字段名 asc,字段名2 desc",其中`asc` 表示正序 `desc` 表示倒序,多個排序字段使用逗號分隔開
~~~
// 多個字段排序使用逗號分隔開
{hkcms:channel name="21" type="son" order="weigh asc" }
標題:{$item.title} <br>
{/hkcms:channel}
~~~
- ` id` 用于改變循環變量默認是$item,例如改成$vo則寫成id="vo"無需加$。常用于多個標簽嵌套時使用循環變量而不受影響
~~~
{hkcms:channel name="21" type="son" id="vo" }
標題:{$vo.title} <br>
{/hkcms:channel}
~~~
- `empty`為空提示標簽,不支持傳入HTML,但可以傳入變量
~~~
{hkcms:channel name="111" type="son" empty="沒有更多數據了" }
標題:{$item.title} <br>
{/hkcms:channel}
~~~
傳入變量的形式使用html
~~~
{php}$empty = '<p align="center">- 沒有更多數據了 -</p>';{/php}
{hkcms:channel name="111" type="son" empty="$empty"}
{php}dump($item){/php}
{/hkcms:channel}
~~~
- `currentstyle` 當前選中欄目的class樣式用于字體高亮等自定義樣式、值默認是active
~~~
// currentstyle 默認是active,你可以在這指定其他的class
{hkcms:channel type="top" ismenu="1" currentstyle="active"}
// 例如:如果當前是新聞中心欄目那么只有新聞中心欄目這條記錄有 active 類
<li class="nav-item dropdown {$item.currentstyle}">
<a class="nav-link dropdown-toggle" href="{$item.url}" target="{$item.target}">{$item.title} <i class="fa fa-angle-down"></i></a>
</li>
{/hkcms:channel}
~~~
- `cache` 設置緩存時間單位是秒,系統默認緩存是3600秒,設置成一天:cache="86400"
- `istotal` 開啟文檔數量統計,istotal="1"開啟
~~~
{hkcms:channel name="9" type="son" istotal="1" }
標題:{$item.title} <br>
數量:{$item.total} <br>
{/hkcms:channel}
~~~
- `ismenu` 顯示導航菜單,值為ismenu="1"。在后臺欄目管理頁面可以控制導航菜單的顯示。
~~~
// 獲取頂級菜單欄目
{hkcms:channel type="top" ismenu="1"}
標題:{$item.title}
{/hkcms:channel}
~~~
- `lang` 指定獲取特定語言的欄目,需要開啟內容多語言才有效
~~~
// lang="en" 只獲取英文不管語言怎么切換都是英文
{hkcms:channel name="9" lang="en" }
標題:{$item.title} <br>
{/hkcms:channel}
~~~
- `mod`屬性用于控制一定記錄的換行、或增加hr或奇數偶數等標簽處理,例如下面的例子每輸出5個欄目增加個hr標簽
~~~
{hkcms:channel type="top" mod="5"}
<p>標題:{$item.title} <br></p>
// $mod的值是從1開始的
{if $mod==5}
<hr>
{/if}
{/hkcms:channel}
~~~
mod輸出奇數偶數記錄,設mod="2",標簽內會有$mod變量,里面的值每次計算到2的時候重新計數例如(1,2,1,2,1,2)
~~~
{hkcms:channel type="top" mod="2"}
{if $mod==2}
偶數:{$item.title} <br>
{else /}
奇數:{$item.title} <br>
{/if}
{/hkcms:channel}
~~~
- `key `參數用于指定循環$i的變量,只有標簽嵌套時可能需要重新命名$key
~~~
{hkcms:channel type="top"}
// $i 是從1開始的。
<p>序號{$i}: <br></p>
<p>標題:{$item.title} <br></p>
{/hkcms:channel}
~~~
更改循環變量示例
~~~
{hkcms:channel type="top" key="ii"}
// key="j" 表示這個標簽的循環值是{$j},這樣就可以避免嵌套的標簽依然可以獲取外層的標簽$ii變量。
{hkcms:channel name="$item['id']" id="son" type="son" key="j" }
<p>外層的循環值:{$ii} <br></p>
<p>里面這個標簽的$值:{$j} <br></p>
<p>標題:{$son.title} <br></p>
{/hkcms:channel}
{/hkcms:channel}
~~~
## 示例
- 多級嵌套獲取導航欄的欄目數據
~~~
// type = top, 獲取的是頂級欄目。ismenu=1獲取導航,在欄目管理里面可以控制導航顯示
{hkcms:channel type="top" ismenu="1"}
// $item 默認的循環變量名,{if}{/if}這是if語句,下面是判斷是不是有下級,有下級就顯示下拉列表。
<li class="{$item.currentstyle} nav-item {if $item.has_child}dropdown{/if}">
<a href="{$item.url}" target="{$item.target}" class="nav-link" title="{$item.title}">{$item.title}</a>
{if $item.has_child}
<ul class="dropdown-menu mt-0">
// 獲取下級欄目,id="son"表示里面的循環變量由默認的$item變成$son,在標簽嵌套中這樣使用不會影響上級的$item變量
{hkcms:channel name="$item['id']" id="son" type="son" ismenu="1"}
<a href="{$son.url}" class="dropdown-item {$son.currentstyle} " title="{$son.title}">{$son.title}</a>
{/hkcms:channel}
</ul>
{/if}
</li>
{/hkcms:channel}
~~~
- 獲取同級欄目示例
~~~
// $Cate是當前欄目的數據,該變量在列表頁、內容頁、欄目首頁模板存在
{hkcms:channel name="$Cate.id" type="peer" ismenu="1" currentstyle="btn-primary"}
<a href="{$item.url}" class="btn {$item.currentstyle}">{$item.title}</a>
{/hkcms:channel}
~~~
- 獲取指定欄目、以及不存在時顯示:暫無數據
~~~
{//獲取單條欄目信息}
{hkcms:channel name="9" empty="暫無數據"}
<h1 class="title">欄目標題:{$item.title}</h1>
<p class="lead">欄目描述:{$item.seo_desc}</p>
{/hkcms:channel}
~~~
- currentstyle示例:獲取當前欄目高亮
效果如下

表示當前欄目是行業資訊,注意:你需要寫好定義好class樣式。代碼示例
~~~
// 顯示高亮的class,默認是active
{hkcms:channel type="top" ismenu="1" currentstyle="active" }
// 只需要在class里面寫上{$item.currentstyle},如果是當前欄目會有class="active"
<a class="{$item.currentstyle}" >{$item.title}</a>
{/hkcms:channel}
~~~
- 排序與統計文檔數量
~~~
// 排序 desc-倒序,asc-升序。istotal=1 開啟統計文檔數量
{hkcms:channel name="10" type="son" cache="7200" order="update_time desc" istotal="1"}
<a href="{$item.url}" class="btn {$item.currentstyle}">{$item.title} 文檔數:{$item.total}</a>
{/hkcms:channel}
~~~
## 數據字典
注意:其中`$item`變量根據channel標簽id參數影響,默認是:$item
| 字段名 | 說明 | 調用方式 |
| --- | --- | --- |
| id | 欄目ID | {$item.id} |
| model_id | 模型ID | {$item.model_id} |
| parent_id | 所屬父級欄目ID | {$item.parent_id } |
| type | 欄目類型,link: 外部鏈接, list:列表欄目,category:欄目首頁 | {$item.type} |
| name | 欄目英文名稱 |{$item.name} |
| title | 欄目中文名稱|{$item.title} |
| url | 鏈接地址 |{$item.url} |
| fullurl | 帶域名的URL地址 |{$item.fullurl} |
| image | 欄目縮略圖 |{$item.image} |
| seo_title |seo標題 |{$item.seo_title} |
| seo_keywords |seo關鍵字 |{$item.seo_keywords} |
| seo_desc |seo描述 |{$item.seo_desc} |
| ismenu | 是否是導航菜單,1-導航菜單,0-不是 |{$item.ismenu} |
| target | a標簽跳轉方式,用于target="_blank"屬性,有_blank,_self等 |{$item.target} |
| weigh | 排序 |{$item.weigh} |
| has_child | true 有下級,false 沒有下級 |{$item.has_child} |
| son_child | 數組。擁有的下級欄目ID |{$item.son_child} |
| currentstyle |當前選中class,用于CSS文字高亮 |{$item.currentstyle} |
| parent_url | 上級欄目的URL地址 |{$item.parent_url} |
| lang | 語言標識 |{$item.lang} |
| num | 列表分頁大小 |{$item.num} |
- 簡介
- 下載與安裝配置
- 下載
- 虛擬主機安裝
- 虛擬主機必讀
- 百度云虛擬主機
- 創業云虛擬主機
- Linux下寶塔安裝
- 寶塔一鍵部署
- Windows下寶塔安裝
- phpEnv下安裝
- phpStudy下安裝
- 偽靜態(url重寫)
- 安裝系統
- 調試模式與env文件
- 重新安裝與安裝文件說明
- 后臺使用幫助
- 后臺入口文件
- 首頁面板
- 配置中心
- 站點配置
- 郵件配置
- 附件配置
- 應用中心配置
- 前臺URL規則配置
- SEO設置
- SEO設置-靜態生成
- 文檔屬性
- 站點模塊
- V2.2.2版本 -
- V2.2.3版本 +
- 模型管理
- 欄目管理
- 字段類型與組件
- 前言
- 前端組件
- 動態下拉(selectpage)
- 驗證規則
- text 單行文本
- textarea 多行文本
- radio 單選
- checkbox 復選
- select 下拉列表
- selects下拉列表(多)
- selectpage 動態下拉
- editor編輯器
- image圖片
- images圖片(多)
- number數字
- date日期
- datetime日期和時間
- downfile文件上傳
- downfiles文件上傳(多)
- array 數組(鍵值對)
- 內容管理
- 自定義URL
- 多語言
- 界面多語言
- 內容多語言
- 多語言URL地址
- 附件管理
- 應用中心
- 標簽語法
- 標簽使用必讀
- 列表標簽
- content 內容列表標簽
- contentpage 內容列表分頁
- wfpage 瀑布流分頁
- filter 篩選標簽
- order 排序標簽
- 內容標簽
- guestbook 留言(表單)標簽(廢棄)
- form 表單標簽
- pre 上一篇標簽
- next 下一篇標簽
- prenext 上一篇下一篇(高級)標簽
- fileinfo 獲取附件信息(文件下載)
- 內容分頁
- raw 格式化編輯器文本(即將廢棄)
- 全局標簽
- seo 標簽
- channel 欄目標簽
- arcone 獲取單條文檔
- breadcrumb 面包屑導航標簽
- adv 站點模塊標簽
- date 日期格式化標簽
- substr字符(標題)截取標簽
- volist 循環標簽
- language 獲取語言列表標簽
- lang 特定語言下顯示內容標簽
- query 查詢數據庫內容
- include 導入模板文件標簽
- 原生PHP與php標簽
- map生成位置地圖
- thumb 生成縮略圖
- addons 插件檢測
- 標簽管理
- taglist標簽(獲取標簽列表)
- tagarclist根據標簽獲取文章內容列表
- 導入標簽
- 模板開發
- 1. 創建模板
- 2. 模板目錄結構
- 3. 模板描述文件(重要) info.ini
- 4. 變量輸出格式
- 4. 模板變量
- 5. 獲取站點配置
- 6. 模板界面多語言
- 7. 模板靜態目錄及調用靜態文件
- 8. 模板定義插件事件
- 9. 模板搜索頁
- 10. 模板配置JSON
- 11. 導入演示數據
- 12. 卸載刪除演示數據
- 13. 模板文件打包
- 14. 整站源碼打包
- 插件開發
- 1. 創建插件
- 2. 目錄結構
- 3. 插件名稱類
- 4. 插件信息(info.ini)
- 5. 插件事件
- 6. 配置文件
- 7. install 安裝目錄
- 8. 創建菜單
- 9. 插件控制器
- 10. 插件視圖
- 10-1 插件主題化
- 11. 插件模型
- 12. 模型事件(已廢棄)
- 13. 插件內置函數
- 13-1 插件函數庫
- 14. 插件多語言
- 15. 插件中間件
- 16. 插件路由
- 17. 插件驗證器
- 18. 標簽庫
- 19. 第三方類庫
- 20. 數據庫文件導入
- 插件打包
- 后臺前端使用幫助
- 二次開發幫助(更新中)
- 后臺前端開發幫助
- 路由(鏈接地址、訪問規則)
- URL訪問
- 路由定義
- URL生成
- 會員管理
- 前臺限制頁面登錄或權限控制
- 附錄
- 數據字典
- 助手函數庫
- API接口