我们有一个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:Repeater
和sc:Text,sc:Image
进行渲染。
但是,这里必须使用ajax调用来检索数据,这意味着没有Repeater或Sitecore控件。
在这种情况下,如何从体验编辑器中编辑内容。
我提出的唯一想法:
获取Page_Load
中所有产品的数据,使用Repeater
绑定它,然后使用jQuery
显示/隐藏相应的div。 (虽然看起来不太好)
告诉内容作者,此部分只能从内容编辑器编辑,而不能从体验编辑器编辑:)
我有什么选择。
答案 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的工作原理。
如果您有不同的问题,请告诉我。