我有2个COA:lib.productContent
和lib.categoryContent
,其中包含来自用户功能的数据。
我还有第三个COA - lib.seoColumns
- 默认情况下应包含产品COA。如果产品COA为空,则应该被COA类别覆盖,但我不知道如何实际检查产品COA是否为空:
########## PRODUCT CONTENT ##########
lib.productContent = COA
lib.productContent {
10 = USER
10 {
userFunc = Vendor\Provider\UserFunc\Page->getPageContentByAlias
alias = TEXT
alias.data = GP:product
aliasField.cObject = TEXT
aliasField.cObject.value = product_alias
}
}
########## CATEGORY CONTENT ##########
lib.categoryContent = COA
lib.categoryContent {
10 = USER
10 {
userFunc = Vendor\Provider\UserFunc\Page->getPageContentByAlias
alias = TEXT
alias.data = GP:category
aliasField.cObject = TEXT
aliasField.cObject.value = category_alias
}
}
########## SEO COLUMNS ##########
lib.seoColumns = COA
lib.seoColumns {
10 < lib.productContent
10.stdWrap.override.cObject < lib.categoryContent
# 10.stdWrap.override.if <-- IF WHAT ?
wrap = <seoColumns><![CDATA[|]]></seoColumns>
}
答案 0 :(得分:2)
反过来说,因为当覆盖对象中至少存在某些内容时,覆盖只会执行实际覆盖。
https://docs.typo3.org/typo3cms/TyposcriptReference/Functions/Stdwrap/Index.html#override
########## SEO COLUMNS ##########
lib.seoColumns = COA
lib.seoColumns {
10 < lib.categoryContent
10.stdWrap.override.cObject < lib.productContent
wrap = <seoColumns><![CDATA[|]]></seoColumns>
}
否如果必要。
答案 1 :(得分:2)
最简单的方法是使用stdWrap .ifEmpty 功能 https://docs.typo3.org/typo3cms/TyposcriptReference/Functions/Stdwrap/Index.html#ifempty
lib.seoColumns = COA
lib.seoColumns {
10. < lib.productContent
10.stdWrap.ifEmpty.cObject < lib.categoryContent
wrap = <seoColumns><![CDATA[|]]></seoColumns>
}
如果ifEmpty是string / stdWrap类型,它支持stdWrap属性,我们可以使用.cObject加载另一个Content Object。就像第二个案件的COA一样。