如何在Tridion中的DD4T中使用SiteEdit

时间:2012-05-30 05:45:05

标签: tridion tridion-2011 dd4t

有人可以指导我如何在DD4T代码中使用Razor模板中的SiteEdit特定语法或标签吗?我已经在其中看到了Site Edit相关的类,但是无法理解如何在视图中使用SiteEdit标签,其中有一些类似于Dreamweaver的语法,例如我们在Dreamweaver中使用的RenderComponentFieldtcdl:ComponentField。我是DD4T的新手,正在使用SiteEdit 2009 SP3和SDL Tridon 2011 SP1。

提前致谢。

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

让我们知道如何继续下去。

2 个答案:

答案 0 :(得分:13)

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

所有内容都基于DD4T SiteEditHelper类。您可以通过以下调用开始在页面视图中(</body>标记之前):

 
@Html.SiteEditPage(Model)

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

然后,对于每个Component Presentation和每个可编辑的Component Field,您还需要添加适当的标记。对于Component演示文稿,您可以使用:

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

确保在DIV或其他可以标记组件演示文稿边界的元素中写出来。对于组件字段类似的故事,您可以使用:

<div>
  @Html.SiteEditField(Model, Model.Fields["FieldName"])
  @Model.Fields["FieldName"].Value
</div>

答案 1 :(得分:5)

除了对视图的更改之外,您还需要将配置文件放在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>