将Ektron smartform嵌入另一款Ektron smartform中

时间:2013-02-28 19:08:37

标签: ektron

(使用Ektron版本8.6.1)

说我有一个smartform ContactInfo,类似于:

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

我想创建另一个smartform(例如NewsArticle)和“嵌入”ContactInfo

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

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

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

我认为这不是开箱即用的;我并不反对黑客攻击Workarea代码来制作类似这样的工作。有没有人有这种情况的经验?

我从一位Ektron代表那里得知他们正计划在即将到来的夏季版本中提升smartforms的作用 - 有人能提供更多信息吗?也许支持像我所描述的智能形式组合?

2 个答案:

答案 0 :(得分:1)

目前无法进行智能表格构图。根据为什么/如果您确实需要第二个智能形式定义,您可以在新闻文章中定义联系信息。

如果联系信息smartforms以一对多或多对多的方式与新闻文章相关,那么使用资源选择器就是我所知道的唯一方式来创建您正在寻找的关系。

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

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

答案 1 :(得分:0)

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

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

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

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