账号通
    

账号  

密码  

20450

查看

30

回复
主题:让 Loop 中支持IF标签 [收藏主题] 本贴被认定为精华 转到:  
foxhunter 当前离线

3

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:106 分
登录次数:3 次
注册时间:2011/4/26
最后登录:2011/4/28
foxhunter 发表于:2011/4/26 22:43:04   | 只看该作者 查看该作者主题 楼主 
做在线知识付费 选科汛云开店

让自定义的Loop 循环中支持 IF 条件判断(支持IF 嵌套 测试了 一个IF下 两个同层级的IF情况没发现什么问题,貌视嵌套用不到什么 呵呵)。

当然,本人觉得如果是按照div+css的方式来布局应该对这个IF不是太依赖,很多的事情可以变通来处理。

但是如果某些特殊原因 例如偷懒想用table 快捷了事的话那么IF还真有他的用处。

在百度搜索了一下一直找不到解决办法,只好自己临时改下代码

暂时对于处理 loop 中if判断(主要配合mod进行</tr><tr>)没有出现什么问题。

由于本人是第一次使用本系统,只是在需要中修改的,因此代码的完备性和特殊处理上可能会有疏漏,如果大家发现了可以自行修改

解决办法:修改完善 KS_Cls\Kesion.Label.FunctionCls.asp

原理:我们需要在每一条Loop单元处理完毕后(系统级) 再来接管进行IF分析。之所以这个时候接管是因为我们的IF中可能会用到系统标签的值,所以需要让系统先分析并赋值后我们再处理

         注意:IF代码支持嵌套,但会从最里层级开始 进行if分析



  1. '需要修改的
  2. Sub Scan(ByVal sTemplate)
  3.    Dim iPosLast, iPosCur   
  4.    iPosLast    = 1
  5.    While True
  6.     iPosCur    = InStr(iPosLast, sTemplate, "{@")
  7.     If iPosCur>0 Then
  8.      Echo    Mid(sTemplate, iPosLast, iPosCur-iPosLast)
  9.      iPosLast  = Parse(sTemplate, iPosCur+2)     
  10.     Else
  11.      Echo    Mid(sTemplate, iPosLast)
  12.                      Templates=ParseIF(Templates)        '此处为修改的增加项目           
  13.      Exit Sub  
  14.     End If
  15.      Wend
  16.   End Sub
  17.    

  18.   '增加的代码

  19.     Function DoIf(byval condition,byval yes,byval no)
  20.             if(Eval(condition)) then
  21.                 DoIf=yes
  22.             else
  23.                 DoIf=no
  24.             end if
  25.         end function
  26.         
  27.         '增加的代码  使用标签格式 {$IF 1=1 } {True} {False} {/$IF}  按照以下的正则 是不允许在条件分支中出现大括号内容的
  28.         '使用举例如    {$IF {@autoid} mod 2=0 } {</tr><tr>} {{$IF {@autoid}=1 }{<font color="Red">第一名</font>}{}{/$IF}} {/$IF}  这个是说明 使用中这个例子中的第二级IF应该是用不到吧呵呵
  29.         '条件中的判断格式: 原来asp该怎么写就怎么写
  30.    Function ParseIF(sTemplate)
  31.             dim condition,yes,no           
  32.             regEx.Pattern = "\{\$IF([^\}]*)\}[^\{]*\{([^\}]*)\}[^\{]*\{([^\}]*)\}[^\{]*{/\$IF\}"
  33.             Set Matches = regEx.Execute(sTemplate)
  34.             On Error Resume Next
  35.             '不断的检查自身 用来替换嵌套的IF
  36.             while(Matches.Count<>0)
  37.                     set Match=Matches(0)
  38.                     condition=Match.SubMatches.Item(0)
  39.                     yes=Match.SubMatches.Item(1)
  40.                     no=Match.SubMatches.Item(2)                 
  41.                     sTemplate=replace(sTemplate,Match.Value,DoIf(condition,yes,no))                  
  42.                     set Matches=regEx.Execute(sTemplate)                  
  43.             wend           
  44.             set Matches=nothing
  45.             ParseIF=sTemplate
  46.         end Function



以上代码属于个人研究,如有不足和疏漏 大家一起来修改吧

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

1138

主题

4

广播

1

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

用户积分:6229 分
登录次数:342 次
注册时间:2006/4/4
最后登录:2023/2/2
mbaun 发表于:2011/4/27 0:25:00   | 只看该作者 查看该作者主题 沙发 
 
出来诈盗,多多关照
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
www990826 当前离线

55

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:87 分
登录次数:23 次
注册时间:2011/4/16
最后登录:2011/11/3
www990826 发表于:2011/4/27 1:06:48   | 只看该作者 查看该作者主题 藤椅 

不错!支持一个吧!哈哈

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

1622

主题

5

广播

29

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

用户积分:5963 分
登录次数:199 次
注册时间:2009/10/12
最后登录:2024/4/4
无风 发表于:2011/4/27 8:56:51   | 只看该作者 查看该作者主题 板凳 
 
QQ:592002940 <a target=_blank href=http://qun.qq.com/#jointhegroup/gid/40509894 title=点击加入科讯技术交流群>科讯技术交流群</a>===<a target=_blank href=http://qun.qq.com/#jointhegroup/gid/7133571 title=点击加入科讯技术高级群>科讯CMS高级群</a>=== 欢迎新手加入学习,欢迎高手加入指导 承接科讯系统的模板整合,各类模板仿制 <a href=http://hi.baidu.com/科讯技术 title=科讯技术百度博客,收录大量实用技术文章>科讯技术博客</a>
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
seekin 当前离线

442

主题

4

广播

1

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

用户积分:3753 分
登录次数:277 次
注册时间:2007/6/4
最后登录:2018/5/4
seekin 发表于:2011/4/27 9:20:30   | 只看该作者 查看该作者主题 报纸 
 
矢量标志下载 www.logotu.com
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
kelly99 当前离线

178

主题

0

广播

0

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

用户积分:188 分
登录次数:9 次
注册时间:2011/5/12
最后登录:2013/6/26
kelly99 发表于:2011/5/12 20:04:50   | 只看该作者 查看该作者主题 地板 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
d2wl 当前离线

333

主题

0

广播

0

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

用户积分:2143 分
登录次数:255 次
注册时间:2007/6/17
最后登录:2013/2/27
d2wl 发表于:2011/5/12 22:33:50   | 只看该作者 查看该作者主题 7楼 

支持,同时也请楼主帮我看看这个代码是哪里出错了

http://bbs.kesion.com/forumthread-203385.html

谢谢

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

4

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:6 分
登录次数:1 次
注册时间:2011/5/19
最后登录:2011/5/19
firely 发表于:2011/5/19 12:42:48   | 只看该作者 查看该作者主题 8楼 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
cooplam 当前离线

27

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:38 分
登录次数:7 次
注册时间:2011/4/16
最后登录:2011/6/3
cooplam 发表于:2011/5/23 21:12:22   | 只看该作者 查看该作者主题 9楼 
 
<a href=http://www.zuoxuanroujianfei.info/ target=_blank>左旋肉碱</a><a href=http://www.iolay.net/ target=_blank>什么减肥药最有效果</a> http://www.haigo5.com http://www.jileshou.com
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
52liudehua 当前离线

22

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:21 分
登录次数:7 次
注册时间:2011/6/3
最后登录:2011/6/14
52liudehua 发表于:2011/6/8 16:43:17   | 只看该作者 查看该作者主题 10楼 
 
苏州广告公司 http://www.800512.com/
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
<上一主题 | 下一主题 >
Powered By KesionCMS Version X1
厦门科汛软件有限公司 © 2006-2016 页面执行0.31250秒 powered by KesionCMS 9.0