使用回退覆盖FILES references.data

时间:2016-09-06 14:15:56

标签: typo3 typoscript

我通过data = level media获取滑块的图像:-1,幻灯片 在新闻单页面上,我想使用新闻图片代替。所以我在条件[globalVar = GP:tx_news_pi1|news > 0]中放置了这个代码并获取新闻的图像。一切都好。但是,如果没有新闻图片,我想展示一流的媒体。我怎么能这样做?

这是TypoScript:

lib.keyVisual = COA
lib.keyVisual {
    10 = FILES
    10 {
        references {
            data = levelmedia:-1,slide
        }

        renderObj = COA
        renderObj.10 = IMAGE
        renderObj.10 {
            file {
                import.data = file:current:uid
                treatIdAsReference = 1
                width = {$keyVisualWidth}
                #width.field >
                height = {$keyVisualHeight}

            }
        }

        renderObj.20 = COA
        renderObj.20 {
            1 = TEXT
            1 {
                data = file:current:title
                required = 1
                wrap = <h3>|</h3>
            }
            2 = TEXT
            2 {
                data = file:current:description
                required = 1
                wrap = <p>|</p>
            }
            stdWrap.wrap = <div class="imageCaptionBox">|</div>
            stdWrap.required = 1
        }

        renderObj.wrap = <li>|</li>
    }
    wrap = <section id="keyvisual" class="keyvisual fullWidth"><ul class="slider nav">|</ul></section>
}
[globalVar = GP:tx_news_pi1|news > 0]
    lib.keyVisual {
        10 {
            references {
                data >
                table = tx_news_domain_model_news
                uid.data = GP:tx_news_pi1|news
                fieldName = fal_media
            }

            # only images with showinpreview
            renderObj.if {
                value = 1
                equals.data = file:current:showinpreview
            }
        }
    }
[global]

2 个答案:

答案 0 :(得分:1)

所有条件都有[else],因此您无需重新定义。

[globalVar = GP:tx_news_pi1|news > 0]
lib.keyVisual {
     ... from news...
}
[else]
lib.keyVisual {
    ... from levelmedia ...
}
[global]

然后你需要区分一个图像是否适用于新闻。

[globalVar = GP:tx_news_pi1|news > 0]
lib.keyVisual = COA
lib.keyVisual {
     10 = CONTENT
     10 {
        // get news record and then get file
        ... from news...
        if.empty.field = media
     }
     20 = FILES
     20 {
        ... from levelmedia ...
        if {
           empty.field = media
           negate = 1
        }
     }
}
[else]
lib.keyVisual {
    ... from levelmedia ...
}
[global]

可以通过将temp对象用于复制的levelmedia使用来优化。

temp.levelmediaImage {
    ...
}
[globalVar = GP:tx_news_pi1|news > 0]
kib.keyVisual = COA
lib.keyVisual {
     10 = CONTENT
     10 {
        // get news record and then get file
        ... from news...
        if.empty.field = media
     }
     20 < temp.levelmediaImage
     20 {
        if {
           empty.field = media
           negate = 1
        }
     }
}
[else]
lib.keyVisual < temp.levelmediaImage
[global]

答案 1 :(得分:1)

使用ifEmpty stdWrap选项。

如果您的COA为空,您可以使用此选项渲染默认图像。

简单的例子来解释:

[globalVar = GP:tx_news_pi1|news > 0]
  lib.keyVisual {
    stdWrap.ifEmpty.cObject < .10

    #overrides for news picture
    10 {
      ...
    }
  }
[global]