9

谁能指导我如何在 DD4T 代码中的 Razor 模板中使用 SiteEdit 特定语法或标签?我在其中看到了与 Site Edit 相关的类,但无法理解如何在视图中使用 SiteEdit 标签,其中有一些类似于 Dreamweaver 的语法RenderComponentFieldtcdl:ComponentField我们在 Dreamweaver 中使用的语法。我对 DD4T 非常陌生,并且正在使用 SiteEdit 2009 SP3 和 SDL Tridon 2011 SP1。

提前致谢。

更新:我们已经尝试了答案中提到的实现,但不幸的是,当我们在代理中访问页面时出现错误,说明“无效模板 - HTML 无效,可能是因为您的模板代码产生了无效的 HTML,例如里面的 ap 标签另一个 p 标签。使用验证器(例如 W3C 标记验证服务)检查您的 HTML,更正您的模板,然后重新发布。” 我猜这是因为我们在组件和页面模板中使用了动态页面和组件 TBB,因此 Xml 内容被推送到 html 页面中。

让我们知道如何进一步继续。

4

2 回答 2

13

SiteEdit 标记不会像在 Dreamweaver 模板中那样生成,您自己负责将可编辑字段的标记放置在 Razor 视图中。这样做的好处是它适用于 SiteEdit 2009 SP3 和 UI 2012 的类似功能。UI 2012 的缺点是它没有(尚未)监听您可以在组件或页面模板上设置的启用内联编辑(我们应该考虑未来的 DD4T 版本)。

一切都基于 DD4TSiteEditHelper类。您从页面视图(在</body>标签之前)开始,通过以下调用:

@Html.SiteEditPage(Model)

这将写出页面标记,如果您在 SiteEdit_config.xml 中将样式设置为“SiteEdit2012”,它还将写出 UI 2012 所需的引导脚本。

然后对于每个组件表示和每个可编辑的组件字段,您还需要添加适当的标记。对于组件演示,您可以使用:

@{var ComponentPresentation = ViewBag.ComponentPresentation as IComponentPresentation;}
<div>
  @Html.SiteEditComponentPresentation(ComponentPresentation)
</div>

确保将其写在 DIV 或其他可以标记组件表示边界的元素中。对于 Component Fields 类似的故事,您可以使用:

<div>
  @Html.SiteEditField(Model, Model.Fields["FieldName"])
  @Model.Fields["FieldName"].Value
</div>
于 2012-05-30T08:17:11.797 回答
5

除了对视图的更改,正如 Bart 所描述的,您还需要在 Web 应用程序的根目录中放置一个名为 SiteEdit_config.xml 的配置文件。它应该如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<siteEdit enabled="true" tridionHostUrl="http://tridion.my.com">
  <contextPublications>
    <contextPublication id="10" componentPublication="3" pagePublication="9" publishPublication="10" />
    <contextPublication id="11" componentPublication="3" pagePublication="9" publishPublication="11" />
  </contextPublications>
</siteEdit>

您必须在此处列出所有活跃的出版物。DD4T 尝试将您的当前页面与正确的上下文发布相匹配(基于“id”属性)。如果找不到,SiteEdit 将被禁用。其他属性允许您控制 SiteEdit 的行为。

  • componentPublication:将在此处创建新组件
  • pagePublication:将在此处创建新页面(在 Tridion UI 2012 中未使用)
  • publishPublication:页面和组件将从这个上下文中重新发布(通常与 id 一致)

DD4T 也可以轻松配置为与 Tridion UI 2012 一起使用。只需更改配置中的第一个元素,如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<siteEdit enabled="true" style="SiteEdit2012" tridionHostUrl="http://tridion.my.com">
...
</siteEdit>
于 2012-05-31T09:23:49.287 回答