问题描述
我有一个 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。