[英]TYPO3 - simpler way, rendering content from colPos into Fluidtemplate?
TYPO3官方文檔解釋了如何創建(或復制)並使用lib.dynamicContent
將列呈現到Fluidtemplate中。 我不完全了解此示例中發生了什么。 TypoScript有:
lib.dynamicContent = COA
lib.dynamicContent {
10 = LOAD_REGISTER
10.colPos.cObject = TEXT
10.colPos.cObject {
field = colPos
ifEmpty.cObject = TEXT
ifEmpty.cObject {
value.current = 1
ifEmpty = 0
}
}
20 = CONTENT
20 {
table = tt_content
select {
orderBy = sorting
where = colPos={register:colPos}
where.insertData = 1
}
}
90 = RESTORE_REGISTER
}
我在大量TYPO3項目中使用了此代碼片段,並且經常問自己那里發生了什么。
我通過試驗來改變了這一點,並得出以下結論:
lib {
dynamicContent = COA
dynamicContent {
10 = CONTENT
10 {
table = tt_content
select {
orderBy = sorting
where {
data = field:colPos
wrap = colPos=|
}
}
}
}
}
這似乎做的“完全相同”的事情-通過cObject ViewHelper調用時,它輸出我的內容。
有人可以解釋是否或為什么這是呈現內容的較差方法嗎?
這是lib.dynamicContent
-doc的鏈接: https : lib.dynamicContent
-fluidtemplate-content-object-cobj
干得好!
你可以試試看
# Clear out any constants in this reserved room!
styles.content >
# get content
styles.content.get = CONTENT
styles.content.get {
table = tt_content
select.orderBy = sorting
select.where = colPos=0
}
# Left Column
styles.content.getLeft < styles.content.get
styles.content.getLeft.select.where = colPos=1
# Right content
styles.content.getRight < styles.content.get
styles.content.getRight.select.where = colPos=2
另外,您可以在流體頁面對象中使用變量,請檢查以下內容:
lib.pageTemplate = FLUIDTEMPLATE
lib.pageTemplate {
variables {
content = CONTENT
content {
table = tt_content
select.orderBy = sorting
select.where = colPos=0
}
contentRight = CONTENT
contentRight {
table = tt_content
slide = -1
select.orderBy = sorting
select.where = colPos=2
}
}
}
在這里你可以找到更多:
希望這有道理,加油...!
您應該將其與有關Fluid View幫助器<f:cObject>
一些信息一起查看,可以在以下位置找到: https <f:cObject>
我們/typo3/fluid/latest/CObject.html
如您所見,有一些參數data
, currentValueKey
和table
將被移交給typoscriptObjectPath
,這就是為什么此代碼段非常有意義。 原因是,將不同的選項放入CONTENT
對象的where
子句有點困難。 因此,它提高了可讀性,並且可以輕松擴展這些寄存器。
因此,在此示例中,該寄存器用於放入data
字段colPos
的值,或者如果該字段為空,它將從currentValueKey
獲取current
值;如果該值也為空,它將回落到0
的值以進行設置確保查詢不會產生異常。
lib.dynamicContent = COA
lib.dynamicContent {
10 = LOAD_REGISTER
10.colPos.cObject = TEXT
10.colPos.cObject {
field = colPos
ifEmpty.cObject = TEXT
ifEmpty.cObject {
value.current = 1
ifEmpty = 0
}
}
20 = CONTENT
20 {
table = tt_content
select {
orderBy = sorting
where = colPos={register:colPos}
where.insertData = 1
}
}
90 = RESTORE_REGISTER
}
我們使用了該代碼段的修改版本,以便為CONTENT
對象添加更多參數值。
因此,我們可以移交一個數據字段pageUid
,如果未設置該字段,我們將使用當前頁面的uid
。 如果當前頁面或目標頁面被配置為顯示其他頁面的內容,那么它將被覆蓋,最后我們可以使用另一個數據字段觸發幻燈片。
lib.dynamicContent = COA
lib.dynamicContent {
5 = LOAD_REGISTER
5 {
colPos.cObject = TEXT
colPos.cObject {
field = colPos
ifEmpty.cObject = TEXT
ifEmpty.cObject {
value.current = 1
ifEmpty = 0
}
}
pageUid.cObject = TEXT
pageUid.cObject {
field = pageUid
ifEmpty.data = TSFE:id
}
contentFromPid.cObject = TEXT
contentFromPid.cObject {
data = DB:pages:{register:pageUid}:content_from_pid
data.insertData = 1
}
}
20 = CONTENT
20 {
table = tt_content
slide = -1
slide.if.isTrue.field = slide
select {
includeRecordsWithoutDefaultTranslation = 1
orderBy = sorting
where = {#colPos}={register:colPos}
where.insertData = 1
pidInList.data = register:pageUid
pidInList.override.data = register:contentFromPid
}
}
90 = RESTORE_REGISTER
}
這使我們能夠在僅通過在數據數組中移交更多值的情況下觸發其他參數的同時使用<f:cObject>
視圖幫助器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.