如何在 2sxc 应用程序的详细信息视图中使用演示设置?

问题描述

我有一个 2sxc 应用程序,其中包含一个详细信息视图列表。所以我有两个模板:_listing.cshtml 和 _details.cshtml。

“我的详细信息”模板使用“URL 路径中的名称”字段,如下所示:resource/.*,以便在用户浏览到其 URL 时过滤单个项目。

在列表设置中,我可以为列表配置演示设置,当我编辑列表中的项目时,它们会显示出来。但是当我在详细信息模板上配置演示设置时,它们不会出现在编辑模式中。

如何让演示设置适用于我的应用中项目的详细信息视图? (我知道我可以将这些字段作为内容类型中的普通内容字段,但这似乎是一个hacky 解决方法......但如果必须的话,我会这样做)

解决方法

这可以做到,但您必须正确接线。

详细信息视图通常只使用查询来获取带有 ID 的项目。但是,在这种情况下,您希望从当前列表/模块中获取带有 ID 的项目。因为只有在列表的上下文中,项目才具有 Presentation 属性。

因此使用 CmsBlock DataSource(在 v12 中)或 ModuleDataSource(在之前的版本中)获取当前模块的数据,然后通过 ID 过滤输出。

一个简单的开始方法是创建一个新的查询 - 它会显示初始设置以获取当前列表/模块的数据。

,

我在没有尝试或测试的情况下回答,所以希望像丹尼尔这样的人会以更好的方式加入,但我认为问题在于上下文。我假设您从列表视图编辑?通过 TabToolbar 显示编辑蓝圆铅笔?当您在列表视图上编辑项目时,Presentation 实体位于该模块和列表视图的上下文中。

因此,当您在 Detail View 中显示时,Presentation 项不存在,因为您没有从那里启动 Edit。

您是否尝试过不在列表视图上发出 TagToolbar 而只允许在详细视图中进行编辑?或者也可以在细节视图上发出它,看看你是否得到了不同的设置?

如果这行得通,那就很有趣了。这意味着对于每个内容项,您可以连接不同的 Presentation 内容类型,并且您可以为 List 与 Detail 设置不同的 Presentation。