Movable Type多条件If语句实现问题求助
解决Movable Type中多条件嵌套If语句的问题
嘿,我刚好对Movable Type的模板语法比较熟悉,你的需求其实有两种靠谱的实现方式,先帮你梳理清楚:
1. 正确的嵌套If写法(和你的需求逻辑完全匹配)
你原来的思路是对的,但可能是标签属性用错了——Movable Type中判断自定义变量时,应该用var属性而不是name(name一般用于引用模板标签的上下文对象,比如条目、分类等)。修正后的代码应该是这样:
<mt:SetVar name="foo" value="bar"> <mt:SetVar name="foo1" value="bar1"> <mt:If var="foo" eq="bar"> <mt:If var="foo1" eq="bar1"> <div>Foobar Hooray</div> </mt:If> </mt:If>
如果你的Movable Type版本比较新,也可以用简写的变量引用方式,直接在条件里用$foo:
<mt:SetVar name="foo" value="bar"> <mt:SetVar name="foo1" value="bar1"> <mt:If "$foo == 'bar'"> <mt:If "$foo1 == 'bar1'"> <div>Foobar Hooray</div> </mt:If> </mt:If>
2. 合并多条件(避免嵌套更简洁)
Movable Type支持在单个mt:If标签里用and连接多个条件,这样可以省去嵌套的层级,代码更清爽:
<mt:SetVar name="foo" value="bar"> <mt:SetVar name="foo1" value="bar1"> <mt:If var="foo" eq="bar" and var="foo1" eq="bar1"> <div>Foobar Hooray</div> </mt:If>
同样,用变量简写的话可以写成:
<mt:SetVar name="foo" value="bar"> <mt:SetVar name="foo1" value="bar1"> <mt:If "$foo == 'bar' && $foo1 == 'bar1'"> <div>Foobar Hooray</div> </mt:If>
额外排查提示
如果还是不生效,可以检查这几点:
- 确认变量的作用域:如果
mt:SetVar是在某个循环(比如mt:Entries)内部设置的,外层可能无法访问到这个变量,需要用mt:SetVar name="foo" value="bar" global="1"来设置全局变量 - 检查变量名和值的拼写:有没有大小写错误、多余空格?比如
bar写成Bar就会匹配失败 - 确认Movable Type版本:部分旧版本对多条件判断的支持有限,尽量升级到较新的稳定版本
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

