typo3 - 如何通过 TypoScript 获取 HMENU 项目的“级别标题”?
问题描述
我有一个菜单(带有 的 HMENU special = updated
),它为我提供了 3 个类别的最新子页面和子页面。页面结构在后端如下所示:
除了标题之外,我还想输出相应类别的名称(父级 1 页面)。
这是我的 TypoScript 尝试:
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
}
}
}
}
}
不幸的是,它不起作用,因为……</p>
special = rootline
不支持special.value
。data = leveltitle : 1
使用当前页面的 ID,而不是 TMENU 项目 ID。
有没有人有另一种方法如何使用 TypoScript 获得相应类别的标题?
编辑:背景信息/这是需要什么
使用这个菜单,我打算替换现有项目的新闻模块 ext:news。现在使用页面而不是新闻记录,并且此菜单创建列表视图。当然会添加一个 TypoScript 页面浏览器。
解决方案
我不会重建完整的菜单项生成(NO.doNotLinkIt = 1
)。
只需使用NO.after.cObject = COA
.
leveltitle : 1
如果你想拥有当前页面的标题是正确的。
如果你显示一个根行菜单也是一样的:它是为当前页面生成的。
如果您想要另一个页面的 levelfield,您需要自己构建它。
在打字稿中,您可能会使用用户函数。(有一个核心函数用于获取给定页面 id 的根行)
如果您使用 FLUID 生成菜单,则可以使用 viewhelper。(您可能会从viewhelper
menu.directory
的这个选项或VHpage.breadCrumb
in的这个选项中得到启发ext:vhs
。)
编辑:
您可以将所需的信息直接存储在pages
记录中。
向记录添加一个新字段(或使用任何未使用的字段)。
然后确保每个类别页面都包含一些页面 TS_config:
TCADefaults.pages.<yourfield> = CategoryName
使用此配置,下面的每个新页面都会自动设置此值。
当然,您需要手动或通过一些手动查询为所有现有页面设置这些值。
如果要阻止编辑者更改此值,您需要使用首页上的此 TSConfig 从编辑表单中删除该字段:
TCEForm.pages.<yourfield>.hide= 1
推荐阅读
- oracle - 如何拆分现有分区
- boost - 为什么 FindBoost.cmake 总是读取旧的 BOOST_ROOT,它不再存在,不再存在于任何存储环境变量的文件中
- kotlin - 错误:“声明多个名为...的 JSON 字段”解析具有接口中定义的 getter/setter 值的类时
- macros - 如何使 Kentico 表单中的字段可见性基于两个条件工作
- python - 如何用棍子击球使球移动?
- laravel - laravel 更新编辑数据库记录 - 提交表单时出错
- java - 将 Long/ULong 转换为带有填充零的无符号十六进制字符串
- power-automate - 将电子邮件附件保存到 Google 驱动器附件名称会自动删除该字母
- java - 包 sun.awt 不存在
- python - 使用 python 暴力破解密码的问题