我找到了一種方法來創建一個帶有已定義頁面的菜單,方法是在每個頁面中添加一個複選框,以便我可以選擇要在菜單中顯示哪些頁面。
開始通過編輯NodeTypes.yaml
,延長Page
NODETYPE有這個額外的屬性
ui:
inspector:
groups:
'footernav':
label: 'Footer Menu'
properties:
'footermenu':
type: boolean
defaultValue: FALSE
ui:
label: 'Show in footer?'
inspector:
group: 'footernav'
之後,創建在同一文件中的FooterMenu
NODETYPE。
'Vendor.Site:FooterMenu':
superTypes: ['TYPO3.Neos.NodeTypes:Menu']
ui:
label: 'Footer Menu'
group: 'structure'
創建它的typoscript文件。
prototype(Vendor.Site:FooterMenu) < prototype(TYPO3.Neos.NodeTypes:Menu) {
entryLevel = 1
templatePath = 'resource://Neos.Bootsite/Private/Templates/TypoScriptObjects/FooterMenu.html'
}
編輯Root.ts2
文件,添加在Page
對象
footermenu = ${q(node).property('footermenu')}
最後但並非最不重要的,創建FooterMenu.html
{namespace neos=TYPO3\Neos\ViewHelpers}
<ul>
<f:render section="itemsList" arguments="{items: items}" />
</ul>
<f:section name="itemsList">
<f:for each="{items}" as="item">
<f:if condition="{item.node.properties.footermenu}">
<neos:link.node node="{item.node}">{item.label}</neos:link.node>
</f:if>
<f:if condition="{item.subItems}">
<f:render section="itemsList" arguments="{items: item.subItems}" />
</f:if>
</f:for>
</f:section>
我不確定「定義頁面」的含義。你能詳細說明你想達到什麼嗎? –
我們想創建一個選定頁面的菜單。所以他想選擇幾個節點並創建一個菜單 - 沒有魔法。 – pgampe