[英]TYPO3 - how to properly define constant, store it into variable and use inside of fluid template
在我正在處理的插件的 Fluid 模板中,有些東西是硬編碼的。 例如:
<f:else>
<li>
<v:page.link pageUid="114" />
</li>
</f:else>
由於測試和生產服務器上的pageUid值不同,我想讓它更加動態。
我想以某種方式將其存儲在變量中,然后在流體模板中使用該變量。
我只是不知道在 TYPO3 中做這個很熱。
提前致謝!
因為它是一個設置,所以這樣做:
常數:
plugin.myext.settings.detailPid = 123
設置:
plugin.myext.settings.detailPid = {$plugin.myext.settings.detailPid}
變量用於變量內容。 如果使用帶有 TEXT 或類似變量的變量具有相同的 PID,則過度修飾並且設置是正確的方法。
此外,變量只能用於 FLUID_TEMPLATE 內容元素,不能用於插件!
同樣在您的 extbase 控制器中,您可以通過簡單的訪問$this->settings['detailPid']
來訪問這些設置,而無需先渲染 cObjects。
在您的流體中,您可以通過{settings.detailPid}
訪問設置。
在您的內容對象 FLUIDTEMPLATE 的排版模板中:
排版設置/配置:
10 = FLUIDTEMPLATE
10 {
variables {
pageUid = TEXT
pageUid.value = 114
}
}
或使用常量
排版常量:
pageUid = 114
打字稿設置/配置:
10 = FLUIDTEMPLATE
10 {
variables {
pageUid = TEXT
pageUid.value = {$pageUid}
}
}
然后你可以在你的 Fluid HTML 中獲取pageUid
<f:else>
<li>
<v:page.link pageUid="{pageUid}" />
</li>
</f:else>
要在 Fluid partial 中使用變量,請確保傳遞這些變量,例如通過提供_all
:
<f:render partial="fluid_part_header" arguments="{_all}" />
如果您EXT:vhs
使用EXT:vhs
,您可以執行以下操作:
TS-常數:
pageUid=114
TS-設置:
settings.pageUid = {$pageUid}
模板(流體)
<f:else>
<li>
<v:page.link pageUid="{v:variable.typoscript(path: 'settings.pageUid')}" />
</li>
</f:else>
這將使其可用於所有 FLUID 模板。
請考慮使用 jokumer 的解決方案。 randomresult 的解決方案會起作用,但我不建議這樣做。 您不需要 vhs 來傳遞變量。 不是在談論 Paul Beck 的解決方案,因為它根本行不通。 至少不再是了。 (參見 TYPO3\\CMS\\Fluid\\ViewHelpers\\CObjectViewHelper, https: //docs.typo3.org/typo3cms/ExtbaseGuide/Fluid/ViewHelper/CObject.html)。 它只接受內容對象。
將您的 Pid 設置為PID_SOME_PAGE = 123
等常量,並在您的插件設置中設置一個變量。 像這樣:
plugin.tx_yourplugin {
...
settings{
somePage = {$PID_SOME_PAGE}
}
...
}
如果需要,您可以繞過該常量版本並直接在設置中設置頁面 ID。 在我看來,這只是一種更清潔的方式,尤其是對於較大的網站。 然后您可以在模板中使用該變量,例如<f:link.page pageUid="{settings.somePage}">Go to Page</f:link.page>
。 f:link.page 的更多選項在這里: https ://docs.typo3.org/typo3cms/ExtbaseGuide/Fluid/ViewHelper/Link/Page.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.