开发教程

[模板教程]HulaCWMS模板制作之channel标签

  • 1038 Views

在模板页中获取栏目分类使用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_titleseo的网页标题
keywords关键词
description描述
url链接地址
create_time创建时间
update_time更新时间
icon分类图标