2017-02-09 38 views
1

我在通過所有頁面上的typoscript獲取自定義內容元素時遇到了一些問題。 我創建了一個沒有任何擴展名的自定義元素(如mask或dce),所以我只使用 TYPO3核心函數。這個元素是一個簡單的東西,只是用來創建不同的框來顯示在前端。通過Typoscript自定義內容元素 - >空陣列

tt_content.box = COA 
tt_content.box { 
    10 = FLUIDTEMPLATE 
    10 { 
     file = EXT:xxx_elements/Resources/Private/Templates/Box.html 
     partialRootPath = EXT:xxx_setup/Resources/Private/Content/Partials 
     layoutRootPath = EXT:xxx_setup/Resources/Private/Content/Layouts 
     dataProcessing { 
      10 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor 
      10 { 
       table = tx_xxxelements_box 
       orderBy = sorting 
       where { 
        data = field:uid 
        intval = 1 
        wrap = tt_content=| 
       } 
       as = boxitems 
      } 
     } 
    } 
} 

呈現與正常流體狀

<f:for each="{boxitems}" as="boxitem"> 
    <boxitem.header>... 
</f:for> 

使一切工作只要罰款,因爲我用它作爲放置 在頁面上定期內容元素。現在我把一個元素爲storagefolder並嘗試重用上通過的TypoScript 所有頁面這個元素,其中10

lib.SubFooter = COA 
lib.SubFooter { 
    10 = RECORDS 
    10 { 
     tables = tt_content 
     source = 10 
    } 
} 

的lib呈現正確的內容元素的ID,但「boxitems」數組爲空在:-(

現在最逗的所有頁面: 如果我ID是10元素放在一個頁面boxitems數組填滿兩個元素和lib ...對

這裏是與圖像變量轉儲適用於不同情況: element, lib, element+lib

+0

你的SQL查詢是什麼樣的?您可以使用管理面板在前端調試SQL查詢。 – pgampe

+0

那的SQL的樣子:-( 查詢>「SELECT * FROM tx_xxxcontentelements_box WHERE tx_xxxcontentelements_box.pid IN(1) AND tt_content = 10 AND(tx_xxxcontentelements_box.sys_language_uid = 0) AND tx_xxxcontentelements_box.deleted = 0 AND tx_xxxcontentelements_box.t3ver_state <= 0 AND tx_xxxcontentelements_box.pid <> - 1 AND tx_xxxcontentelements_box.hidden = 0 AND tx_xxxcontentelements_box.starttime <= 1486999740 AND(tx_xxxcontentelements_box.endtime = 0 OR tx_xxxcontentelements_box.endtime> 1486999740) ORDER BY排序' – Jan

+0

那是從pid:1當我們在lib版本中沒有顯示任何東西,至少沒有什麼可以指向我的正確方向:-( – Jan

回答

0

不幸的是,我找不到滿意的解決方案。最後,我已經將內容元素構建爲普通元素而不是IRRE,然後與typoscript的集成按預期工作。

0

,也許你錯過了PID ;-)

dataProcessing { 
     10 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor 
     10 { 
      .... 
      pidInList.field = pid 

,你可以在我看來,簡化在這種情況下,where子句:因爲你不反對瓦爾匹配

  where.dataWrap = tt_content={field:uid} 

從外面...