CMSware内容列表CMS LIST
导航:返回上一页
该调用标签可实现各种类型的文章(图文)列表的调用.特别提醒:使用AutoMini函数自动缩略图需要php支持GD扩展
本标签对应的系统调用函数为CMS_LIST()。
属性
必需
默认值
描述
NodeID
是
""
调用结点ID
- NodeID="":调用所有结点,此时需要设置TableID
- NodeID="self":自动获取结点ID
- NodeID="1,2,3,4":调用结点id分别为1,2,3,4下的内容
- NodeID="all-10" :调用结点id为10(含所有子结点)下的内容
- NodeID="345":调用单一结点id为345下的内容
- NodeID="0":调用根结点下的内容
- NodeID="{$NodeInfo.NodeID}" :结点ID为变量“ NodeInfo.NodeID”
Num
是
""
调用条数
- Num="": 调用所有内容列表
- Num="10,20": 从第10条以后(11条)开始调用,共20条记录
- Num="page-15":分页调用,每页15条
- Num="20":调用用20条
NodeGUID
否
""
调用结点唯一标识符
- NodeGUID="com.cmsware":调用结点唯一标识符为“com.cmsware"的结点下的内容
- NodeGUID="all-com.cmsware":调用结点唯一标识符为“com.cmsware"(含所有子结点)下的内容
注意:NodeGUID不能和NodeID同时使用,并且NodeGUID优先级高于NodeID。结点唯一标识符建议使用”域名.结点名“的形式以保证唯一性。(对于对外发布共享的结点更需要注意这点)
OrderBy
否
-
排序
一般无需设置
- 系统默认OrderBy="i.Top DESC,i.Sort DESC,i.PublishDate DESC": 按置顶-权重-发布时间排序
- 字段后面的DESC是指逆序,就是大的在前,日期是新的在前。除了你指定置顶排序的外,最新的也在上面
:如果你手工指定OrderBy 参数,就需要自己决定哪些排序字段
:order="ASC": 正序
:order="DESC": 倒序
- Orderby="rand()" :随机调用, 每次在后台刷新这个页面都会显示随机值
- OrderBy="Hits_Total":按照总点击数排序
- OrderBy="Hits_Today":按照今日点击数排序
- OrderBy="Hits_Week":按照本周点击数排序,从周一开始统计
- OrderBy="Hits_Month":按照本月点击数排序
- OrderBy="Hits_Date":按照最新访问时间排序
- OrderBy="CommentNum":按照评论总数排序 。
where
否
-
用于附加额外的查询条件
比如where="c.Photo != "实现了只调用Photo字段不为空的内容记录,可以实现图文调用.这里的" c"用于区别数据表,以免导致岐义:c代表 cmsware_publish_1, co代表cmsware_plugin_base_count,i代表cmsware_content_index.注意:mysql5的用户,因为字段里NULL值的问题,如果要判断某个字段为空值,请用 c.field IS NOT NULL
TableID
否
-
内容模型ID
一般无需设置,系统根据NodeID的值可以自动获TableID
- TableID="1": 调用内容模型ID为1的结点的内容(默认为新闻系统模型)
ignore
否
-
忽略结点ID
- ignore="1,2": 这样是忽略结点ID为1和2的结点
Tpl
否
-
指定调用的子模版
- Tpl="list_style_1.html": 调用子模版“list_style_1.html”
Cache
否
-
模版中的CMS调用通过使用Cache,可以大幅提升批量更新的效率. 该标签只有门户版可用
- Cache="1":设置是否使用缓存,“1”为使用。 特别注意,只有模版公共调用的部分使用Cache才有效果,比如内容页头部的导航NODELIST调用,或者top10之类的调用,结点首页的page-10分页调用最好不要用Cache, 因为不会提升任何效率.
returnKey
否
-
可以定义内容列表记录返回那些字段,一般列表只需要获得Title即可,而无需返回Content 等字段,使用此属性,可以一定程度上提高更新效能。 该标签只有门户版可用
- returnKey="Title,Keywords":返回标题和关键词字段
键名
类型
描述
返回2维数组($List)
IndexID string 内容索引ID
ContentID int 内容ID
NodeID int 归属结点ID
URL string 内容URL地址
PublishDate string 内容发布时间戳
Top int 置顶权重
Sort int 排序权重
Pink int 精华权重
内容模型字段(N) - 根据具体的内容模型返回不同的字段值
普通内容列表
例子 1:简单文章列表调用效果图:

调用代码:
- [ [$var.NodeName] ]
[@CsubStr($var.Title,0,16)]
例子 2:循环中实现折行显示(1行显示多条),以下是一行显示3条的调用例子
效果图:

调用代码:
· [$var.Title] | |
· [$var.Title] | · [$var.Title] |
例子3:奇偶行背景不同或色彩不同的调用方法
例子4:取出最近30天的内容列表
[@CsubStr($var.Title,0,15)]
有时想按内容的发布时间和当前时间比较来判断取出几天内的,或指定的时间段内的列表,因为思维(CMSware)保存在数据库中的发布时间字段PublishDate是按Unix时间戳方式保存的数值,必须利用Mysql数据库提供的Unix时间戳函数 UNIX_TIMESTAMP来返回当前服务器时间戳数值,然后和PublishDate字段做比较,最后我们利用思维(CMSware)调用中的 where参数,给出查询数据库条件语句,从而判断发布时间取回内容(小知识:Unix时间戳是指从'1970-01-01 00:00:00'GMT开始的秒数)
请参考下面的范例
范例1:取发布时间在1天内的条件,改动1即可变天数(意思是发布时间戳比当前时间戳大1*86400秒,即一天)
where="i.PublishDate>=UNIX_TIMESTAMP()-(1*86400)"
范例2:取发布时间在指定时间段内的条件(意思是发布时间戳大于第一个时间并小于第二个时间)
where="(i.PublishDate>=UNIX_TIMESTAMP('2005-07-01') and i.PublishDate>=UNIX_TIMESTAMP('2005-09-30')"
或可以精确到秒
where="(i.PublishDate>=UNIX_TIMESTAMP('2005-07-01 00:00:00') and i.PublishDate>=UNIX_TIMESTAMP('2005-09-30 23:59:59')"
例子 5:精华文章列表调用
调用代码:
- [ [$var.NodeName] ]
[@CsubStr($var.Title,0,16)]
例子 6:置顶文章列表调用
调用代码:
- [ [$var.NodeName] ]
[@CsubStr($var.Title,0,16)]
补充:以下这句是表示调用所有置顶的
以下这句是表示调用所有没置顶的
注: i.Top是指模型的公共字段"置顶", 这个值等于0就表示没置顶,大于0就表示置顶
例子 7:最热文章列表调用
调用代码:
· [ [$var.NodeName] ]
[@CsubStr($var.Title,0,16)]
([$var.Hits_Total])
注:你可以通过修改orderby实现本日最热、本周最热、本月最热以及总最热文章的调用。
- 本日最热:
- 本周最热:
- 本月最热:
- 总最热:
例子 8:最新文章列表调用
调用代码:
· [ [$var.NodeName] ]
[@CsubStr($var.Title,0,16)] ([@date('m-d H:i', $var.PublishDate)])
例子 9:最热评论列表调用
调用代码:
· [$var.Title]([$var.CommentNum])
例子 10:结点唯一标识符调用
调用代码:
- [$var.ContentID] [$var.Title]
例子11:使调用和结点无关,即同一模版不作修改可以适用于不同结点
调用代码:
- [ [$var.NodeName] ]
[@CsubStr($var.Title,0,16)]
例子 12: 直接调用自定义字段里的选项内容
效果图:

(图一)

(图二)

(图三)
也就是我们可以直接调用 图1 里的不同类别的内容
调用代码:
[$var.title]
例子13:模版中调用某个字段的具体值
比如,现在建了5个结点做下载频道(手机游戏、手机图铃、手机软件、PC端软件等等),栏目也是按照这个调用。
在内容模型里有一个“运行环境”字段叫“Environment ”,一个选择列(供选择的值是“SymbianS60;NGAGE;Symbian UIQ;SmartPhone;PocktPC;Palm;Linux;其他”等)。现在想调取比如“手机软件这个结点里所有运行环境是 SmartPhone的内容”或者“TableID=2的所有平台是SmartPhone的内容”
一个字段只有一个值时的调用代码:
例子14:只调用标题多于或等于20字的内容
可以通过在where参数里用mysql的字符串函数来给出取Title字段长度大于20的。比如
... where="CHAR_LENGTH(Title)>=20"
调用代码:
[*]
[@CsubStr($var.Title, 0, 21)] [/list]
例子15:既按门派又按经验高低排列人物名称
输出:
令狐冲:华山派:12000
岳不群:华山派:-38
灭绝师太:峨嵋派:500
小尼姑:峨嵋派:300
如果是先按门派再按经验高低排列人物名称这样子写OrderBy参数:
[$var.renming] : [$var.mengpai] : [$var.jingyan]
例子16:软件站常用的一种调用:软件名称以某个英文字母开头
调用字母"c"开头的代码:
- [$var.SoftName]
例子17:忽略特定的内容的调用
示例说明:调用结点ID为1的栏目下的内容,先取出一篇有新闻图片的作为焦点新闻使用,然后列出不包含这篇焦点新闻的图文列表
调用代码:
|
|
例子18:内容页中根据发布时间来自动生成“上一篇”“下一篇”内容
示例说明:早于当前发布时间则显示为下一篇,晚于则显示为上一篇

调用代码:
下一篇:[$var.Title] @date('Y-m-d H:m:s', $var.PublishDate)
分页文章列表
例子1 :分页文章列表调用效果图:

调用代码:
|
自定义文章列表分页导航样式
思维(CMSware)默认生成的列表分页样式是可以修改的。分页调用返回的“$PageInfo”数组结构如下:
属性
描述
$PageInfo
$PageInfo.TotalNum
总记录数
$PageInfo.TotalPage
总页数
$PageInfo.CurrentPage
当前页次
$PageInfo.PageNum
每页记录数
$PageInfo.URL
当前页URL
$PageInfo.PageList
默认分页导航
例子2:默认样式
效果图:

调用代码:
|
例子3:自定义样式
效果图:

调用代码:
|
| 页次:
color=red>[$PageInfo.CurrentPage]/[$PageInfo.TotalPage] 每页30 共[$PageInfo.TotalNum] 分页:[@wap_Page($PageInfo.TotalPage, $PageInfo.CurrentPage, $PageInfo.URL)] |
这里我们通过一个函数来自定义列表样式,这里我们使用wap_page()函数(定义在setting/cms.ini.php里)来实现.
function wap_page($PageNum,$CurrentPage,$sendVar) {
$PageNum --;
$CurrentPage--;
if($PageNum == || $PageNum == -1)
return false;if($CurrentPage > 0) {
if(($CurrentPage-1) == 0)
$link1 = $sendVar;
else
$link1= str_replace(".","_".($CurrentPage-1).".",$sendVar);
$Page= "上一页
".$Page;
}if ($CurrentPage < $PageNum) {
$link1= str_replace(".","_".($CurrentPage+1).".",$sendVar);
$Page= $Page."下一页
";
}return $Page;
}
图文混排
例子 1:图文混排调用效果图:

调用代码:
[@CsubStr($var.Title,0,10)] |
例子 2:图文列表调用
效果图:

调用代码:
[@CsubStr($var.Title,0,10)]
例子 3:图文组合调用
效果图:

调用代码:
· [@CsubStr($var.Title,0,10)] | |
[ [$var.NodeName] ] [@CsubStr( $var.Title,0,20)] | |
例子 4:一行多图组合调用
效果图:

调用代码:
[@CsubStr($var.Title,0,16)] |