Typo3 如何获得;leveltitle“;通过打字输入的纸牛产品?
我有一个菜单(HMENU withTypo3 如何获得;leveltitle“;通过打字输入的纸牛产品?,typo3,typoscript,typo3-9.x,typo3-10.x,Typo3,Typoscript,Typo3 9.x,Typo3 10.x,我有一个菜单(HMENU withspecial=updated),它提供了来自3个类别的最新子页面和子页面。 在后端,页面结构如下所示: 除了标题之外,我还想输出相应类别的名称(父级别1页面) 这是我的打字尝试: lib.myMenu = HMENU lib.myMenu { special = updated special{ value.field = 10,11,12 beginAtLevel = 1 limit = 99
special=updated
),它提供了来自3个类别的最新子页面和子页面。
在后端,页面结构如下所示:
除了标题之外,我还想输出相应类别的名称(父级别1页面)
这是我的打字尝试:
lib.myMenu = HMENU
lib.myMenu {
special = updated
special{
value.field = 10,11,12
beginAtLevel = 1
limit = 99
}
1 = TMENU
1{
NO{
doNotLinkIt = 1
stdWrap.cObject = COA
stdWrap.cObject {
10 = TEXT
10{
wrap = <h3>|</h3>
field = seo_title // title
typolink.parameter.field = uid
}
20 = HMENU
20{
wrap = <div class="category attempt-1">|</div>
special = rootline
special.range = 1|1
special.value.field = uid # does not work
1 = TMENU
1.NO.allWrap = |
}
30 = TEXT
30{
wrap = <div class="category attempt-2">|</div>
data = leveltitle : 1 # does not work as expected
}
}
}
}
}
lib.myMenu=humenu
lib.myMenu{
特殊=更新
特别的{
value.field=10,11,12
beginAtLevel=1
极限=99
}
1=t菜单
1{
没有{
doNotLinkIt=1
stdWrap.cObject=COA
stdWrap.cObject{
10=文本
10{
包裹=|
字段=搜索引擎优化标题//标题
typlink.parameter.field=uid
}
20=汉努
20{
包裹=|
特殊=根线
特殊范围=1 | 1
special.value.field=uid#不起作用
1=t菜单
1.NO.allWrap=|
}
30=文本
30{
包裹=|
data=leveltitle:1#未按预期工作
}
}
}
}
}
不幸的是,它不起作用,因为
special=rootline
不支持special.value
data=leveltitle:1
使用当前页面的ID,而不是TMENU项ID使用此菜单,我打算替换现有项目的新闻模块ext:news。现在使用的是页面而不是新闻记录,此菜单创建列表视图。当然,将添加一个打字脚本页面浏览器。我不会重新生成完整的菜单项生成(
NO.doNotLinkIt=1
)
只需使用NO.after.cObject=COA
如果希望获得当前页面的标题,则leveltitle:1
是正确的
如果显示根行菜单,情况也一样:它是为当前页面生成的
如果您想要另一个页面的levelfield,您需要自己构建它
- 在打字脚本中,可以使用userfunction。(有一个核心函数用于获取给定页面id的根行)
- 如果使用流体生成菜单,则可以使用viewhelper。(您可能从
中获得灵感)ext:vhs
编辑: 您可以将所需信息直接存储在
页面
记录中
向记录中添加新字段(或使用任何未使用的字段)
然后确保每个类别页面都包含一些页面TS\U配置:
TCADefaults.pages.<yourfield> = CategoryName
TCADefaults.pages.=类型名
使用此配置,下面的每个新页面将自动设置此值。当然,您需要手动或通过一些手动查询为所有现有页面设置这些值 如果要阻止编辑器更改此值,则需要从编辑表单中删除该字段,并在首页上显示此TSConfig:
TCEForm.pages.<yourfield>.hide= 1
TCEForm.pages..hide=1
我不会重新生成完整的菜单项生成(NO.doNotLinkIt=1
)
只需使用NO.after.cObject=COA
如果希望获得当前页面的标题,则leveltitle:1
是正确的
如果显示根行菜单,情况也一样:它是为当前页面生成的
如果您想要另一个页面的levelfield,您需要自己构建它
- 在打字脚本中,可以使用userfunction。(有一个核心函数用于获取给定页面id的根行)
- 如果使用流体生成菜单,则可以使用viewhelper。(您可能从
中获得灵感)ext:vhs
编辑: 您可以将所需信息直接存储在
页面
记录中
向记录中添加新字段(或使用任何未使用的字段)
然后确保每个类别页面都包含一些页面TS\U配置:
TCADefaults.pages.<yourfield> = CategoryName
TCADefaults.pages.=类型名
使用此配置,下面的每个新页面将自动设置此值。当然,您需要手动或通过一些手动查询为所有现有页面设置这些值 如果要阻止编辑器更改此值,则需要从编辑表单中删除该字段,并在首页上显示此TSConfig:
TCEForm.pages.<yourfield>.hide= 1
TCEForm.pages..hide=1
我找到了一个纯打字稿解决方案,它可能不是很优雅,但可以工作:
lib.myMenu = HMENU
lib.myMenu {
special = updated
special{
value.field = 10,11,12
beginAtLevel = 1
limit = 99
}
1 = TMENU
1{
NO{
doNotLinkIt = 1
stdWrap.cObject = COA
stdWrap.cObject {
10 = TEXT
10{
wrap = <h3>|</h3>
field = seo_title // title
typolink.parameter.field = uid
}
20 = HMENU
20{
wrap = <div class="category">|</div>
special = list
special.value.field = pid
1 = TMENU
1{
NO{
doNotLinkIt = 1
stdWrap.override{
# Overwrite it if we are not yet at the category level
if{
# The ID of the page parent to the categories ("Website") is 1618
equals = 1618
value.field = pid
negate = 1
}
cObject = HMENU
cObject{
special = list
special.value.field = pid
1 = TMENU
1.NO.doNotLinkIt = 1
}
}
}
}
}
}
}
}
}
lib.myMenu=humenu
lib.myMenu{
特殊=更新
特别的{
value.field=10,11,12
beginAtLevel=1
极限=99
}
1=t菜单
1{
没有{
doNotLinkIt=1
stdWrap.cObject=COA
stdWrap.cObject{
10=文本
10{
包裹=|
字段=搜索引擎优化标题//标题
typlink.parameter.field=uid
}
20=汉努
20{
包裹=|
特殊=列表
special.value.field=pid
1=t菜单
1{
没有{
doNotLinkIt=1
stdWrap.override{
#如果我们尚未处于类别级别,请覆盖它
如果{
#类别(“网站”)的父页面ID为1618
等于1618
value.field=pid
10 = COA
10 {
### left menu table column
10 = LOAD_REGISTER
10 {
ulClass = col-left
}
### right menu table column
20 = LOAD_REGISTER
20 {
ulClass = col-right
}
30 = HMENU
30 {
special = list
special.value = 1
1 = TMENU
# ...
3 = TMENU
3 {
stdWrap {
preCObject = COA
preCObject {
10 = RESTORE_REGISTER
}
dataWrap = <ul class="{register:ulClass}">|</ul>
}
wrap =
SPC = 1
SPC {
allStdWrap {
replacement {
10 {
search = ---
replace =
}
}
dataWrap = </ul>|<ul class="{register:ulClass}">
}
}
}
}
}