0

我定义了一个自定义文档节点Project,它有一个子节点gallery(只是图像的内容集合):

'Vendor.Website:Project':
  superTypes: ['TYPO3.Neos:Document']
  childNodes:
    gallery:
      type: 'TYPO3.Neos:ContentCollection'
      constraints:
        nodeTypes:
          'TYPO3.Neos.NodeTypes:Image': TRUE
          '*': FALSE

对应的 TypoScript 是:

prototype(TYPO3.Neos:PrimaryContent).project {
    condition = ${q(documentNode).is('[instanceof Vendor.Website:Project]')}
    type = 'Vendor.Website:Project'
}

prototype(Vendor.Website:Project) < prototype(TYPO3.Neos:Content) {
    node = ${node}

    gallery = TYPO3.Neos:ContentCollection {
        nodePath = 'gallery'
    }
}

对应的模板是:

{namespace neos=TYPO3\Neos\ViewHelpers}
{namespace flow=TYPO3\Flow\ViewHelpers}
{namespace ts=TYPO3\TypoScript\ViewHelpers}
<article>
    <ts:render path="gallery" />
</article>

但是只要gallery没有命名内容集合,main我就只能gallery使用内容画布将图像添加到其中,而不能使用create new禁用的结构树按钮。有人知道为什么吗?

更新

我还尝试了使用评论中建议的替代页面渲染器:

project < page
project {
    body {
        templatePath = 'resource://Vendor.Website/Private/Templates/Page/Project.html'

        content {
            main >
            gallery = PrimaryContent
            gallery {
                nodePath = 'gallery'
            }
        }
    }
}

为此,我还更新了节点类型定义:

'Vendor.Website:Project':
  superTypes: ['TYPO3.Neos:Document']
  childNodes:
    gallery:
      type: 'TYPO3.Neos:ContentCollection'
      constraints:
        nodeTypes:
          'TYPO3.Neos.NodeTypes:Image': TRUE
          '*': FALSE
  properties:
    'layout':
      type: string
      defaultValue: 'project'

至少是project模板:

<!DOCTYPE html>
{namespace neos=TYPO3\Neos\ViewHelpers}
{namespace flow=TYPO3\Flow\ViewHelpers}
{namespace ts=TYPO3\TypoScript\ViewHelpers}
<html>
<head>
</head>
<body>
<f:section name="body">
    <main>
        {content.gallery -> f:format.raw()}
    </main>
</f:section>
</body>
</html>

但结果相同。

4

0 回答 0