个人工具
名字空间
变换
操作

CMSware-kTemplate-op

来自站长百科
2010年6月7日 (一) 08:18Ahbaybface (讨论 | 贡献)的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转到: 导航, 搜索

导航:返回上一页

说明

该语句为新增语句,用于表达式的运算

格式:<op exp="要运算的表达式"/>

Op语句的功能非常强大,可以用来替换var语句进行复杂变量定义

<var name="hello"value="world" /> 

等同于

<opexp="$hello='world'" /> 

使用Op语句进行复杂变量定义:

<op exp="$hello=Cstrsub($var.Content,1,10,'...').'New!'"/>

例子1:使文章点击次数的初始值不为0

模版里把调用文章点击数的那个字段进行处理,就能得到你要的了。下面的例子是让初始值为1000

调用代码:

<op exp="$my_hits = $Hits_Total +1000" />
[$my_hits] 

例子2:两个非数值的变量连接起来赋给第三个变量

调用代码:

<op exp="$var1 = $var2 . $var3" />

在连接符的后面打上一个空格就可以了

例子3:各种简单应用举例

调用代码:

<op exp="$var=$var+1" />
<op exp="$var++" />
<op exp="$var=($var - 5)/10" />
<op exp="$var=date()" />
<op exp="$var=date('Y-m-d', $info.Time)" />

例子4:某个结点下的新闻调用,按发布月份不同区分开

输出效果:

2005年11月
·新闻111111111
·新闻222222222
·新闻333333333

2005年10月
·新闻111111111
·新闻222222222
·新闻333333333

2005年9月
·新闻111111111
·新闻222222222
·新闻333333333

调用代码:

<!--按月归档列表开始-->
<ul>
<cms action="LIST" return="List" NodeID="self" num="100" orderby="i.PublishDate DESC" />
<op exp="$lastmonth='' " /> <!--初始化上一条的年月值为空-->
<loop name="List" var="var" key="key"> <!--循环开始-->
<op exp="$currentmonth=date('Y年m月',$var.PublishDate)" /> <!--取出当前条年月值-->
<if test="$currentmonth != $lastmonth"> <!--如果当前和上一条不同,开始新年月段标识显示-->
<br /><strong>[$currentmonth]</strong><br />
</if>
<li>[$var.Title]</li> <!--显示文章标题链接-->
<op exp="$lastmonth=$currentmonth " /> <!--让上一条年月值变量等于当前条年月值-->
</loop> <!--循环结束-->
</ul><!--按月归档列表结束-->

补充说明:

如果是要按日的,就修改

date('Y年m月',$var.PublishDate)

改为

date('Y年m月d日',$var.PublishDate)

就可以了'

例子5:自定义内容模型中计算某字段平均值应用

说明:

在制作系统模版的时候可能会用到需要计算某个字段的平均值,或者加减值!

示例:

甲班级有58人,乙班机有67人,丙班级中有98人,求这年纪3个人平均每班有多少人。

定义内容模型:(TableID=3)(NodeID=2)

(1)字段

班机名称[$Name],班机人数[$Num]

调用代码:

<CMS action="LIST" return="List" NodeID="2" Num="10" />
<LOOP name="List" var="var" key="key" start="1"> [*]序号:[$key] - 班机名称:[$var.Name] - 班机人数:[$var.Num]
<op exp="$Sum=($Sum)+($var.Num)">
<!--这条OP设置将$var.Num进行汇总-->
</LOOP>
本年级每班平均人数为:<op exp="$Pj=($Sum)/($key)">[$Pj]

例子6:给每个关键字都加上搜索链接

比如一篇品牌服装发布会的文章,为其设置“品牌”“服装”和“发布会”3个关键字。

我想在文章标题上加上:

本文关键字:品牌,服装,发布会

关键字自动加上搜索链接

Cmsware166.jpg

调用代码:

<op exp="$keyword_links = explode(',',$Keywords)" />
本文相关关键字:
<LOOP name="keyword_links" var="keyword" key="key" start="1">
<a href="[$PUBLISH_URL]search.php?o=search&TableID=1&Field=Content&Keywords=[$keyword]" target="_blank">
<if test="$key==sizeof($keyword_links)">
[$keyword]</a>
<else>
[$keyword]</a> |
</if>
</LOOP>

注意;后台录入的各个关键字之间是用“,”隔开的,即是“品牌,服装,发布会”这么录入的。也可以直接把这段写成一个函数,放进cms.ini.php中,然后用[@func($keywords)]的方法调用

例子7:使变量ID递增

比如,我要实现下述调用

<script>
var autourl=new Array()
autourl[1]="http://1.lonmo.com"
autourl[2]="http://2.lonmo.com"
autourl[3]="http://3.lonmo.com"
autourl[4]="http://4.lonmo.com"
autourl[5]="http://5.lonmo.com"
autourl[6]="http://6.lonmo.com"
</script>

调用代码:

如果是在调用里的,可以这样

<loop name="List" var="var" key="key" start="1" >
<li>[$key] </li>
</loop>

独立于某个调用,可以这样

<op exp="$abc=1" />
[$abc]
<op exp="$abc++" /> 



参考来源

留言