Kentico 10 - 使用中继器显示多种页面类型

Kentico 10 - Use a repeater to display multiple page types

我们目前为博客、新闻和活动使用 oob 页面类型。对于这些类型中的每一种,我们都有一个页面,其中包括一个转发器以显示该类型页面的列表。我们还希望有一个包含转发器的页面,该转发器在一个位置显示所有博客、新闻和活动页面,并按创建日期排序。
我在 devnet 上看到一些旧评论 (here, here) 说虽然转发器可以呈现多种页面类型,但呈现的字段在每种页面类型中必须相同。建议的解决方法是在每种页面类型中创建相同的字段,或者创建自定义 SQL 查询并使用查询转发器呈现数据。我已经这样做了,它工作得很好,但创建起来非常麻烦,而且很难维护。 (例如,如果我们想添加其他页面类型。)任何人都可以建议 Kentico 10 中可用的更开箱即用的方法吗?

更新:

我正在尝试按照 Brenden 的描述完成此操作,但 运行 遇到了麻烦。 我的页面结构如下:

Root
.RollupPage (CMS.MenuItem)
..BlogPosts (CMS.Blog)
...January 2017 (CMS.BlogMonth)
....blog post 1 (CMS.BlogPost)
...February 2017 (CMS.BlogMonth)
....blog post 2 (CMS.BlogPost)
..Events (CMS.MenuItem)
...Event1 (CMS.BookingEvent)
...Event2 (CMS.BookingEvent)

我曾尝试使用通用查看器,但无法获取 return 任何数据。

我配置了:

Path: /RollupPage/%
Page types: CMS.BlogPost;CMS.BookingEvent
Hierarchical Transformation: CMS.MenuItem.HierTrans1

HierTrans1 具有以下转换:

CMS.BlogPost.Default (Item transformation for type CMS.BlogPost)
CMS.BookingEvent.EventCalendarItem (Item transformation for type CMS.BookingEvent)

这些根本不是定制的;它们是标准的 OOB 转换,所以我可以看到它的工作原理。

当我查看RollupPage 时,通用查看器没有任何显示。

我尝试使用具有与通用查看器相同设置的分层查看器。它有点管用。它显示了我的预订活动,但没有显示任何博客 posts。然而,使用相同的博客 post 转换 (CMS.BlogPost.default) 以及 Path 设置为 /RollupPage/BlogPosts/% 的分层查看器正确显示了我的博客 posts,但显然,确实不显示我的预订活动。

到目前为止我得到的结果让我想到 a) 我创建页面的方式阻止通用查看器遍历整个树 and/or b) 分层查看器要么深入几个级别,或者也可能被阻止遍历树...当我编辑或查看这些 Web 部件时,没有记录任何事件。

知道我做错了什么吗?

对于此场景,请使用通用查看器。原因是您可以创建一个分层转换,它对每个独特的页面类型都有不同的转换。您很可能根本不会使用层次结构,但您可以简单地为不同的页面类型添加 3 个不同的项目转换。

其他方式是这样

  1. 通过检查对象 classname 在转换中评估权利 fieldname 并分配适当的值。

  2. 通过检查对象类名动态分配转换

您可以使用 分层查看器通用查看器,如 Brenden Kehren 所述,以实现您描述的目标。

配置 Web 部件时,您必须 select 层次结构中包含的所有 页面类型 ,在您的情况下:CMS.MenuItem、CMS.Blog、CMS.Blog月、CMS.BlogPostCMSBookingEvent.

创建要与您的查看器一起使用的分层转换,并为您希望显示的每个项目添加一个项目转换。还要确保正确配置每个转换的 Level 设置(-1 将转换应用到所有级别)。

对于 Universal Viewer,有必要检查 属性 Load hierarchical data 部分 配置的扩展设置

另外请注意,如果您正在查看当前页面的子文档,您可以将路径 属性 留空。

作为参考,公司站点 示例站点的内容树路径中还有一个示例 示例 > Web 部件 > 列表和查看器 > 页面 > 分层查看器(或通用查看器)。

希望对您有所帮助!