【问题标题】:Embed Ektron smartform in another Ektron smartform将 Ektron smartform 嵌入另一个 Ektron smartform
【发布时间】:2013-02-28 19:08:36
【问题描述】:

(使用 Ektron 版本 8.6.1)

假设我有一个智能表单ContactInfo,类似于:

<ContactInfo>
    <Name></Name>
    <Email></Email>
</ContactInfo>

我想创建另一个智能表单(例如NewsArticle)并在里面“嵌入”ContactInfo

<NewsArticle>
    <Title></Title>
    <Summary></Summary>
    ...
    <ContactInfo>
        <Name></Name>
        <Email></Email>
    </ContactInfo>
</NewsArticle>

到目前为止,我的解决方案是包含一个Resource Selector 字段来添加对现有智能表单实例的引用。我更愿意在配置级别进行关联,以使数据输入工作流程更直观。

我正在使用 Bill Cava 的 ContentTypes 并从 smartform XSD 生成类,因此它还可以使演示代码更自然和类型安全,因为可以直接访问嵌入式字段(而不是必须基于另一个请求在参考 ID 上,它可能是也可能不是我期望的智能表单的 ID)。

我认为这不可能开箱即用;我不反对破解 Workarea 代码来完成类似的工作。有没有人遇到过这样的场景?

我从 Ektron 代表那里听说,他们计划在即将到来的夏季版本中提升 smartforms 的作用——谁能提供更多关于这一点的信息?也许会支持我所描述的 smartform 组合?

【问题讨论】:

  • 我发现这个dev.ektron.com/kb_article.aspx?id=16550 讨论使用自定义对话框添加自定义工具栏按钮 - 似乎是完成我上面描述的第一步。如果我能取得一些进展,将发布更新。

标签: ektron


【解决方案1】:

目前无法进行 smartform 合成。根据为什么/如果您确实需要第二个 smartform 定义,您可以只在新闻文章中定义联系信息。

如果联系信息智能表单以一对多或多对多的方式与新闻文章相关,那么使用资源选择器是我所知道的创建所需关系的唯一方法。

如果关系是一对一或多对一,那么我建议取消单独的 smartform 定义。

如果您可以为内容作者阐明您尝试实现的工作流程,我可能会做出更好的回应。

【讨论】:

    【解决方案2】:

    Content Types 代表 CMS 中的数据。假设在您的示例中,NewsArticle 包含对 ContactInfo 的引用。从表示的角度来看,将 ContactInfo 嵌入到 NewsArticle 中可能是有意义的,但它会将 ContentTypes 变成单向数据模型。您将失去构建新 NewsArticle 并将其持久保存到 CMS 中的能力。

    可能对您有用的方法是将内容类型保持原样,并使用资源选择器中的 ContactInfo 的 id。然后创建一个 NewsArticleDisplayModel... 本质上是一个包含新闻文章数据以及 ContactName 和 ContactEmail 的视图模型。

    现在,如果您需要可搜索的联系信息,您可以使用CMS Extensions 并挂钩到 OnBeforePublish 事件以使用来自 ContactInfo 的名称更新可搜索的元数据,以便可以使用搜索 NewsArticle来自其他“嵌入式”资源的值。不过,这可能会有点棘手……理想情况下,您还必须挂钩到 ContactInfo 对象的发布事件,以防该方面也发生变化。然后创建一个自定义数据库表来跟踪哪些 NewsArticle 内容 ID 正在使用特定的 ContactInfo?

    您的解决方案可以根据需要变得尽可能复杂,但我会将内容块分开。如果不出意外,您最终会得到一个更易于维护和升级的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-09
      • 2013-03-16
      • 2013-03-15
      相关资源
      最近更新 更多