查看演示
Menu
快速导航

list

list标签是最常用到的标签,可以通过list标签调用任意栏目的信息。标签支持sql查询条件设置,分页、排序、查询信息副表,栏目表等功能。

标签示例

{list catid="1" _limit="10"}
    <li><a href="{$v.titleurl}">{$v.title}</a></li>
{/list}

以上标签是调用栏目id为1栏目的信息,调用条数为10条。排序为默认排序(sort asc,is_top desc,is_good desc,newstime desc)

标签语法要求

标签必须以花括号开始和结尾,并且各字段名之间需要空格,而且标签值必须用双引号不能用单引号。

以下是错误的示例:

//禁止使用单引号
{list catid='1' _limit="10"}
    <li><a href="{$v.titleurl}">{$v.title}</a></li>
{/list}
//字段之间需要有空格
{list catid='1'_limit="10"}
    <li><a href="{$v.titleurl}">{$v.title}</a></li>
{/list}

标签调用说明

标签支持两种参数类型

field="value"

_field="value"

前面是标签名称,后面是标签内容。第二种类型带有下划线,那么他们有什么区别呢?

针对不带下划线的参数(filed="value")这样的应用于查询条件,比如查询city为上海的,可以写做{list catid="" city="上海"}

带下划线的参数叫附件条件,比如查询副表(_data="1"),排序(_order="xxx desc"),栏目表(_cat="1"),栏目副表(_cat_data="1"),分页(_page_on="1")等

循环体

把查询的结果循环输出

变量 字段类型 备注
{$v.xxx} Array 查询数据的结果集
{$v.titleurl} String 标题链接
{$key} Int 数组键名变量名,从0开始,如果_key设置了值,这里变量也要对应起来
{$v.cat} Array 当前信息栏目的信息,需要开启_cat,如果要调用栏目副表也要开启_cat_data

循环嵌套

在实际业务中会用到循环嵌套,比如下面这个先要循环栏目,再把栏目下的信息循环输出就需要用到循环嵌套。

{cat pid="1" _limit="10"}
    {list catid="$v['catid']" _limit="8"}
    <li><a href="{$v.titleurl}">{$v.title}</a></li>
    {/list}
{/cat}

循环变量修改

比如在上面的业务中,如果需要在子循环中调用父循环变量,但是变量都是$v,这里支持修改变量$v

{cat pid="1" _limit="10" _v="v1"}
    {list catid="$v1['catid']" _limit="8"}
    <li>[{$v1.name}]<a href="{$v.titleurl}">{$v.title}</a></li>
    {/list}
{/cat}

可以看到在子循环中使用{$v1.name}就可以获取父循环的变量了。

同样也可以对数组键名变量名修改

_key="key2",这样对应输出的变量就是 $key2

调用条件设置

注意:查询条件中的catid为必填字段,没有cat程序会报错

可以根据指定条件进行信息调用,例如我们要查询catid为1的栏目下所有sex为男的数据

{list catid="1" sex="男"}
    <li><a href="{$v.titleurl}">{$v.title}</a></li>
{/list}

查询性别为男,年龄大于等于20岁的

{list catid="1" sex="男" age>="20"}
    <li><a href="{$v.titleurl}">{$v.title}</a></li>
{/list}

共支持以下几种查询条件

达式 含义 示例
= 等于 sex="男"
<> 不等于 city<>"上海"
> 大于 id>"13"
>= 大于等于 id>="13"
< 小于 id<"13"
<= 小于等于 id<="13"
<in> IN 查询 id<in>"1,2,3"
<not in> 不在IN 查询 id<not in>"1,2,3"
<like> 模糊查询 title<like>"%上海%"
<not like> 不含模糊查询 title<not like>"%上海%"
<between> 区间查询 id<between>"1,8"
<not between> 排队区间查询 id<not between>"1,8"
<regexp> 正则匹配查询 id<regexp>"[0-9]"
<not regexp> 正则(不)匹配查询 id<not regexp>"[0-9]"

附加条件

附件条件用于设置查询数量,排序方式,查询副表等操作。

字段 说明 必填 默认 备注
catid 栏目ID Yes - 支持多个栏目ID,单个栏目id:11,多栏目ID:11,12,13,当为多个栏目的时候不支持_son属性( 查询子栏目)
_debug debug调试 no false debug是用于在开发过程帮助技术查找问题,开启debug会输出所有参数和sql语句
_son 是否查询子栏目信息 No 1 默认查询当前栏目及子栏目,如果关闭请设置为0或者false
_data 是否包含副表 No 0 默认不查询副表
_cat 查询cat表 No 0 是否查询cat表,可在循环体里使用{$v.cat.xxx}调用cat表字段
_cat_data 查询cat_data表 No 0 是否查询cat表,可在循环体里使用{$v.cat.xxx},如同时开启_cat和_cat_data,会自动合并两表数据,最终只需要调用{$v.cat.xxx}即可
_order 按指定字段值排序 No sort asc,is_top desc,is_good desc,newstime desc  
_orderRaw 排序 No    
_group group排列 No    
_limit 查询条数 No 不限  
_having mysql having语法 No    
_join join查询 No    
_field 只针对主表字段 No 主表所有字段  
_key 数组键名变量名 No key 通常在多层循环嵌套时需要修改变量名
_v 数组循环变量名 No v 在循环体里用的如:{$v.title}
_page_on 开启分页 No No 是否开启分布
_page_list_rows 每页显示多少条 No 20 默认每页显示20条
_page_query url额外参数 No 当前所有url参数 默认带上当前url参数
_page_display_var 输出分页变量(用于显示分页的) No page 在对应的地方可以输出{$page|raw }
_page_url_var 传递分页码变量 No p 用于url传递的页码的,当一个页面中有多个分页的时候需要命名不同的变量名

设置排序

默认排序条件为:_order="sort asc,is_top desc,is_good desc,newstime desc" 

按最新时间排序

{list catid="1" _order="newstime desc"}
    <li><a href="{$v.titleurl}">{$v.title}</a></li>
{/list}

查询条数限制

查询10条数据

{list catid="1" _limit="10"}
    <li><a href="{$v.titleurl}">{$v.title}</a></li>
{/list}

查询副表

{list catid="1" _data="1"}
    <li><a href="{$v.titleurl}">{$v.title}</a></li>
{/list}

查询对应的栏目表数据

可以使用{$v.cat.xxx}调用cat表字段

{list catid="1" _cat="1"}
    <li>【栏目名称:{$v.cat.name}】<a href="{$v.titleurl}">{$v.title}</a></li>
{/list}

系统还支持查询对应的栏目副表数据

_cat_data="1"

可在循环体里使用{$v.cat.xxx}调用cat_data表字段

注意:如同时开启_cat和_cat_data,系统会自动合并两表数据,最终只需要调用{$v.cat.xxx}即可

查询指定字段

_field="字段名" //多个字段用,号隔开

默认查询所有字段

注意:查询的字段只针对主表字段,如果要调用副表字段需要开启_data属性将会查询副表所有字段。

开启分页

list标签支持分页,即根据当前查询出来的数据可以按分页来显示,这一功能非常适用于一个页面中有多个分页的需求。

字段 说明 必填 默认 备注
_page_on 开启分页 No No 是否开启分页
_page_list_rows 每页显示多少条 No 20 默认每页显示20条
_page_query url额外参数 No 当前所有url参数 默认带上当前url参数
_page_display_var 输出分页变量(用于显示分页的) No page 在对应的地方可以输出{$page|raw }
_page_url_var 传递分页码变量 No p 用于url传递的页码的,当一个页面中有多个分页的时候需要命名不同的

分页代码示例

{list catid="11" _cat="1" _page_on="1" _page_list_rows="5"}
    <li>[{$v.cat.name}]<a href="{$v.titleurl}">{$v.title}</a></li>
{/list}
{$page|raw }

预览效果

参数为变量

可以在参数里设置为变量

{list catid="1" city="$_GET['city']"}
    <li><a href="{$v.titleurl}">{$v.title}</a></li>
{/list}

我们不推荐在参数里直接调用变量,尤其是调用通过url传递的参数,这非常不安全。

参数注意事项

参数值不能包含双引号,花括号{},否则会与标签冲突。如果特殊需要用到双引号和花括号可以用变量赋值的方式。

比如以下的参数都是无效的,可能会导致程序报错

//不能是花括号
{list catid="1" title="{name}"}
    <li><a href="{$v.titleurl}">{$v.title}</a></li>
{/list}
//不能有双引号
{list catid="1" title="{"name"}"}
    <li><a href="{$v.titleurl}">{$v.title}</a></li>
{/list}

如果一定要有这样的符号可以赋值给一个变量,然后在参数里调用变量,比如:

<?php
$value1='"我两边有双引号"';
$value2="{我两边有花括号}";
?>
{list catid="1" title="$value1" newstext="$value2"}
    <li><a href="{$v.titleurl}">{$v.title}</a></li>
{/list}

代码示例

查询栏目ID为1的大栏目及子栏目里的所有信息

{list catid="1"}
	<li><a href="{$v.titleurl}">{$v.title}</a></li>
{/list}
调用子栏目_son默认为1,上面代码等同于下面代码
{list catid="1" _son="1"}
	<li><a href="{$v.titleurl}">{$v.title}</a></li>
{/list}

仅查询catid为1的栏目(不查询子栏目信息)

//注意,针对附件条件字段的值如果为true或false,会自动转换为bool类型,而不是字符串
{list catid="1" _son="false"}
	<li><a href="{$v.titleurl}">{$v.title}</a></li>
{/list}
//也可以写成_son="0"

查询栏目为4,5,6栏目里的所有信息(注意:当catid的值为字符串的时候不支持子栏目_son属性,即使你设置_son="1"也不生效)

{list catid="4,5,6"}
	<li><a href="{$v.titleurl}">{$v.title}</a></li>
{/list}

查询栏目id为1的大栏目及子栏目信息,并:

设置了以下查询条件:

条件1:信息id不等于5;

附件条件:

条件1:查询副表信息;

条件2:查询栏目主表和副表信息;

条件3:限制查询条数为50条;

条件4,为了节省资源,只查询title,newstext字段

条件5:按时间字段(newstime)倒序

{list catid="1" id<>"5" _data="1" _cat="1" _cat_data="1" limit="50" _field="title,newstext" _order="newstime desc"}
	<li><a href="{$v.titleurl}">{$v.title}</a></li>
{/list}

查询栏目id为1的大栏目及子栏目信息,设置设置分页显示,其中分页每页显示10条

{list catid="1" _page_on="1" _page_list_rows="10"}
	<li><a href="{$v.titleurl}">{$v.title}</a></li>
{/list}
<div>{$page|raw}</div>

查询栏目id为5的大栏目及子栏目信息,设置设置分页显示,其中分页每页显示20条(假设当前页也调用了示例4的分页代码,即一个页面有两个调用分页的list标签)

//这里需要对_page_url_var重命名,否则会出现两个list同时翻页的bug
{list catid="1" _page_on="1" _page_list_rows="10" _page_url_var=="page2"}
	<li><a href="{$v.titleurl}">{$v.title}</a></li>
{/list}
<div>{$page|raw}</div>

循环嵌套,先查询大栏目,再查10条子栏目对应的信息;

{cat pid="1" _v="v1"}
	{list catid="$v1['catid']" _limit="10" _v="v2"}
		<li><a href="{$v2.titleurl}">{$v2.title}</a></li>
	{/list}
{/cat}

按指定字段值排序

<?php
$application_products2=trim($application_products,",");
$orderRawStr="field(id,".$application_products2.")";
$ids=explode(',',$application_products);
?>		
{table _table="cms_family" id<in>"$ids" _orderRaw="$orderRawStr"}
    <a href="{:titleurl($v)}" target="_blank" class="swiper-slide list_txt_list">
        <div class="txt_list_icon"><img src="{$v.thumb}" /></div>
        <div class="txt_list_title">{$v.title}</div>
    </a>
{/table}

快速导航