问题描述
这是typo3 7.6.27中的代码:
#include <list>
#include <array>
#include <vector>
#include <iostream>
#include <type_traits>
#include <forward_list>
template <typename>
struct specific_foo : public std::false_type
{ };
template <typename T,typename A>
struct specific_foo<std::list<T,A>> : public std::true_type
{ };
template <typename T,typename A>
struct specific_foo<std::forward_list<T,std::size_t N>
struct specific_foo<std::array<T,N>> : public std::true_type
{ };
template <typename T>
void foo (T const &,std::false_type)
{ std::cout << "generic version" << std::endl; }
template <typename T>
void foo (T const &,std::true_type)
{ std::cout << "specific version" << std::endl; }
template <typename T>
void foo (T const & t)
{ foo(t,specific_foo<T>{}); }
int main ()
{
foo(0); // print "generic version"
foo(std::list<int>{}); // print "specific version"
foo(std::forward_list<long>{}); // print "specific version"
foo(std::array<long long,42u>{}); // print "specific version"
foo(std::vector<char>{}); // print "generic version"
}
解决方法
您不能将多个条件添加到拼写中的一个if
函数中。
请记住:打字稿将在评估之前先转移到php数组中。
在您的示例中,您的第二个条件覆盖了第一个条件,而第三个条件覆盖了之前的任何条件。
Typoscript没有用于逻辑运算符的内置机制,因此您需要使用userfunc
或级联stdWrap
之类的变通办法
所以可能的解决方案可能是:
2.NO {
after = <span class="nouveau">New</span>
after.if.value.data = date:U
after.if.isGreaterThan.data = field:f1
after.stdWrap.if.value.data = field:f2
after.stdWrap.if.isGreaterThan.data = field:f1
after.stdWrap.stdWrap.if.value.data = date:U
after.stdWrap.stdWrap.if.isGreaterThan.data = field:f2
}
或者您在更新到TYPO3的当前版本后使用菜单处理器和流体,如果您仍然使用TYPO3 7.6.27(已超过两年的支持期),则该功能非常出色。 (7.6 ELTS是7.6.40)
除此之外,如果我要在条件类似的情况下执行其他操作以显示“已更新”(如果已更新),是否可以?
打字条件条件函数中没有else
。
您可以使用override
或ifempty
,但在这种情况下,我建议在COA
中使用after
:
2.NO {
after.cObject = COA
after.cObject {
10 = TEXT
10.value = <span class="nouveau">New</span>
10 {
if.value.data = date:U
if.isGreaterThan.data = field:f1
stdWrap {
if.value.data = field:f2
if.isGreaterThan.data = field:f1
stdWrap {
if.value.data = date:U
if.isGreaterThan.data = field:f2
}
}
}
20 = TEXT
20.value = <span class="update">Updated</span>
20 {
if.value.data = date:U
if.is???Than.data = field:f1
stdWrap {
if.value.data = field:f2
if.isG???Than.data = field:f1
stdWrap {
if.value.data = date:U
if.isG???Than.data = field:f2
}
}
}
}
}
为20
提供适当的条件。