数字化技能提升教程,数字化时代生存宝典

数字化百科 / 词条 / CMSware内容列表CMS LIST

CMSware内容列表CMS LIST

查看全部词条命名空间:Main

导航:返回上一页


该调用标签可实现各种类型的文章(图文)列表的调用.特别提醒:使用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:简单文章列表调用

效果图:


cmsware144.gif

调用代码:


- [ [$var.NodeName] ]

[@CsubStr($var.Title,0,16)]




例子 2:循环中实现折行显示(1行显示多条),以下是一行显示3条的调用例子

效果图:


cmsware145.gif

调用代码:

















·
[$var.Title]


·
[$var.Title]


·
[$var.Title]


例子3:奇偶行背景不同或色彩不同的调用方法















·
[$var.Title]


·
[$var.Title]




例子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:结点唯一标识符调用

调用代码:




例子11:使调用和结点无关,即同一模版不作修改可以适用于不同结点

调用代码:



- [ [$var.NodeName] ]
[@CsubStr($var.Title,0,16)]




例子 12: 直接调用自定义字段里的选项内容

效果图:


cmsware146.gif

(图一)

cmsware147.gif

(图二)

cmsware148.gif

(图三)

也就是我们可以直接调用 图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的栏目下的内容,先取出一篇有新闻图片的作为焦点新闻使用,然后列出不包含这篇焦点新闻的图文列表

调用代码:


















[@CsubStr($var.Title, 0, 16)]








例子18:内容页中根据发布时间来自动生成“上一篇”“下一篇”内容

示例说明:早于当前发布时间则显示为下一篇,晚于则显示为上一篇


cmsware149.jpg

调用代码:




  • 下一篇:[$var.Title]  @date('Y-m-d H:m:s', $var.PublishDate)





  • 上一篇:[$var.Title]  @date('Y-m-d H:m:s', $var.PublishDate)



  • 分页文章列表

    例子1 :分页文章列表调用

    效果图:


    cmsware150.gif

    调用代码:
















    页次: [$PageInfo.CurrentPage] / [$PageInfo.TotalPage]    每页 [$PageInfo.PageNum]    共
    [$PageInfo.TotalNum]   
    分页:

    [@list_page($PageInfo.TotalPage,$PageInfo.CurrentPage,$PageInfo.URL)]





    自定义文章列表分页导航样式

    思维(CMSware)默认生成的列表分页样式是可以修改的。分页调用返回的“$PageInfo”数组结构如下:


    属性


    描述




    $PageInfo


    $PageInfo.TotalNum
    总记录数


    $PageInfo.TotalPage
    总页数


    $PageInfo.CurrentPage
    当前页次


    $PageInfo.PageNum
    每页记录数


    $PageInfo.URL
    当前页URL


    $PageInfo.PageList
    默认分页导航

    例子2:默认样式

    效果图:


    cmsware151.gif

    调用代码:
















    页次:
    [$PageInfo.CurrentPage]/[$PageInfo.TotalPage]
    每页30[$PageInfo.TotalNum]
    分页:[@list_page( $PageInfo.TotalPage, $PageInfo.CurrentPage, $PageInfo.URL)]





    例子3:自定义样式

    效果图:


    cmsware152.gif

    调用代码:






    align="center">


    页次: 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:图文混排调用

    效果图:


    cmsware153.gif

    调用代码:








    [@CsubStr($var.Title,0,10)]



    [@CsubStr($var.Intro,0,50)]
    [查看]
    [评论]


    例子 2:图文列表调用

    效果图:


    cmsware154.gif

    调用代码:









    [@CsubStr($var.Title,0,10)]


    例子 3:图文组合调用

    效果图:


    cmsware155.gif

    调用代码:




















    ·
    [@CsubStr($var.Title,0,10)]







    [ [$var.NodeName] ]

    [@CsubStr( $var.Title,0,20)]





    例子 4:一行多图组合调用

    效果图:


    cmsware156.jpg

    调用代码:




    <--!例子中是一行两列,因而我们要从列数"td"开始做循环 -->

    <--!start="1"设置循环的起始点,避免有时候版面混乱--& gt;



    <--!循环至列数为2的整数倍时停止这一行的循环,开始下一行 -->

    <--!下一行即下一个循环开始-->


    <--!循环结束-->



    企业标志图片


    [@CsubStr($var.Title,0,16)]


    参考来源

    category:CMSware