我在Neos后端创建了菜单。每个菜单节点对应于控制分数的插件。 这些控制器操作在policy.yaml中定义为具有其流访问策略角色的资源。 菜单的模板在root.ts2中定义,我从Typo3.NeosDemoTypo3Org包中获取了一份副本。
root.ts2的mainMenu部分是
mainMenu = Menu {
entryLevel = 1
templatePath = 'resource://ABC.Demo/Private/Templates/TypoScriptObjects/MainMenu.html'
maximumLevels = 3
site = ${site}
}
MainMenu.html是:
<div class="collapse navbar-collapse navbar-main-collapse">
<ul class="nav nav-pills nav-justified">
<f:for each="{items}" as="item" iteration="menuItemIterator">
<f:then>
<li class="active">
<neos:link.node node="{item.node}">{item.label}</neos:link.node>
</li>
</f:then>
<f:else>
<li>
<neos:link.node node="{item.node}">{item.label}</neos:link.node>
</li>
</f:else>
</f:if>
</f:for>
</ul>
</div>
如果我使用{parts.mainMenu - &gt;在Default.html中的f:format.raw()},它打印在Neos站点的根目录定义的所有菜单项。
如何只在网页主菜单中显示那些用户可以访问policy.yaml中定义的相应资源的菜单项。
任何人都可以提出想法,实现它的方法。
答案 0 :(得分:2)
您应该在页面节点上设置访问保护。目前还没有此接口,但您可以为数据库中的节点定义访问角色。见表: typo3_typo3cr_domain_model_nodedata字段accessroles。 它应该是角色名称的序列化数组。 然后,这将正确反映在菜单中。并且不要忘记设置TYPO3.Neos:Editor角色以及其他编辑者将无法修改这些页面。
从每个页面获取插件并对它们进行访问检查会非常复杂,但这当然是另一种选择。我无法直接为您提供任何提示,因为每个页面的节点类型会有所不同,具体取决于插件。