如何在Sitecore体验编辑器中使jQuery呈现的内容可编辑

时间:2016-04-01 09:38:32

标签: asp.net sitecore sitecore8

我们有一个Sitecore项目,代码/文件来自 ASP.NET Web应用程序。

产品的HTML部分如下

<div class="products-section">
  <ul class="tabs">
    <li>Product 1</li>
    <li>Product 2</li>
  </ul>
  <div class="product">
     <h3>Product Name</h3>
     <img src="/images/img1.jpg" />
     <span>Description</span>
  </div>
</div>

这是最终用户的工作方式。 欧盟将点击“产品”标签(例如:产品1),这将更改<div class="product">内的内容,而不回发

对于作者,此部分必须可以从“体验”编辑器中进行编辑。通常,我会使用asp:Repeatersc:Text,sc:Image进行渲染。

但是,这里必须使用ajax调用来检索数据,这意味着没有Repeater或Sitecore控件。

在这种情况下,如何从体验编辑器中编辑内容。

我提出的唯一想法:

  1. 获取Page_Load中所有产品的数据,使用Repeater绑定它,然后使用jQuery显示/隐藏相应的div。 (虽然看起来不太好)

  2. 告诉内容作者,此部分只能从内容编辑器编辑,而不能从体验编辑器编辑:)

  3. 我有什么选择。

2 个答案:

答案 0 :(得分:2)

一种选择可能是在体验编辑器中以不同方式呈现您的页面。检查代码中的模式并在编辑时使用转发器,否则使用jquery输出。 您可以使用视图轻松显示/隐藏所需的输出。

<asp:MultiView runat="server" ID="ProductsView">
  <asp:View runat="server" ID="StandardView">
    <div ...>
     ...
    </div>
  </asp:View>
  <asp:View runat="server" ID="EditorView">
    <asp:Repeater..>
       ...
    </asp:Repeater>
  </asp:View>
</asp:MultiView>

在你的代码背后:

ProductsView.SetActiveView((Sitecore.Context.PageMode.IsExperienceEditor || Sitecore.Context.PageMode.IsExperienceEditorEditing) ? EditorView : StandardView)

根据活动视图,您可以决定是否将数据附加到转发器(当StandardView处于活动状态时,不要这样做,以提高性能)

答案 1 :(得分:0)

我不确定最终用户为什么会与体验编辑器交互,因为内容作者使用体验编辑器来创作网站并更新页面本身的内容。

但是,如果这是内容作者的要求,您可以使用sitecore服务客户端API来使用ajax调用更新内容。 使用this document查看ssc的工作原理。

如果您有不同的问题,请告诉我。