带有动态uid的TYPO3 MenuProcessor

时间:2019-06-13 05:56:28

标签: typo3 typoscript typo3-9.x

我想在我的FluidTemplate中使用MenuProcessor动态。 在TypoScript中配置,我想使用cObject ViewHelper调用它,并将页面的uid传递给它: {f:cObject(typoscriptObjectPath: 'lib.menuTest', data:{menuId:'28'})}

这是我尝试过的-它应该是一个special = directory,其中包含给定的uid在special.value = XXXXXX中。

lib {
    menuTest = FLUIDTEMPLATE
    menuTest {
        templateName = MenuTest
        templateRootPaths {
            10 = EXT:hatemplate/Resources/Private/Templates/
        }

        dataProcessing {
            10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
            10 {
                special = directory
                special.value = XXXXXX
                levels = 1
                as = menuItems
            }
        }
    }
}

如果直接设置一个uid,它可以工作,但是我不知道如何插入变量。有没有人提示或可行的解决方案?

谢谢

1 个答案:

答案 0 :(得分:0)

我已经在TypoScript方面经验丰富的朋友的帮助下解决了这个问题。

我没有我想的那么错误。

这是TypoScript中的代码。我添加了模板模板,布局和部分路径,以供将来复制/粘贴:):

lib {
    menuDirectory = FLUIDTEMPLATE
    menuDirectory {
        templateName = MenuDirectory
        layoutRootPaths {
            10 = EXT:hatemplate/Resources/Private/Layouts/
        }
        templateRootPaths {
            10 = EXT:hatemplate/Resources/Private/Templates/
        }
        partialRootPaths {
            10 = EXT:hatemplate/Resources/Private/Partials/
        }

        dataProcessing {
            10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
            10 {
                special = directory
                special.value.field = menuId
                levels = 1
                as = directory
            }
        }
    }
}

使用此配置后,您可以像这样使用f:cObject ViewHelper:

<f:cObject typoscriptObjectPath="lib.menuDirectory" data="{menuId:1}" />

或内联

{f:cObject(typoscriptObjectPath: 'lib.menuDirectory', data:{menuId:1})}

这会将项目渲染到流体模板中:

enter image description here