如何使用当前页面 Pirnaha CMS 的所有块的列表创建 DataSelectField
Posted
技术标签:
【中文标题】如何使用当前页面 Pirnaha CMS 的所有块的列表创建 DataSelectField【英文标题】:How to create a DataSelectField with a list of all the blocks of the current page Pirnaha CMS 【发布时间】:2022-01-19 13:53:29 【问题描述】:我正在尝试为用户制作一个 TabView。我想出的想法是在管理器中创建一个 GroupBlock 来保存 TabView 的所有按钮(“选项卡”),我想为每个按钮提供一个 DataSelectField,管理器可以在其中选择选项卡应包含的块。我查看了 PageItem 示例(page item),但我不知道如何获取当前页面的所有块。有什么想法吗?或者应该如何创建 TabView? 谢谢
【问题讨论】:
【参考方案1】:所以,我找到了解决方法。我没有使用 DataSelectField。我所做的是创建一个 TabBlock(块),它有一个带有字符串键的字典和一个 BaseTabBlockGroup 列表。此 BaseTabBlockGroup 是一个 BlockGroup,其中包含一个 StringField,它是 Tab 的名称。在页面模型中,我创建了一个服务来搜索页面中的所有块,并且对于每个 BaseTabBlockGroup,它要么在字典中创建一个新条目,要么将块组附加到现有列表中。从页面的块列表中删除 BaseTabBlockGroup 元素也很重要,以便它们只出现在 TabView 中。
为了显示 TabView,我使用了 Bootstrap 5 (navs and tabs bs5)。我不会为此提供实现,因为我认为这很容易做到。
谢谢!
【讨论】:
以上是关于如何使用当前页面 Pirnaha CMS 的所有块的列表创建 DataSelectField的主要内容,如果未能解决你的问题,请参考以下文章
Magento 2 - 如何在另一个 phtml 文件、xml 布局、静态块和 cms 页面中调用自定义 phtml 文件?
SAP Spartacus 如何获得当前渲染页面的 CMS 元数据