1

Neos バックエンドでメニューを作成しました。各メニュー ノードは、コントローラ アクションのプラグインに対応します。これらのコントローラー アクションは、policy.yaml で、フロー アクセス ポリシー ロールを持つリソースとして定義されます。メニューのテンプレートは、Typo3.NeosDemoTypo3Org パッケージからコピーした root.ts2 で定義されています。

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 で定義された対応するリソースにアクセスできる Web ページのメイン メニューに、これらのメニュー項目のみを表示するにはどうすればよいですか。

誰でもアイデア、それを達成する方法を教えてください。

4

1 に答える 1

2

ページノードにアクセス保護を設定する必要があります。現在、このためのインターフェースはまだありませんが、データベース内のノードのアクセス ロールを定義できます。次の表を参照してください: Typo3_typo3cr_domain_model_nodedata フィールド アクセスロール。これは、ロール名のシリアル化された配列である必要があります。これにより、メニューに正しく反映されます。そして、TYPO3.Neos:Editor ロールも設定することを忘れないでください。そうしないと、編集者はそれらのページを変更できなくなります。

各ページからプラグインを取得し、それらに対してアクセス チェックを行うのは非常に複雑ですが、もちろんそれも別のオプションです。プラグインによってページごとにノード タイプが異なるため、そのヒントを直接提供することはできません。

于 2014-04-24T18:01:45.663 に答える