2017-09-15 61 views
0

我有這個基於默認區域菜單的自定義菜單設置。當對一個內容元素進行測試時,它看起來不錯...當我向頁面添加第二個內容元素時,它們都被添加到每個菜單項中。TYPO3 Menu Double up

任何人都知道這裏發生了什麼?

tt_content.menu.20.3.1.sectionIndex.useColPos = -1  
tt_content.menu.20.101 < tt_content.menu.20.3 
    tt_content.menu.20.101 { 
     1.NO { 
     stdWrap.cObject = CONTENT 
     stdWrap.cObject { 
      table = tt_content 
      select { 
      pidInList.field = uid 
      } 
      renderObj = COA 
      renderObj {  
      10 = FILES 
      10 { 
       stdWrap.wrap = <div class="menu-img">|</div> 
       references { 
       table = tt_content 
       fieldName = image 
       } 
       renderObj = IMAGE 
       renderObj { 
       file { 
        import.data = file:current:uid 
        treatIdAsReference = 1 
        width = 100c 
        height = 100c 
       } 
       altText.data = file:current:alternative 
       titleText.data = file:current:title 
       stdWrap.typolink.parameter.data = file:current:link 
       } 
       maxItems = 1 
      } 
      20 = TEXT 
      20.field = header 
      30 = TEXT 
      30.field = rowDescription 
      } 
     } 
     } 
    } 

這是目前輸出:

<ul> 
    <li><a href="link1"><img/>Heading1Desc1<img2/>Heading2Desc2</a></li> 
    <li><a href="link2"><img/>Heading1Desc1<img2/>Heading2Desc2</a></li> 
<ul> 

應然:

<ul> 
    <li><a href="link1"><img/>Heading1Desc1</a></li> 
    <li><a href="link2"><img2/>Heading2Desc2</a></li> 
</ul> 

回答

0

這是關於你的內容對象。 您的選擇是奇怪:

 select { 
     pidInList.field = uid 
     } 

可以選擇所有tt_content元件,其與當前內容元素的UID的頁面。
你的渲染是爲每個找到的記錄執行的。

你是否真的需要再次選擇cObject的contentelement?我想在菜單中它應該是當前的上下文。


加上:
我會嘗試這樣呈現文本之前的圖像(這應該是默認情況下可用):
before只爲圖像,而不是stdWrap所有的完整的查詢CE和所有領域的COA。

看看正確的字段名稱!

1.NO { 
    before.cObject = FILES 
    before.cObject { 
     stdWrap.wrap = <div class="pic">|</div> 
     references { 
      table = tt_content 
      uid.data = uid 
      // 'image' or 'media' or ... ??? 
      fieldName = image 
     } 
     renderObj = IMAGE 
     renderObj { 
      stdWrap.wrap = <div class="pic">|</div> 
      file { 
       import.data = file:current:uid 
       treatIdAsReference = 1 
       width = 150c 
       height = 150c 
      } 
      altText.data = file:current:alternative 
      titleText.data = file:current:title 
      #params = class="menu-img" 
      // don't do a link inside a link =:-O 
      #stdWrap.typolink.parameter.data = file:current:link 
     } 
     maxItems = 1 
    } 
} 
+0

我有點失落,你是說我不應該有一個cObject? – user500665

+0

我認爲你不需要它。尤其不適用於標題,因爲無論如何都會使用標題。如果你想插入一個圖片,你可以使用'.before'或者'.beforeImg'(參見[manual](https://docs.typo3.org/typo3cms/TyposcriptReference/MenuObjects/Tenuitem/Index.html))你可以找到一些靈感[這裏](https://forum.typo3.org/index.php?t=msg&goto=739572&),所以這個例子是關於網頁。 –

+0

COA部分包含一個圖像和一些字段,如'field.rowDescription'。如果沒有「CONTENT」,我無法獲得圖像或字段。 – user500665

0

我已經嘗試了這許多不同的方式並不能得到它的形象和工作領域。因此,我只是通過添加:tt_content.menu.20.101.maxItems = 1並添加一個換行到renderObj來修補我的原始代碼。

我知道這不是它應該如何做,但它現在可行。但如果有人知道正確的做法,請告訴我!