2014-11-21 63 views
1

我有一個typo3流體模板,我想在渲染某些元素之前檢查內容是否存在。 有沒有一種有效的方法來做到這一點? 例如。如何檢查typo3流體模板中的列內容?

<f:if condition="{contentInColPos0}"> 
    <div class="section-content"> 
    <f:render section="Main" /> 
    </div> 
</f:if> 

是否有內置變量或簡單的方法來檢查列位置中存在的內容? 這是CMS模板中的一個常見任務(除非有需要顯示的東西,否則不要渲染此部分),但我似乎無法找到簡單的方法。

回答

3

有沒有簡單的方法來做到這一點。但是你可以使用一些Typo腳本,然後通過計數的補給,並在條件中使用它:

lib.countContent = CONTENT 
lib.countContent { 
    table = tt_content 
    select { 
    selectFields = count(uid) AS count 
    pidInList = this 
    andWhere = (deleted = 0 AND hidden = 0) 
    } 

    renderObj = COA 
    renderObj { 
    10 = TEXT 
    10 { 
     data = field:count 
    } 
} 

這個對象輸出的固定頁面和內容的行數可以流體訪問:

<f:if condition="{f:cObject(typoscriptObjectPath:'lib.countContent')} > 0"> 
    Then show some stuff 
</f:if> 

如果您打算使用內容,並且您的內容對象中沒有全局換行,您也可以直接使用它,因爲Fluid IfViewHelper會檢查空字符串。所以例如這可能是更好的工作:

lib.content < styles.content.get 

(這個對象是空的,如果沒有內容)

<f:if condition="{f:cObject(typoscriptObjectPath:'lib.content')}"> 
    <f:then> 
    <f:format.html>{lib.content}</f:format.html> 
    </f:then> 
    <f:else> 
    No content found 
    </f:else> 
</f:if> 
-1

您可以輕鬆地解決這個問題:

  1. 在您的Typo腳本文件:

    lib.contentInColPos0 < styles.content.get 
    lib.contentInColPos0 t.select.where = colPos = 0 
    
  2. 在您的模板文件:

    <f:if condition="{f:cObject(typoscriptObjectPath:'lib.contentInColPos0')}"> 
        <div class="section-content"> 
        <f:render section="Main" /> 
        </div> 
    </f:if> 
    
0

Easyest方式與VHS檢查並沒有Typo腳本

<f:if condition="{v:content.get(column:6) -> v:iterator.first()}"> 
    <div class="myAmazingClass"> 
    </div> 
</f:if> 

你可以,如果你想通過量子頁面內容幻燈:

<f:if condition="{v:content.get(column:6, slide:'-1') -> v:iterator.first()}"> 
    <div class="myAmazingClass"> 
    </div> 
</f:if>