簡體   English   中英

TYPO3-更簡單的方法,將colPos中的內容呈現到Fluidtemplate嗎?

[英]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

如您所見,有一些參數datacurrentValueKeytable將被移交給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.

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