一、改进函数标签参数传递的算法,兼容带有逗号的参数。
我们先来看一个比较常见的问题:
例子:用自定义函数标签取出指定频道的几个特定栏目的文章
Sql语句:
Select * from PE_Article where ChannelID=1 and ClassID in ({input(0)})
比如我们需要取出栏目ID是1、2、3的栏目文章,我们在插入标签的时候填写参数1,2,3。可是标签解析出来后,我们可以看到其实取出的只是栏目为1的文章。也就是说实际标签在解析的时候,SQL语句并不是我们期望的
Select * from PE_Article where ChannelID=1 and ClassID in (1,2,3)
而是
Select * from PE_Article where ChannelID=1 and ClassID in (1)
原因是系统是用逗号作为分隔符来区别参数的。如果参数带逗号,传递给系统之后会跟该函数标签的其他参数混淆在一起,从而无法正确取得参数。针对这种情况,,SiteWeaver™ 6.6版本对原来的算法进行了一些改进:遇到有带逗号的参数时,我们可以用中括号括起,以便和其他参数区分。比如{$MY_函数标签([1,2,3],4,5)}这样的写法表示这个标签有三个参数,第一个是1,2,3,第二个是4,第三个是5。这样,我们就可以轻松实现开始我们讲解的例子的功能了。
二、增加自定义函数标签SQL语句的兼容性,兼容取出全部频道、栏目的情况。
我们在使用系统标签的时候,经常会有类似这样的调用,针对频道ID的参数设置成具体数字的话则调用具体的频道ID数据。如果设置成0的话则调用全部同类频道的数据,针对栏目ID的参数也类似,设置成0 的话为调用所有栏目。如果我们在自定义标签中也想实现类似的功能,则比较困难,因为自定义标签不会自定识别类似ChannelID=0这样的语句。
针对这种情况,,SiteWeaver™ 6.6版本增加了对Sql语句的兼容判断,下面用一个例子说明。
例子:取出几个指定频道的几个特定栏目内的文章
SQL语句:
Select * from PE_Article where ChannelID={input(0)} and ClassID in ({input(1)})
1、第一个参数填写1,第二个参数填写2
这个sql语句是取出频道ID是1,栏目ID是2的所有文章
2、第一个参数填写1,第二个参数填写[1,2,3]
这个sql语句是取出频道ID是1,栏目ID是1,2,3的所有文章
3、第一个参数填写0,第二个参数填写[1,2,3]
这个sql语句是栏目ID是1,2,3的所有文章(跟2的区别是就算频道ID不是1的文章也会取出)
4、第一个参数填写1,第二个参数填写0
这个sql语句是取出频道ID是1的所有文章
5、第一个参数填写0,第二个参数填写0
这个sql语句是取出文章频道的所有文章
通过以上几个例子我们可以看到:如果是Sql语句中出现了ChannelID=0,ClassID=0,ChannelID in (0),ClassID in (0)的情况,则该条件解析成不限制。
三、增强动态标签SQL语句的容错功能。
SiteWeaver™ 6.5 版本在处理比较复杂的sql语句时,有时候会报错(在查询分析器里面可以正常执行的情况下)。下面举个例子说明。
例子:取出文章内容页作者其他文章
SQL语句:
Select * from PE_Article where Input = (select Inputer from PE_Article where ArticleID={input(0)})
括号内是取出指定文章的作者,然后根据这个作者名取出该作者的全部文章。可是我们进入标签编辑第二步的时候,会提示无效的SQL语句,而我们在查询分析器里面执行是可以正常运行的。SiteWeaver™ 6.6 版针对这种情况,对添加标签的SQL语句的算法进行了一些改进,在Sql语句的书写上更加自由,基本上只要sql语句的语法没有错误就可以运行。
四、增加修改函数标签时可以修改参数的功能。
在SiteWeaver™ 6.5版中,函数标签添加完成后并没有可以进行参数修改的功能,给标签修改带来了一些不便。SiteWeaver™ 6.6版已经加入了修改标签参数的功能。操作方法基本上跟添加标签时添加参数方法一致。相信熟悉动易的朋友使用起来会得心应手,如下图:
五、调整了数据库保存标签参数的字段长度,避免参数过多导致标签无法添加成功。
当我们制作比较复杂的标签时,一般需要设置比较多的参数。当参数的数量较多的时候(如10个左右),就有可能出现添加标签时提示标签保存成功,但实际上没有添加成功的情况。这个问题是因为保存标签参数字段的长度的限制,在SiteWeaver™ 6.6版本中,我们调整了这个字段的长度,以解决此问题来适应更多客户的需求。
六、兼容因为编辑器原因出现的乱码导致标签无法解析的情况。
SiteWeaver™ 6.5版本中,有时候会出现%7B,%7D这样的乱码,导致标签无法解析。SiteWeaver™ 6.6版本提高了对这些乱码的容错性,在标签、模板解析的时候会自动把这些乱码转换成正常的符号,从而使标签、模板可以正常的解析。
七、在标签或者模板中可以动态读取语言包的内容。
SiteWeaver™ 6.5版本为了方便用户的修改,把大部分的文字资源都封装成语言包,使程序跟大部分文字资源独立出来。SiteWeaver™ 6.6版本在此基础上,增加了一个可以读取语言包的标签,以配合自定义标签或者模板的使用,来实现动态获取语言包中的信息功能。因此,我们修改语言包相应的文字资源时,标签与模板也会动态的进行更新。在SiteWeaver™ 6.6版发布时会有这个标签的详细说明。
八、在标签和模板里面进行条件判断。
SiteWeaver™ 6.5版的标签和模板不能直接使用vb语句,有时候涉及一些条件判断的情况,只能用java script语句来实现,实属遗憾。特别是对不熟悉java script 语法的用户,可能更会感到无从下手。针对这种情况,SiteWeaver™ 6.6版本增加了一个可以进行简单条件判断的标签,来弥补这个遗憾。
标签格式:{$YN(Condition, Fir, Sec)}
功能:条件判断函数,可以根据条件运算参数的运算来输出相应的结果;
'condition:条件运算参数,根据运行结果,如果是真则输出Fir,否则输出Sec;
'Fir:条件成立的时候输出Fir的内容;
'Sec :条件不成立的时候输出Sec的内容;
注:如果Fir、Sec参数可能带有逗号,请用[ ]括起。比如:{$YN(True, [带逗号,的参数], 不带逗号的参数)}。
这个标签可以实现一些条件判断功能,比如:在自定义标签中可以实现
判断{$AutoID}是否是1,是1的话输出头版头条,否则输出正常样式;
判断linkUrl字段是否为空,为空的时候输出内部连接地址,否则输出外部连接地址;
判断OnTop字段是否为真,为真的时候输出 [固顶文章] 否则不输出;
判断Inputer字段是否是某个作者,是真的话特殊显示;
当然在模板中同样也可以用这个标签实现类似的判断,在SiteWeaver™ 6.6 版发布的时候会有这个标签的详细说明。
|