TYPO3菜单加倍

时间:2017-09-15 11:52:12

标签: typo3 typoscript typo3-7.6.x

我根据默认的部分菜单设置了这个自定义菜单。在一个内容元素上进行测试时,看起来不错......当我向页面添加第二个内容元素时,都会添加到每个菜单项中。

任何人都知道这里发生了什么?

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>

2 个答案:

答案 0 :(得分:0)

这是关于你的CONTENT对象。 你的选择很奇怪:

      select {
        pidInList.field = uid
      }

使用当前内容元素的uid选择页面中的所有tt_content元素 并且为每个找到的记录执行渲染。

您真的需要再次使用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
    }
}

答案 1 :(得分:0)

我尝试了很多不同的方法,无法使用图像和字段。因此,我只需添加:tt_content.menu.20.101.maxItems = 1并为renderObj添加包裹,只需使用原始代码修补。

我知道这不应该怎么做,但它现在有效。但是,如果有人知道这样做的正确方法,请告诉我!