在TypoScript中,如果满足c1&c2&c3条件,如何在菜单项旁边显示“新建”?

问题描述

这是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 = &nbsp;<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
您可以使用overrideifempty,但在这种情况下,我建议在COA中使用after

2.NO {
   after.cObject = COA
   after.cObject {
       10 = TEXT
       10.value = &nbsp;<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 = &nbsp;<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提供适当的条件。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...