TYPO3 确定菜单项的页面类型并用自定义 class 包裹 div
TYPO3 determine page type of menu item and wrap div with custom class around it
我的目标是对不同的页面类型应用不同的导航逻辑。例如 shortcut
类型将是容器(FE 中的下拉列表,快捷方式本身是虚拟的 link),standard
类型 - 包含您可以导航到的内容的页面。因此,当在 FE 导航中用户选择页面时:
drop-down list appears
if (type of page in list == standard)
can navigate to page in list;
else if (type of page in list == shortcut)
GO TO drop-down list appears
我知道你可以这样做:
lib {
main-nav = HMENU
main-nav {
1 = TMENU
1 {
expAll = 1
NO = 1
NO.wrapItemAndSub = <li>|</li>
NO.stdWrap.cObject = CASE
NO.stdWrap.cObject {
key.field = doktype
default = TEXT
default {
field = title
}
# standard page type
1 = TEXT
1 {
field = title
wrap = <div>|</div>
}....
因此,如果页面类型为 standard
。
,您将获得用 div
包裹的页面标题
但是我需要做什么来包装整个菜单项而不是仅仅包装标题?
我认为您需要结合使用 HTML、CSS 和 javascript。
在打字稿中,您根据页面类型准备了具有不同标记的 HTML。然后您的 javascript 必须处理点击事件,以防出现快捷方式页面,点击应该打开下拉菜单而不是转到该页面。 (添加事件处理程序)
所以你需要给 javascript 一些东西来识别快捷方式页面。
使用您提到的 CASE 对象,您可以使用所有必要的信息构建适当的 HTML(您可以使用数据属性)。
要获得更详细的帮助,您需要更具体地说明您想要实现的目标。
如果只是将 div 放在整个子菜单周围,我想你已经得到的应该应用于 wrapItemAndSub 而不是
lib {
main-nav = HMENU
main-nav {
1 = TMENU
1 {
expAll = 1
NO = 1
NO.wrapItemAndSub.cObject = CASE
NO.wrapItemAndSub.cObject {
key.field = doktype
default = TEXT
default {
value = <li>|</li>
}
# standard page type
1 = TEXT
1 {
value = <li><div>|</div></li>
}....
我的目标是对不同的页面类型应用不同的导航逻辑。例如 shortcut
类型将是容器(FE 中的下拉列表,快捷方式本身是虚拟的 link),standard
类型 - 包含您可以导航到的内容的页面。因此,当在 FE 导航中用户选择页面时:
drop-down list appears
if (type of page in list == standard)
can navigate to page in list;
else if (type of page in list == shortcut)
GO TO drop-down list appears
我知道你可以这样做:
lib {
main-nav = HMENU
main-nav {
1 = TMENU
1 {
expAll = 1
NO = 1
NO.wrapItemAndSub = <li>|</li>
NO.stdWrap.cObject = CASE
NO.stdWrap.cObject {
key.field = doktype
default = TEXT
default {
field = title
}
# standard page type
1 = TEXT
1 {
field = title
wrap = <div>|</div>
}....
因此,如果页面类型为 standard
。
div
包裹的页面标题
但是我需要做什么来包装整个菜单项而不是仅仅包装标题?
我认为您需要结合使用 HTML、CSS 和 javascript。
在打字稿中,您根据页面类型准备了具有不同标记的 HTML。然后您的 javascript 必须处理点击事件,以防出现快捷方式页面,点击应该打开下拉菜单而不是转到该页面。 (添加事件处理程序)
所以你需要给 javascript 一些东西来识别快捷方式页面。
使用您提到的 CASE 对象,您可以使用所有必要的信息构建适当的 HTML(您可以使用数据属性)。
要获得更详细的帮助,您需要更具体地说明您想要实现的目标。
如果只是将 div 放在整个子菜单周围,我想你已经得到的应该应用于 wrapItemAndSub 而不是
lib {
main-nav = HMENU
main-nav {
1 = TMENU
1 {
expAll = 1
NO = 1
NO.wrapItemAndSub.cObject = CASE
NO.wrapItemAndSub.cObject {
key.field = doktype
default = TEXT
default {
value = <li>|</li>
}
# standard page type
1 = TEXT
1 {
value = <li><div>|</div></li>
}....