账号通
    

账号  

密码  

4555

查看

7

回复
主题:最新KesionCMS V9.05 Free(gbk) Sql标签中IF条件无效 [收藏主题] 转到:  
person01 当前离线

119

主题

5

广播

7

粉丝
添加关注
级别:一年级

用户积分:3190 分
登录次数:174 次
注册时间:2007/11/15
最后登录:2019/10/21
person01 发表于:2013/5/30 14:41:43   | 只看该作者 查看该作者主题 楼主 
科汛在线考试系统(NET)

在Sql标签中,按照官方给出的IF条件标签语句

{$IF tjiao}

{满足执行代码}

{不满足执行代码}

{/$IF}

在SQL标签没有任何效果

具体代码如下:

  1. [loop=1]{$IF {$Field(issign,Num,0,2)}=1}{<div class="clear blank10"></div>       <div class="otherNews">           <h2>用户签收:</h2>              <div class="about_list">              <div id="showSign"><Img src="{$GetInstallDir}images/loading.gif"></div>              <input type="hidden" value="{$InfoID}" id="s_infoid">              <input type="hidden" value="{$ChannelID}" id="s_channelid">              </div>       </div>

    }{/$IF}[/loop]


执行效果如下:

{$IF 0=1}{


用户签收:


} {/$IF}


满足时:

{$IF 1=1}{


用户签收:


} {/$IF}


最近在研究kesionCMS,发现很多小问题,跟官方沟通后,逐步把问题公布出来,有的已经自行解决,有的正好用不到,所以没有修改。

如果有任何问题,欢迎大家指正!

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
科汛官方 当前离线

47268

主题

145

广播

405

粉丝
添加关注
级别:管理员

用户积分:101604 分
登录次数:7935 次
注册时间:2006/12/7
最后登录:2023/12/14
科汛官方 发表于:2013/5/30 14:51:47   | 只看该作者 查看该作者主题 沙发 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
person01 当前离线

119

主题

5

广播

7

粉丝
添加关注
级别:一年级

用户积分:3190 分
登录次数:174 次
注册时间:2007/11/15
最后登录:2019/10/21
person01 发表于:2013/5/30 14:56:53   | 只看该作者 查看该作者主题 藤椅 
做在线知识付费 选科汛云开店

官方自己测试了吗



我测试如下:

{$IF (1=1||



用户签收:





|| )}



标签:

  1. [loop=1]
  2. {$IF ({$Field(issign,Num,0,2)}=1||<div class="clear blank10"></div>
  3. <div class="otherNews">
  4. <h2>用户签收:</h2>
  5. <div class="about_list">
  6. <div id="showSign"><Img src="{$GetInstallDir}images/loading.gif"></div>
  7. <input type="hidden" value="{$InfoID}" id="s_infoid">
  8. <input type="hidden" value="{$ChannelID}" id="s_channelid">
  9. </div>
  10. </div>
  11. ||
  12. )}
  13. [/loop]

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
person01 当前离线

119

主题

5

广播

7

粉丝
添加关注
级别:一年级

用户积分:3190 分
登录次数:174 次
注册时间:2007/11/15
最后登录:2019/10/21
person01 发表于:2013/5/30 14:58:02   | 只看该作者 查看该作者主题 板凳 
做在线知识付费 选科汛云开店

而且在官方的最新的帮助文件中 关于IF的说明如下:

使用说明 :

1、循环标签[loop=n][/loop]对可以省略,也可以平行出现多对;

2、输出格式选择不带自定义字段输出的运行效率高于带自定义字段,如果列表没有用到自定义字段请选择不带自定义字段输出

3、支持条件判断语句,格式:{$IF 条件}{成立执行的代码}{不成立执行的代码}{/$IF}

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
person01 当前离线

119

主题

5

广播

7

粉丝
添加关注
级别:一年级

用户积分:3190 分
登录次数:174 次
注册时间:2007/11/15
最后登录:2019/10/21
person01 发表于:2013/5/30 15:15:32   | 只看该作者 查看该作者主题 报纸 
做在线知识付费 选科汛云开店

官方文件中对于IF的解析如下:

  1. '增加的代码  使用标签格式 {$IF 1=1 } {True} {False} {/$IF}  按照以下的正则 是不允许在条件分支中出现大括号内容的

  2.         '使用举例如    {$IF {@autoid} mod 2=0 } {</tr><tr>} {{$IF {@autoid}=1 }{<font color="Red">第一名</font>}{}{/$IF}} {/$IF}  这个是说明 使用中这个例子中的第二级IF应该是用不到吧呵呵
  3.         '条件中的判断格式: 原来asp该怎么写就怎么写
  4.         Function ParseIF(sTemplate)
  5.             dim condition,yes,no            
  6.             regEx.Pattern = "\{\$IF([^\}]*)\}[^\{]*\{([^\}]*)\}[^\{]*\{([^\}]*)\}[^\{]*{/\$IF\}"
  7.             Set Matches = regEx.Execute(sTemplate)
  8.             On Error Resume Next
  9.             '不断的检查自身 用来替换嵌套的IF
  10.    dim n:n=0
  11.             do while(Matches.Count<>0)
  12.                     set Match=Matches(0)
  13.                     condition=Match.SubMatches.Item(0)
  14.                     yes=Match.SubMatches.Item(1)
  15.                     no=Match.SubMatches.Item(2)                  
  16.                     sTemplate=replace(sTemplate,Match.Value,DoIf(condition,yes,no))                  
  17.                     set Matches=regEx.Execute(sTemplate)                  
  18.      n=n+1
  19.      if n>=5 then exit do
  20.             loop            
  21.             set Matches=nothing
  22.             ParseIF=sTemplate
  23.         end Function

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
刚刚 当前离线

1852

主题

5

广播

126

粉丝
添加关注
级别:版主

用户积分:7093 分
登录次数:225 次
注册时间:2010/7/6
最后登录:2024/4/15
刚刚 发表于:2013/5/30 17:48:09   | 只看该作者 查看该作者主题 地板 
科汛在线考试系统(NET)
官方那个是对的。这样的{$IF 条件}{成立执行的代码}{不成立执行的代码}{/$IF}是系统函数标签里的用法,解析文件在\ks_cls\Kesion.Label.FunctionCls.asp里ParseIF函数。 SQL标签里的IF解析是这个\ks_cls\Kesion.Label.SQLCls.asp文件里的这个函数ReplaceCondition,IF条件是对应SQL标签最后解析部分
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
person01 当前离线

119

主题

5

广播

7

粉丝
添加关注
级别:一年级

用户积分:3190 分
登录次数:174 次
注册时间:2007/11/15
最后登录:2019/10/21
person01 发表于:2013/5/30 22:02:28   | 只看该作者 查看该作者主题 7楼 
做在线知识付费 选科汛云开店

问题解决,官方正解!也谢谢楼上的! 不过注意写法. 现在的写法如下:

  1. [loop=1]

  2. {$IF({$Field(issign,Num,0,2)}=1||<div class="clear blank10"></div>
  3.        <div class="otherNews">
  4.            <h2>用户签收:</h2>
  5.               <div class="about_list">
  6.               <div id="showSign"><Img src="{$GetInstallDir}images/loading.gif"></div>
  7.               <input type="hidden" value="{$InfoID}" id="s_infoid">
  8.               <input type="hidden" value="{$ChannelID}" id="s_channelid">
  9.               </div>
  10.        </div>||)}
  11. [/loop]

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
person01 当前离线

119

主题

5

广播

7

粉丝
添加关注
级别:一年级

用户积分:3190 分
登录次数:174 次
注册时间:2007/11/15
最后登录:2019/10/21
person01 发表于:2013/5/30 22:03:15   | 只看该作者 查看该作者主题 8楼 
做在线知识付费 选科汛云开店

IF 后面没有空格,最有一个||}也没有空格

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
<上一主题 | 下一主题 >
Powered By KesionCMS Version X1
厦门科汛软件有限公司 © 2006-2016 页面执行0.93164秒 powered by KesionCMS 9.0