首先我们看一下这个标签的说明:
标签名称: {$YN(Condition, Fir, Sec)}
功 能: 条件判断函数,可以根据条件运算参数的运算来输出相应的结果
参数说明:
condition:条件运算参数,根据运行结果,如果是真则输出Fir,否则输出Sec
Fir: 条件成立的时候输出Fir的内容
Sec : 条件不成立的时候输出Sec的内容
这个标签的参数有三个,第一个是条件判断参数,条件成立的时候输出第一个参数,条件不成立的时候输出第二个参数。
熟悉C语言的朋友可能马上会想到三元运算符a?b:c ,这个标签工作的原理基本上和它是一样的。
下面我们来看一下,如何通过在自定义标签中通过运用这个条件判断函数来实现以下几个功能
1、判断一个文章是否是推荐文章,是的话在前面加上 [推荐文章]
2、判断文章是内部链接还是转向链接,取出正确的地址。
3、奇偶行输出不同样式
4、文章头条输出跟其他不同的样式
以上四点分别依据这个标签的四个基本判断功能进行实现
1、直接输入1,true为真,0,false为假
2、判断字符串是否相等
3、对数字求余
4、判断算术表达式是否成立
首先我们添加一个自定义动态标签:
标签名称: {MY_TestYN}
SQL语句: Select top 10 * from PE_Article where Deleted={$PE_False} and status=3
标签内容:(标签内容我们用最简单的一行一个标题输出)
<table> {Loop}{Infobegin} <tr><td>{$Field(3,Text,0,0,0)}</td></tr> {Infoend}{/Loop} </table>
输出的效果如下:
此主题相关图片如下:
现在,我们在这个标签的基础上实现上面说的四个功能
1.判断一个文章是否是推荐文章,是的话在前面加上 『推荐文章』
分析:如果一个文章设置成推荐,那么在ac数据库的Elite字段中储存为True,Sql数据库中储存为1,对于这两个特殊值可以直接判断。
可以做如下判断:{$YN({$Field(17,Text,0,0,0)},『推荐文章』,)}
把Elite字段然后按照文本方式输出,也就是{$Field(17,Text,0,0,0)},如果一个文章是推荐的话,则输出“『推荐文章』”,不是推荐的话输出空,注意最后面的逗号之后没有内容,此逗号不可省略。
我们把这个条件加入到原来的标签内容中
<table> {Loop}{Infobegin} <tr><td>{$YN({$Field(17,Text,0,0,0)},『推荐文章』,)} {$Field(3,Text,0,0,0)}</td></tr> {Infoend}{/Loop} </table>
然后刷新就可以看到效果。
此主题相关图片如下:
2.判断文章是内部链接还是转向链接,取出正确的地址。
分析:文章是不是外部链接可以通过LinkUrl这个字段是否为空来判断,如果我们填写了外部链接地址,那么这个字段存储该外部链接地址,如果我们添加的是内部文章,那么这个地址是空。
可以做如下判断: {$YN("{$Field(9,Text,0,0,0)}"="",{$Field(0,GetUrl,Article,1)},{$Field(9,Text,0,0,0)})}
三个参数分别如下
1、"{$Field(9,Text,0,0,0)}"="" 这个判断外部链接是否为空
2、{$Field(0,GetUrl,Article,1)} 外部链接为空的时候输出内部链接地址
3、{$Field(9,Text,0,0,0)} 外部链接不为空的时候输出外部链接地址.
我们给标题加上地址.
标签内容改为
<table> {Loop}{Infobegin} <tr><td><a href={$YN("{$Field(9,Text,0,0,0)}"="",{$Field(0,GetUrl,Article,1)},{$Field(9,Text,0,0,0)})}>{$Field(3,Text,0,0,0)}</a></td></tr> {Infoend}{/Loop} </table> 效果如下
http://easylive.net.cn/showpage.asp?id=11
3.奇偶行输出不同样式
分析:可以用求余函数来实现这个功能,自定义标签有个内置的标签{$AutoID},这个为1,2,3这样的序号我们可以对这个标签求余来实现奇偶行的样式
判断语句: {$YN({$AutoID}%2=0,『奇数行』,『偶数行』,)}
我们把标签内容改为:
<table> {Loop}{Infobegin} <tr><td>{$YN({$AutoID}%2=0,『奇数行』,『偶数行』,)}{$Field(3,Text,0,0,0)}</td></tr> {Infoend}{/Loop} </table>
显示效果如下
此主题相关图片如下:
4.文章头条输出跟其他不同的样式
分析:这个跟上面的例子类似.我们可以通过判断{$AutoID}是否为1来确定是否是头条.比如我们给头条加粗
标签内容
<table> {Loop}{Infobegin} <tr><td>{$YN({$AutoID}=1,<FONT color=#ff0000 size=3><strong>,)}{$Field(3,Text,0,0,0)}{$YN({$AutoID}=1,</strong></Font>,)}</td></tr> {Infoend}{/Loop} </table>
显示效果:
此主题相关图片如下:
以上讲解了这个标签基本原理以及简单几个示例,我们可以在掌握了其原理的情况下灵活运用这个标签,也就可以很方便的实现我们想要实现的功能 |