簡體   English   中英

TYPO3內聯流體狀況和typoscriptObjectPath

[英]TYPO3 inline fluid condition and typoscriptObjectPath

我在尋找內聯流體條件和typoscriptObjectPath的解決方案。

工作正常:

<f:cObject typoscriptObjectPath="lib.currentDate" />

工作正常:

<f:if condition="{price.day} == {f:cObject(typoscriptObjectPath:'lib.currentDate')}">
<f:then>work</f:then>
<f:else>dont work</f:else>
</f:if>

工作正常:

{f:if(condition:'{price.day} == \'Sunday\'',then:'active',else:'test')}

不要工作

{f:if(condition:'{price.day} == \'{f:cObject(typoscriptObjectPath:'lib.currentDate')}\'',then:'active',else:'test')}

如何使用正確的內聯代碼?

您無需在視圖中解析lib.currentDate ,因為您只需其輸出復制到Fluid變量即可。 它將避免嵌套引號,方括號等任何問題。當然,我認為這是與PAGE流暢模板結合使用的:

lib.currentDate = TEXT
lib.currentDate {
    data = date:U
    strftime = %A
}

page = PAGE
page {
    # ....
    10 = FLUIDTEMPLATE
    10 {
        # ....
        variables {
            mainContent < styles.content.get
            currentDate < lib.currentDate
        }
    }
}

因此您可以像下面這樣使用:

<f:if condition="{price.day} == {currentDate}">That's today!</f:if>

<!-- or... -->
{f:if(condition:'{price.day} == {currentDate}', then: 'active', else: 'not-active')}

當然,如果您在插件的上下文中工作,則可以在操作中使用assign方法執行相同的操作,例如:

$this->view->assign('currentDate', strftime('%A',date('U')));

請注意,您還有其他選擇:

  1. 如果ViewHelper創建自定義,則在price.daycurrentDate為不同類型並且在比較之前需要類型轉換時將很有用。
  2. price模型中創建一個transient字段,getter將日期字段與strftime('%A',date('U'))並返回boolean值,因此您可以將其直接用作:

     <f:if condition="{price.myTransientField}">Hooray!</f:if> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM