如果在菜单中选中页面页面选项中的复选框,则覆盖 allWrap

Overwrite allWrap if checkbox in page page options is checked in menu

如果页面选项中的复选框被选中,我想覆盖错字菜单定义中的 allWrap 选项。以下页面应该突出显示,所以我需要在列表标签​​中添加一个额外的 css class。

在我的页面选项中,我有一个名为 tx_mask_highlight_nav 的布尔值。

所以在我的流体模板中,我可以使用 {page.tx_mask_highlight_nav} 进行访问。

但我的打字错误菜单定义中需要这个。

我目前的做法是这样的:

lib.menu_main = COA
lib.menu_main {
  10 = HMENU
  10 {
    entryLevel = 0
    wrap = |

    1 = TMENU
    1 {
      expAll = 1
      NO.allWrap = <li>|</li>
      NO.ATagTitle.field = abstract // description // title

      NO.allWrap.override = <li class="menu-item--bold">|</li>
      NO.allWrap.override.if {
        isTrue.data = page:tx_mask_highlight_nav
      }

      ACT = 1
      ACT.wrapItemAndSub = <li class="active">|</li>
      ACT.ATagTitle.field = abstract // description // title

      IFSUB = 1
      IFSUB.wrapItemAndSub = <li>|</li>
      IFSUB.ATagTitle.field = abstract // description // title

      ACTIFSUB = 1
      ACTIFSUB.wrapItemAndSub = <li class="active">|</li>
      ACTIFSUB.ATagTitle.field = abstract // description // title
    }

    1 {
      wrap = <ul class="dropdown menu menu--main" data-dropdown-menu>|</ul>
    }

    2 < .1
    2 {
      wrap = <ul class="menu vertical">|</ul>
    }

    3 < .2
    4 < .3
    5 < .4
  }
}

我已经尝试了其他几种方法,例如:

NO.allWrap.override = <li class="menu-item--bold">|</li>
No.allWrap.override.if {
    value = page:tx_mask_highlight_nav
    equals = 1
}

但是没有用。也许我无法访问 page:tx_mask_highlight_nav?

非常感谢您的帮助!

用字段替换数据。使用 NO.allWrap.override.if.isTrue.field = tx_mask_highlight_nav

完整的 TypoScript

lib.menu_main = COA
lib.menu_main {
  10 = HMENU
  10 {
    entryLevel = 0
    wrap = |

    1 = TMENU
    1 {
      expAll = 1
      NO.allWrap = <li>|</li>
      NO.ATagTitle.field = abstract // description // title

      NO.allWrap.override = <li class="menu-item--bold">|</li>
      NO.allWrap.override.if.isTrue.field = tx_mask_highlight_nav

      ACT = 1
      ACT.wrapItemAndSub = <li class="active">|</li>
      ACT.ATagTitle.field = abstract // description // title

      IFSUB = 1
      IFSUB.wrapItemAndSub = <li>|</li>
      IFSUB.ATagTitle.field = abstract // description // title

      ACTIFSUB = 1
      ACTIFSUB.wrapItemAndSub = <li class="active">|</li>
      ACTIFSUB.ATagTitle.field = abstract // description // title
    }

    1 {
      wrap = <ul class="dropdown menu menu--main" data-dropdown-menu>|</ul>
    }

    2 < .1
    2 {
      wrap = <ul class="menu vertical">|</ul>
    }

    3 < .2
    4 < .3
    5 < .4
  }
}