2016-04-01 105 views
0

我们有一个Sitecore项目,代码/文件来自ASP.NET Web应用程序。如何使jQuery呈现的内容在Sitecore体验编辑器中可编辑

的产品部分的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. 将其绑定使用Repeater然后用jQuery显示/隐藏相应的div获取的所有产品数据Page_Load。 (似乎没有虽然是很好的方式)

  2. 告诉内容作者,这部分只能从内容编辑器进行编辑,而不是从经验编辑:)

什么是我选择这里。

+0

为什么要关闭它?这不是Sitecore开发人员常见的情况。如果还有其他需要提及的内容,请告诉我。 – Qwerty

回答

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

虽然这可能在理论上回答这个问题,但[这将是更可取的](// meta.stackoverflow.com/q/8259)在这里包括答案的基本部分,并提供供参考的链接。 – manetsus

+0

@Gatogordo。请提供一些更多的见解,指点帮助我开始。 – Qwerty

+0

@Qwerty:添加了一些代码示例 - 希望这会让你开始.. – Gatogordo

0

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

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

让我知道你是否有不同的要求。

+0

我的文章没有说欧盟将编辑!只是解释它如何为欧盟工作。课程内容应该由ajax更新,但同时作者应该能够通过体验编辑器进行编辑。欣赏。如果你可以指向一个例子。如果你没有得到问题,请告诉我。 – Qwerty

+0

我认为你应该为体验编辑器模式创建另一个视图并基于显示模式进行渲染。为此,您可以扩展MVC显示模式并扩展控制器提交和查看范围,以便能够处理PageEditor视图。 –

+0

请提供任何链接供参考。此外,这是一个ASP.NET,而不是MVC。它会起作用 – Qwerty

相关问题