CMSware结点列表CMS NODELIST

来自站长百科
跳转至: 导航、​ 搜索

导航:返回上一页

该调用标签可实现结点列表的调用.

本标签对应的系统调用函数为CMS_NODELIST()。

属性 必需 默认值 描述

<CMS action="NODELIST" return="List" Type="" NodeID="" OrderBy="" NodeGUID="" ignore="" Tpl="" Cache="" returnKey="" />

Type -

调用类型

  • Type="sub":调用NodeID下的子结点
  • Type="set":调用自定义的结点.
  • Type="parent": 调用所有父级结点列表
  • Type="brother":调用所有同级(兄)结点列表
  • Type="son" :调用所有子结点列表,等同于“sub”

例如NodeID="5,6,7,8,9",则调用结点id分别为5、6、7、8这 5个结点。

NodeID -

调用结点ID号

  • NodeID="":自动获取NodeID,配合Type="sub"使用
  • NodeID="0":表示根结点 ,配合Type="sub"使用
  • NodeID="8":配合Type="sub"使用
  • NodeID="5,6,7,8,9":配合Type="set"使用。
OrderBy -

排序 一般无需设置

  • 系统默认OrderBy="NodeSort DESC"
  • 字段后面的DESC是指逆序

order="ASC": 正序 order="DESC": 倒序

NodeGUID -

调用结点唯一标识符

  • NodeGUID="com.cmsware":调用结点唯一标识符为“com.cmsware"的结点
  • NodeGUID="all-com.cmsware":调用结点唯一标识符为“com.cmsware"(含所有子结点)的结点

注意:NodeGUID不能和NodeID同时使用,并且NodeGUID优先级高于NodeID。结点唯一标识符建议使用”域名.结点名“的形式以保证唯一性。(对于对外发布共享的结点更需要注意这点)

Ignore -

忽略结点ID,使用“,”分隔。

  • Ignore="8,9":配合Type="sub"使用。
Tpl -

指定调用的子模版

  • Tpl="list_style_1.html": 调用子模版“list_style_1.html”
Cache -

模版中的CMS调用通过使用Cache,可以大幅提升批量更新的效率. 该标签只有门户版可用

  • Cache="1": 特别注意,只有模版公共调用的部分使用Cache 才有效果,比如内容页头部的导航NODELIST调用,或者top10之类的调用,结点首页的page-10分页调用最好不要用Cache, 因为不会提升任何效率.
returnKey -

可以定义内容列表记录返回那些字段,一般列表只需要获得Title即可,而无需返回Content 等字段,使用此属性,可以一定程度上提高更新效能。 该标签只有门户版可用

  • returnKey="Title,Keywords":返回标题和关键词字段


键名 类型 描述

返回2维数组($List)

NodeID int 结点ID
TableID int 结点归属的内容模型ID
NodeName(Name) string 结点名称
NodeURL(URL) string 结点首页URL地址
SubNodeID string 所有子结点的ID串,比如'1%2%8%9%10%11%'
parentNodeID int 父结点ID
Navigation array

结点当前位置的2维数组,你可以遍历这个数组生成结点的当前位置。 例如:

[Navigation] => Array
(
  [1] => Array
            (
                        [NodeID] => 1
                        [Name] => 首页
                        [URL] => http://www.cmsware.net/index.html
)
[2] => Array
            (
                        [NodeID] => 1
                        [Name] => 新闻
                        [URL] => http://www.cmsware.net/news.html
            )

)

例子 1:自动生成子结点导航栏

效果图:

Cmsware157.gif

调用代码:

<!--调用结点ID为2的子结点,忽略结点ID为31和32的结点-->
<CMS action="NODELIST" return="List" Type="sub" NodeID="2" Ignore="31,32" />
<loop name="List" key="key" var="var" >
<a href="[$var.NodeURL]"> [$var.NodeName] </a> |
</loop>

例子 2:自动生成指定结点导航栏

效果图:

Cmsware158.gif

调用代码:

<!--依次调用结点ID为25,26,27,28,29,30的结点-->
<CMS action="NODELIST" return="List" Type="set" NodeID="25,26,27,28,29,30" />
<loop name="List" key="key" var="var" >
<a href="[$var.NodeURL]"> [$var.NodeName] </a> |
</loop>

例子 3:自动生成一级栏目导航栏并根据当前一级栏目自动生成二级栏目导航

效果图:

Cmsware159.jpg

调用代码:

<div id="nav">
<ul>
<CMS action="NODELIST" return="List" Type="sub" NodeID="0" />
<loop name="List" key="key" var="var" >
<if test="$var.NodeGUID=='com.cmsware.demo'">
<li id="sel"><a href="[$var.NodeURL]" title="[$var.NodeName]"><span>[$var.NodeName]</span></a></li>
<else>
<li><a href="[$var.NodeURL]" title="[$var.NodeName]"><span>[$var.NodeName]</span></a></li>
</if>
</loop>
</ul>
</div>
<div id="sub_nav">
<CMS action="NODELIST" return="List" Type="sub" NodeGUID="com.cmsware.demo" />
<loop name="List" key="key" var="var" >
<if test="$key == 0">
<if test="$var.NodeID == $NodeInfo.NodeID">
<a href="[$var.NodeURL]" title="[$var.NodeName]"><B>[$var.NodeName]</B></a>
<else>
<a href="[$var.NodeURL]" title="[$var.NodeName]">[$var.NodeName]</a>
</if>
<else>
<if test="$var.NodeID == $NodeInfo.NodeID">
| <a href="[$var.NodeURL]" title="[$var.NodeName]"><B>[$var.NodeName]</B></a>
<else>
| <a href="[$var.NodeURL]" title="[$var.NodeName]">[$var.NodeName]</a>
</if>
</if>
</loop>
</div>

例子 4:当前结点差异化显示

调用代码:

<CMS action="NODELIST" return="List" Type="set" NodeID="27,28,29,30,31,32,33,34,35,36,37,38" />
<loop name="List" key="key" var="var" >
<if test="$var.NodeID == $NodeInfo.NodeID">
<a href="[$var.NodeURL]"><strong>[$var.NodeName] </strong></a>
<else>
<a href="[$var.NodeURL]">[$var.NodeName] </a>
</if>
</loop>

例子 5:自动生成最后一个栏目不带分隔符的导航栏

说明:生成这类结点列表时最后一个结点名称不带“,”:中国,美国,日本

调用代码:

<CMS action="NODELIST" return="List" Type="sub" NodeID="2" />
<loop name="List" key="key" var="var" start="1">
<if test="$key==sizeof($List)">
[$var.NodeName]
<else>
[$var.NodeName],
</if>
</loop>

例子 6:在内容页生成当前结点的子结点列表

调用代码:

<CMS action="NODELIST" return="List" NodeID="{$NodeInfo.NodeID}" Type="sub" />
<loop name="List" key="key" var="var">
<a href="[$NodeURL]">[$NodeName] </a>
</loop> 



参考来源[ ]