在模板页中获取栏目分类使用channel标签,标签用法:
{zz:channel type="top"} <a href="{$field['url']}">{$field['title']}</a> {/zz:channel}
channel标签输出的是栏目分类,是数据列表,是个循环,所以它是闭合标签。
channel标签有哪些属性?
type(筛选类型,属性值包括top、son、self、find、parent、root、where、ids)
typeid(栏目类型id)
row(要显示数据的条数)
void(数据项别名,默认使用变量field来读取字段信息。而你可以通过该变量定义为其他变量名)
where(可直接写sql语句,一般为type="where"时使用,此操作读取数据库,非缓存!)
orderby(排序,排序有两种类型,一是正序asc,一是倒序desc。一般以创建时间降序排序:orderby="create_time desc"。
注意:orderby属性只在type="where"起作用
)display (可见性,栏目有显示和隐藏属性,display属性一般用来读取已被隐藏的栏目数据(display=0);默认为display=1,即读取显示的栏目数据。)
channel标签比较常用的的几种场景
1、显示网站导航
<ul> {zz:channel type="top"} <li> <a href="{$field['url']}">{$field['title']}</a> </li> {/zz:channel} </ul>
代码分解:
type="top" 是指定读取顶级栏目分类,也就是栏目分类的pid=0的分类。
$field['url'] 是字段,显示该栏目分类的链接地址。
$field['title'] 是字段,显示该栏目分类的标题。
2、显示含有二级导航的导航栏
<ul> {zz:channel type="top"} <li> <a href="{$field['url']}">{$field['title']}</a> <dl> {zz:channel type="son" typeid="$field['id']" void="child"} <dd> <a href="{$child['url']}">{$child['title']}</a> </dd> {/zz:channel} </dl> </li> {/zz:channel} </ul>
代码分解
channel标签可以无限极嵌套
type="top" 是指定读取顶级栏目分类,也就是栏目分类的pid=0的分类。
type="son" 是指定读取某一栏目分类下的下级栏目。所以当你使用type="son"时,你需要指定typeid属性值。
typeid="$field['id']" 是指定上级的id,用来读取该上级id下的子级栏目分类。typeid可以是数字,也可以是变量(正如上方代码一样)。
void="child" 是指定了数据项的别名。因为这里用了标签嵌套,为了区别顶级导航和二级导航,所以用到了数据项别名。
$field['url'] 是字段,显示该栏目分类的链接地址。
$field['title'] 是字段,显示该栏目分类的标题。
$child['url']}同$field['url'] 。
$child['title']}同$field['title'] 。
3、在列表页(article/lists)或者详情页(article/detail)中,显示当前栏目的下级栏目分类
<ul> {zz:channel type="root" } {zz:channel type="son" typeid="$field['id']" void="vo"} <li> <a href="{$vo['url']}">{$vo['title']}</a> </li> {/zz:channel} {/zz:channel} </ul>
代码分解:
type="root" 是指定读取某一栏目的根分类,即最顶级栏目。这里我们没有指定typeid属性的值,是因为系统会默认根据当前页面的栏目id,显示其顶级栏目。此设计,可以满足不同页面,显示的栏目分类不同。当然如果你打算固定显示某一分类下的子栏目,指定其typeid属性即可!
type="son" 是指定读取某一栏目分类下的下级栏目。
typeid="$field['id']" 是最顶级栏目的栏目id,用来读取该顶级id下的子级栏目分类。
void="vo" 是指定了数据项的别名。因为这里用了标签嵌套,为了区别顶级栏目和子级栏目,所以用到了数据项别名。
$vo['url'] 是字段,显示该栏目分类的链接地址。
$vo['title'] 是字段,显示该栏目分类的标题。
4、读取某栏目下的下级栏目分类,但不想全部读取。
<ul>{zz:channel type="son" typeid="84" row="8"} <li> <a href="{$field['url']}">{$field['title']}</a> </li>{/zz:channel} </ul>
代码分解:
type="son" 是指定读取某一栏目分类下的下级栏目。所以配合着type="son",你需要指定typeid属性值。
typeid="84" 是指定上级的id,用来读取该上级id的下级栏目分类。typeid可以是数字,也可以是变量。
$field['url'] 是字段,显示该栏目分类的链接地址。
$field['title'] 是字段,显示该栏目分类的标题。
row="8" 是指只读取8条数据
5、显示当前栏目的同级栏目分类
<ul>{zz:channel type="self" } <li> <a href="{$field['url']}">{$field['title']}</a> </li>{/zz:channel} </ul>
代码分解:
type="self" 是指定读取某一栏目分类下的同级栏目。这里我们没有指定typeid属性的值。系统默认会根据当前页面的栏目id,显示其同级栏目。此设计,可以满足不同页面,显示的栏目分类不同。当然如果你打算固定显示某一分类下的同栏目,指定其typeid属性即可!
6、读取一个或多个指定id的栏目分类
<ul>{zz:channel type="ids" typeid="1,3,8" } <li> <a href="{$field['url']}">{$field['title']}</a> </li>{/zz:channel} </ul>
代码分解:
type="ids" 是读取一个或多个指定id的栏目分类。这里我们需要指定typeid属性的值。
typeid="1,3,8" 是指读取 id=1、id=3、id=8的栏目分类,根据指定的多个栏目id,以
英文逗号
的方式隔开,以获得栏目列表。
说明:typeid可以通过后来“栏目分类”中的栏目列表获得。
channel标签可读取字段明细
字段 | 名称 |
---|---|
id | 主键 |
title | 标题 |
sort | 排序 |
meta_title | seo的网页标题 |
keywords | 关键词 |
description | 描述 |
url | 链接地址 |
create_time | 创建时间 |
update_time | 更新时间 |
icon | 分类图标 |