1

我在 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>

如果我在 Default.html 中使用 {parts.mainMenu -> f:format.raw()},它会打印在 Neos 站点根目录中定义的所有菜单项。

如何仅在用户有权访问 policy.yaml 中定义的相应资源的网页主菜单中显示那些菜单项。

任何人都可以给出一个想法,实现它的方法。

4

1 回答 1

2

您应该在页面节点上设置访问保护。目前还没有此接口,但您可以为数据库中的节点定义访问角色。见表:typo3_typo3cr_domain_model_nodedata 字段访问角色。它应该是角色名称的序列化数组。这将正确反映在菜单中。并且不要忘记设置 TYPO3.Neos:Editor 角色,否则编辑将无法修改这些页面。

从每个页面获取插件并对它们进行访问检查会非常复杂,但这当然可以是另一种选择。我不能直接给你任何提示,因为每个页面的节点类型会有所不同,具体取决于插件。

于 2014-04-24T18:01:45.663 回答