typoscript:如果选择了某个backend_layout,则不显示子菜单

时间:2016-10-20 04:02:42

标签: typo3 typoscript typo3-7.6.x

我制作了一个特殊的平移子菜单,其中包含可以插入的图标,选择一个名为 pagets__panmenu 的特定backend_layout,如果选择了该布局,则主菜单不应显示子菜单并链接到该页面打开子...

我使用的是typo3 V7.6.11和流畅的内容

读取值的部分可以正常工作:

 pdf("plot.pdf", width = 6.8, height = 4.7)
 multiplot(sbvp,sbvp1,sbvp2)
 dev.off()
 system('open "plot.pdf"')

这是我尽力配合,但不起作用:

NO = 1
NO {
  before.cObject = LOAD_REGISTER
  before.cObject{
    panmenu.cObject = TEXT
    panmenu.cObject.data.dataWrap = DB:pages:{field:uid}:backend_layout
  }
  ATagBeforeWrap = 1
  wrapItemAndSub = <li>|</li>
  stdWrap.htmlSpecialChars = 1
}

我知道2&lt; .1必须被压制,我试图让 if 工作以保持风格和链接干净的初学者...

1 个答案:

答案 0 :(得分:1)

首先:你设置了TMENU.IFSUB = 1? 此外,您在IFSUB中所做的一切都没有效果。

现在有些一般性的想法:

a)通常,后端布局用于切换整个页面模板:

page.10 = FLUIDTEMPLATE
page.10 {
  file.stdWrap.cObject = CASE
  file.stdWrap.cObject {
    key.data = pagelayout

    default = TEXT
    default.value = {$myTemplatePath}/Standard.html

    1 = TEXT
    1.value = {$myTemplatePath}/Home.html

    2 = TEXT
    2.value = {$myTemplatePath}/Landing.html

  }
  layoutRootPath = {$myLayoutPath}
  partialRootPath = {$myPartialPath}
}

因此,这会启动整个页面的前端渲染,其中带有uid 1的backend_layout将使用Home.html模板,带有uid 2的backend_layout将使用Landing.html模板,以及所有其他模板(=默认值)将使用Standard.html模板。

如果您通过此方法构建网站,我建议您执行

# that's the original version of your menu
lib.panmenu = HMENU
lib.panmenu {
 // ...
}

# make a copy of the original 
lib.panmenu_variant < lib.panmenu
# modify it as required 
lib.panmenu_variant.1.NO {   
  // ... 
}

现在,在您的页面模板中(您可以通过上面的CASE单独调用),您可以使用

<f:cObject typoscriptObjectPath="lib.panmenu" />

<f:cObject typoscriptObjectPath="lib.panmenu_variant" />

b)但是如果您不想遵循这种方法,您还应该能够在任何CASE上使用backend_layout cObject。事实证明,CASE变种对我来说更加健壮。

下面&#39;我如何尝试让CASE正常工作(未经测试!)

// suppose temp.navigation_main is your full menu
temp.navigation_main_variant < temp.navigation_main 
temp.navigation_main_variant {
    // modify the menu as you please
    10.2 >
    10.1.IFSUB.wrapItemAndSub = <li>|</li>
}

// use lib.nav in your page
lib.nav = CASE
lib.nav {
    key.data = pagelayout
    // normally, lib.nav is the full navigation
    default < lib.navigation_main
    // except if be layout 1 is selected
    1 < lib.navigation_main_variant
  }
}

c)我在LOAD_REGISTERif年前尝试过TypoScript结构,他们总是让我发疯。我不会为它们投入太多精力,因为它们似乎是传统参数,而不是TYPO3逻辑的未来发展方式。