【问题标题】:Sitecore Content Tree ArchitectureSitecore 内容树架构
【发布时间】:2012-12-20 17:15:30
【问题描述】:

假设在一个项目中存在一个呈现无序列表的展示组件(可能称为 ListRenderer)。我们有几个选项可以向页面上的任何给定 ListRenderer 提供数据:

  1. 在内容项上有一个 TreeList(或 TreeListEx)字段,并让 ListRenderer 从中读取。
  2. 通过演示详细信息向 ListRenderer 提供数据源(或其他参数)。

我通常在我的项目中避免使用 #1,因为它将子布局绑定到模板,这会变得非常混乱。如果您沿着这条路走下去,最终您将拥有支持项目中每个潜在子布局的字段。

所以我的解决方案倾向于选项#2,它可以解决这个问题。但是,它确实有自己的问题。我应该将这些不同的“列表”放在哪里供给定的 ListRenderer 使用?为了最大限度地重用和共享,我通常在站点根目录附近创建一个包含所有这些类型的东西的组件目录,如果我预测列表将被共享。对于内容作者来说,这似乎不太容易找到并且更难使用,他们突然不知道他们的 ListRenderer 的来源在哪里,除非他们知道如何打开演示详细信息(这对我的普通用户来说有点高级)。

如果我觉得列表不会被共享,并且非常特定于页面,我会将它们直接放在相关项目的下方。但是,这会混淆内容树,并且任何动态生成的导航子布局都必须在生成指向它的链接之前检查项目是否是实际页面。我在 Sitecore 工作的越多,使用这种方法的次数就越少,但对内容作者来说似乎更容易。使用这种方法可以更轻松地获取信息。

是否有任何行业认可的方法来解决这个问题?它一直发生在项目中,在这种情况下,我很难平衡技术和内容作者问题。

【问题讨论】:

  • 简单的答案是否定的,没有行业标准。您提到的一切都是常见的事情,即使是经验丰富的 Sitecore 开发人员也经常考虑。它主要基于要求,例如如果您支持这些模块化子布局的页面编辑器,那么您需要使用全局共享数据源文件夹的方法 #2。如果他们正在使用内容编辑器并且不喜欢演示详细信息,则有时子项目会更容易。您需要选择一种方法并将其强制用于每个项目,或者根据编辑的要求定义每个项目的方法(我的偏好)

标签: sitecore hierarchy sitecore6


【解决方案1】:

很好的问题。我已经使用了您提到的所有技术,具体取决于项目的受众和具体情况。问题在于,与 Sitecore 的所有事物一样,它们都是实现相同目标的有效方法,您将很难找到一种适用于各种情况的答案。

我也几乎总是使用 #2,但可能需要对内容作者进行再培训,并确保对内容作者能够选择的目标添加限制。我已经(在同一个项目中)构建了根附近(在共享内容文件夹中)和相关项目下的项目,具体取决于我认为会提供最佳上下文的内容。

此外,如果其他子页面存在于该项目以及列表项下方,那么我会将列表项放在单独的文件夹中(带有常见的“列表项”图标“)并将其重新排序为第一项是为了区分和清晰。

如果您想使用任何类型的个性化和 DMS,那么您将需要能够切换数据源,因此您不应该对位置进行硬编码。

您可能还(如果您还没有)想考虑使用:

Convert Data Source Paths to IDs Using the Sitecore ASP.NET CMS
- 如果您需要在以后重组内容时很有用

Queryable Datasource Locations
- 当您需要进行克隆时适用于多站点情况,或者当列表直接位于项目下方时将其设置为标准值中的默认数据源值,但让您可以灵活地更改它。

我个人更喜欢使用可查询数据源,我发现 xpath 语法更合乎逻辑。

【讨论】:

    【解决方案2】:

    正如 Mark 所说,没有真正的行业标准。

    我觉得这是需要改进的地方。 尤其是当您使用 DataSource 选项时,对于编辑者来说,事情变得不那么透明,并且随着网站规模的增长,复杂性也随之增加。

    我只能告诉你我会怎么做,这很可能和你的做法很像。

    1) 对于新闻、事件和常见问题项等概览页面,我会将项目放在概览项下方,并使用 NewsMover 共享源模块自动创建层次结构。

    2) 我将创建一个全球站点,其中包含跨站点或页面共享的项目。组件的 DataSource 项将放在此处。

    3)对于标准值上存在的组件,我会在模板中添加一个列表字段(例如,当您在内容页面上显示相关项目时)

    通常这是一个合乎逻辑的选择,有时只是一个品味问题。

    我想补充一点,我已经写了一篇blog post,介绍了如何为根据标准值设置的组件自动创建数据源项。如果您正在使用它们,这可能会对您有所帮助。

    编辑: “我通常在我的项目中避免使用 #1,因为它将子布局绑定到模板,这会变得非常混乱。如果你沿着这条路走,最终你将拥有支持项目中每个潜在子布局的字段。”

    今天我blogged 介绍了一种在内容编辑器中隐藏字段和部分的方法,如果在需要这些字段的项目上没有设置子布局,这有助于防止出现大量未使用字段的混乱你的物品。

    【讨论】:

    • 您将获得针对问题的创造性解决方案的检查以及建议。我很想听听其他人对此的看法——这似乎是一个非常可靠的想法。
    猜你喜欢
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多