Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typo3 使用锚定链接作为第二级菜单构建菜单_Typo3_Typoscript - Fatal编程技术网

Typo3 使用锚定链接作为第二级菜单构建菜单

Typo3 使用锚定链接作为第二级菜单构建菜单,typo3,typoscript,Typo3,Typoscript,我在一个菜单上工作,显示正常链接的第一级。第二级菜单应该是从内容元素构建为锚定菜单。受此启发,我构建了以下ts: lib.footerMenu = HMENU lib.footerMenu { 1 = TMENU 1 { wrap = <ul class="nav">|</ul> noBlur = 1 NO = 1 NO { wrapItemAndSub = <li class="first">|</li

我在一个菜单上工作,显示正常链接的第一级。第二级菜单应该是从内容元素构建为锚定菜单。受此启发,我构建了以下ts:

lib.footerMenu = HMENU
lib.footerMenu {
1 = TMENU
1 {
    wrap = <ul class="nav">|</ul>
    noBlur = 1

    NO = 1
    NO {
        wrapItemAndSub = <li class="first">|</li> |*| <li>|</li> |*| <li class="last">|</li>
        ATagParams = class="first" |*| |*| class="last"
        after.cObject = CONTENT
        after.cObject {
            table = tt_content
            select {
                pidInList = this
                orderBy = sorting
                where = colPos=1
                languageField = sys_language_uid
            }
            wrap = <ul>|</ul>
            renderObj = TEXT
            renderObj {
                field = header   
                dataWrap = <li><a href="#c{field:uid}">|</a></li>
            }
        }
     }
  }
}
lib.footerMenu=humenu
lib.footer菜单{
1=t菜单
1 {
包裹=
    noBlur=1 否=1 没有{ wrapItemAndSub=
  • *
  • *
  • |
  • ATagParams=class=“first”|*|*|class=“last” after.cObject=内容 在cObject之后{ 表=tt_含量 挑选{ pidInList=这个 orderBy=排序 其中=colPos=1 languageField=sys\u language\u uid } 包裹=
      |
    renderObj=文本 伦德罗布{ 字段=标题 数据包=
  • } } } } }
    制作类似的东西(“阿诺德·伊普斯姆”和“你到底是谁?”成为主页的CEs):

    • ...
    现在的问题是,这个(pidInList=this)始终保存实际页面id,因此实际页面的锚定菜单被附加到所有主菜单项

    如何在每个主菜单下显示右锚定菜单?

    lib.footerMenu=humenu
    
    lib.footerMenu = HMENU
    lib.footerMenu {
      1 = TMENU
      1 {
        wrap = <ul class="nav">|</ul>
        noBlur = 1
    
        NO = 1
        NO {
          wrapItemAndSub = <li class="first">|</li> |*| <li>|</li> |*| <li class="last">|</li>
          ATagParams = class="first" |*| |*| class="last"
          after.cObject = CONTENT
          after.cObject {
            table = tt_content
            select {
              pidInList.stdWrap.cObject = CASE
              pidInList.stdWrap.cObject {
                key.field = doktype
    
                default = TEXT
                default.field = uid
    
                4 = TEXT
                4.field = shortcut
              }
              orderBy = sorting
              where = colPos=1
              languageField = sys_language_uid
              selectFields = uid,pid,header
            }
            wrap = <ul>|</ul>
            renderObj = TEXT
            renderObj {
              field = header
              typolink {
                parameter.field = pid
                section.field = uid
              }
              wrap = <li>|</li>
            }
          }
        }
      }
    }
    
    lib.footer菜单{ 1=t菜单 1 { 包裹=
      noBlur=1 否=1 没有{ wrapItemAndSub=
    • *
    • *
    • |
    • ATagParams=class=“first”|*|*|class=“last” after.cObject=内容 在cObject之后{ 表=tt_含量 挑选{ pidInList.stdWrap.cObject=CASE pidInList.stdWrap.cObject{ key.field=doktype 默认值=文本 default.field=uid 4=文本 4.字段=快捷方式 } orderBy=排序 其中=colPos=1 languageField=sys\u language\u uid 选择字段=uid、pid、标题 } 包裹=
        |
      renderObj=文本 伦德罗布{ 字段=标题 打字链接{ parameter.field=pid section.field=uid } 包裹=
    • |
    • } } } } }

      不过,它可能无法在旧的TYPO3安装上运行,因为如果我没记错的话,
      pidInList
      以前没有
      stdWrap
      。它应该适用于TYPO3 4.5+。

      我已经扩展了代码,因为我意识到锚点仍然是错误的,因为它们适用于当前页面而不是目标页面。你的解决方案工作得近乎完美。有没有办法让它也适用于快捷方式?我的“主页”是一个快捷方式,上面没有CEs。还有一个问题,因为锚指向的是当前页面,而不是CEs真正所在的页面。我想我还需要在“dataWrap=
    • ”中添加一些内容!?我以前已经更改了本地链接。不过,我想知道它们是否正确,也就是说它们是
      #c1
      还是
      #1
      。至于快捷方式页面,我添加了一些可能对您来说足够的内容,但这并不是真正的通用解决方案,因为它没有考虑快捷方式,也没有解析嵌套的快捷方式(页面是另一个shorcut页面的快捷方式)。我现在想知道是否有一种简单的方法来解决快捷方式。
      lib.footerMenu = HMENU
      lib.footerMenu {
        1 = TMENU
        1 {
          wrap = <ul class="nav">|</ul>
          noBlur = 1
      
          NO = 1
          NO {
            wrapItemAndSub = <li class="first">|</li> |*| <li>|</li> |*| <li class="last">|</li>
            ATagParams = class="first" |*| |*| class="last"
            after.cObject = CONTENT
            after.cObject {
              table = tt_content
              select {
                pidInList.stdWrap.cObject = CASE
                pidInList.stdWrap.cObject {
                  key.field = doktype
      
                  default = TEXT
                  default.field = uid
      
                  4 = TEXT
                  4.field = shortcut
                }
                orderBy = sorting
                where = colPos=1
                languageField = sys_language_uid
                selectFields = uid,pid,header
              }
              wrap = <ul>|</ul>
              renderObj = TEXT
              renderObj {
                field = header
                typolink {
                  parameter.field = pid
                  section.field = uid
                }
                wrap = <li>|</li>
              }
            }
          }
        }
      }