Search code examples
typo3typoscriptfluid

How do I override HMENU Special setting based on layout?


I have a menu element that is set to list the selected pages.

tt_content.my_menu {
    dataProcessing {
        10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
        10 {
            special = list
            special.value.field = pages
        }
    }
}

How can I change this to a directory of pages when a specific layout is set?

tt_content.my_menu {
    dataProcessing {
        10 {
            special {
                override = directory
                override.if.value = my-layout
                override.if.equals.field = layout
            }
        }
    }
}

Solution

  • I'm not sure if MenuProcessor? has stdWrap on its properties.

    But it should be possible to define two processors, each with an if:

    tt_content.my_menu {
        dataProcessing {
            10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
            10 {
                if {
                    value = my-layout
                    equals.field = layout
                    negate = 1
                }
                special = list
                special.value.field = pages
            }
            20 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
            20 {
                if {
                    value = my-layout
                    equals.field = layout
                }
                special = directory
                special.value.field = pages
            }
        }
    }