谁能指导我如何在DD4T代码中使用SiteEdit模板中的Razor特定语法或标记?我在其中看过Site Edit相关的类,但是不能理解如何在视图中使用SiteEdit标签,在视图中有一些类似于Dreamweaver的语法,例如我们在Dreamweaver中使用的RenderComponentField或tcdl:ComponentField。我对DD4T非常陌生,现在使用的是SiteEdit 2009 SP3和SDL 2011 SP1。
提前谢谢。
更新:我们已经尝试了答案中提到的实现,但不幸的是,当我们在proxy中访问页面时,我们得到了一个错误消息:"Invalid template -The HTML is invalid,很可能是因为您的模板代码生成了无效的HTML.使用W3C标记验证服务等验证器检查您的HTML.更正您的模板,然后重新发布.“我猜这是因为由于使用了我们在组件和页面模板中使用的Dynamic page和Component TBB,Xml内容被推到了html页面中。
让我们知道如何继续下去。
发布于 2012-05-30 16:17:12
SiteEdit标记不像在Dreamweaver模板中那样生成,您自己负责将可编辑字段的标记放置在Razor视图中。好消息是,它适用于SiteEdit 2009 SP3和UI2012。UI2012的缺点是它没有监听(目前)可以在组件或页面模板上设置的Enable Inline Editing (我们应该在未来的DD4T版本中考虑这一点)。
一切都基于DD4T SiteEditHelper类。在页面视图中(在</body>标记之前),通过执行以下调用开始:
@Html.SiteEditPage(Model)这将写出页面标记,如果您在SiteEdit_config.xml中将样式设置为"SiteEdit2012“,它还将写出UI2012所需的引导脚本。
然后,对于每个组件表示和每个可编辑的组件字段,您还需要添加适当的标记。对于组件演示,您可以使用:
@{var ComponentPresentation = ViewBag.ComponentPresentation as IComponentPresentation;}
<div>
@Html.SiteEditComponentPresentation(ComponentPresentation)
</div>请确保将其写在DIV或其他可以标记组件表示边界的元素中。对于类似的组件字段,您可以使用:
<div>
@Html.SiteEditField(Model, Model.Fields["FieldName"])
@Model.Fields["FieldName"].Value
</div>发布于 2012-05-31 17:23:49
除了对视图的更改之外,正如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的行为。
将在此处创建
还可以轻松配置DD4T,以便与Tridion UI 2012配合使用。只需更改配置中的第一个元素,如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<siteEdit enabled="true" style="SiteEdit2012" tridionHostUrl="http://tridion.my.com">
...
</siteEdit>https://stackoverflow.com/questions/10810587
复制相似问题