tridion - 如何在Tridion的DD4T中使用SiteEdit

标签 tridion tridion-2011 dd4t

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

提前致谢。

更新:我们已经尝试了答案中提到的实现,但是很遗憾,我们在访问代理中的页面时收到错误消息,指出“无效的模板-HTML无效,可能是因为您的模板代码生成了无效的HTML,例如内部的ap标记另一个p标签。请使用W3C标记验证服务之类的验证器检查HTML,更正您的模板,然后重新发布。”
我猜这是因为Xml内容由于使用了我们在组件模板和页面模板中使用的动态页面和组件TBB而被推送到html页面中。

让我们知道如何继续。

最佳答案

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

一切都基于DD4T SiteEditHelper类。通过发出以下调用,从页面 View (在</body>标记之前)开始:



@Html.SiteEditPage(Model)

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

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

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

确保将此内容写在DIV或其他可以标记组件表示形式边界的元素内。对于类似“组件字段”的故事,可以使用:

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

关于tridion - 如何在Tridion的DD4T中使用SiteEdit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10810587/

相关文章:

tridion - 在 <tridion :ComponentLink/> 中覆盖命名空间的最简单方法是什么

tridion - UGC 用户返回为 Null

tridion - SDL Tridion 2011 SP1 模式中 Tridion 设计中的动态下拉菜单

tridion - 发布无法达到特定组件的特定目标

tridion - 在标签页 GUI 扩展中,ext :pagetype node do? 是什么

asp.net-mvc-4 - DD4T 默认路由不起作用

带有 DD4T 的 Tridion 2011 - 组件实体上没有可用的元数据字段

tridion - SDL 三重奏 2011 : Dynamically fill or add a metadata field using a C# TBB

Tridion UI - 预览未更新

tridion - 使用 SDL Tridion 复合模板解析输入按钮的图像