账号通
    

账号  

密码  

3045

查看

4

回复
主题:也谈{$IF 条件}{成立执行}{不成立执行}{/$IF} [收藏主题] 转到:  
newtraveling 当前离线

6

主题

1

广播

0

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

用户积分:4 分
登录次数:3 次
注册时间:2012/6/12
最后登录:2012/6/15
newtraveling 发表于:2012/6/15 16:37:36   | 只看该作者 查看该作者主题 楼主 
科汛在线考试系统(NET)

     刚学习这个CMS,由于一个图片的问题,需要用到{$IF }

     [loop=1]
        <img src="{$IF("
{@photourl}}" alt=""/>
        <h4><a href="
{@linkurl}" target="_blank">{@title}</a></h4>
        <p>{@intro}…<a href="
{@linkurl}" target="_blank">[阅读]</a></p>
    [/loop]

  

     测试发现:

      无论如何{$IF("{@photourl}}都输出:

           {{@photourl}}{/images/11.png}{/$IF}

      

       郁闷阿!

       查看代码发现处理{$IF}使用了两个函数,这两个函数的原形:

         Function DoIf(byval condition,byval yes,byval no)
            if(Eval(condition)) then DoIf=yes else DoIf=no
        end function
         
        '增加的代码  使用标签格式 {$IF 1=1 } {True} {False} {/$IF}  按照以下的正则 是不允许在条件分支中出现大括号内容的
        '使用举例如    {$IF
{@autoid} mod 2=0 } {</tr><tr>} {{$IF {@autoid}=1 }{<font color="Red">第一名</font>}{}{/$IF}} {/$IF}  这个是说明 使用中这个例子中的第二级IF应该是用不到吧呵呵
        '条件中的判断格式: 原来asp该怎么写就怎么写
        Function ParseIF(sTemplate)
            dim condition,yes,no
   'sTemplate=replace(sTemplate,"!","$")
            regEx.Pattern = "\{\$IF([^\}]*)\}[^\{]*\{([^\}]*)\}[^\{]*\{([^\}]*)\}[^\{]*{/\$IF\}"
            Set Matches = regEx.Execute(sTemplate)
            On Error Resume Next
            '不断的检查自身 用来替换嵌套的IF
   dim n:n=0
            do while(Matches.Count<>0)
                    set Match=Matches(0)
                    condition=Match.SubMatches.Item(0)
                    yes=Match.SubMatches.Item(1)
                    no=Match.SubMatches.Item(2)                  
                    sTemplate=replace(sTemplate,Match.Value,DoIf(condition,yes,no))                  
                    set Matches=regEx.Execute(sTemplate)                  
     n=n+1
     if n>=5 then exit do
            loop            
            set Matches=nothing
            ParseIF=sTemplate
        end Function

    调试:

        当运行到 parseif(templates)这个函数时,标签文本变为:

           <img src="{$IF("{@photourl}}" alt=""/>
          <h4><a href="此处正常已替换
target="_blank">此处正常已替换</a></h4>
          <p此处正常已替换…<a href="此处正常已替换
" target="_blank">[阅读]</a></p>

      

     绿色的部分不见了  

       问题不出现在替换函数的本身,在函数ParseIF(sTemplate)
前的处理过程中就丢失
了条件部分,造成正则不匹配,懒得去查找错误处,我很懒。。哈哈,修改正则表达式,规避替换问题解决。谁有兴趣查找错误的,交流一下。

      

   

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

653

主题

10

广播

17

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

用户积分:1585 分
登录次数:361 次
注册时间:2010/11/19
最后登录:2019/5/7
licaifuwu 发表于:2012/6/15 16:44:53   | 只看该作者 查看该作者主题 沙发 
科汛在线考试系统(NET)

photourl 目前只要包含这个 查询的数据肯定是photourl<>""  的  下一版本已经修复了

img 可以用 onerror事件

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

6

主题

1

广播

0

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

用户积分:4 分
登录次数:3 次
注册时间:2012/6/12
最后登录:2012/6/15
newtraveling 发表于:2012/6/15 16:51:06   | 只看该作者 查看该作者主题 藤椅 
科汛在线考试系统(NET)

当文章没有图片,(但内容里有图)时,如果调用图片{@photourl },立马出错.


怎么修改?

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

99

主题

6

广播

2

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

用户积分:307 分
登录次数:145 次
注册时间:2011/10/18
最后登录:2015/1/28
kswtzj 发表于:2012/6/15 20:36:03   | 只看该作者 查看该作者主题 板凳 
科汛在线考试系统(NET)

你的好像是供求信息系统吧 这个我已经也研究过 不好弄的哦

 
低价承接div+css,科讯建站,等业务QQ:864633495
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
wh811202 当前离线

106

主题

3

广播

0

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

用户积分:112 分
登录次数:11 次
注册时间:2012/11/10
最后登录:2012/12/19
wh811202 发表于:2012/12/6 19:41:54   | 只看该作者 查看该作者主题 报纸 
科汛在线考试系统(NET)
学习。。。。。。。。。。。。
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
<上一主题 | 下一主题 >
Powered By KesionCMS Version X1
厦门科汛软件有限公司 © 2006-2016 页面执行0.17188秒 powered by KesionCMS 9.0