【问题标题】:How to make jQuery rendered content editable in Sitecore experience editor如何在 Sitecore 体验编辑器中使 jQuery 呈现的内容可编辑
【发布时间】:2016-04-01 09:38:31
【问题描述】:

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

产品部分的 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>

这就是最终用户的工作方式。 EU 将单击产品选项卡(例如:产品 1),这将更改 &lt;div class="product"&gt; 中的内容,无需回发

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

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

在这种情况下,我怎样才能让体验编辑器中的内容可编辑。

我想到的唯一想法:

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

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

我有什么选择。

【问题讨论】:

  • 为什么要关闭它?这不是站点核心开发人员的常见情况吗?如果还有什么需要说明的,请告诉我。

标签: asp.net sitecore sitecore8


【解决方案1】:

一种选择是在体验编辑器中以不同方式呈现您的页面。检查代码中的模式并在编辑时使用中继器,否则使用 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 处于活动状态时不要这样做,以提高性能)

【讨论】:

  • 虽然这在理论上可以回答这个问题,it would be preferable 在此处包含答案的基本部分,并提供链接以供参考。
  • @Gatogordo。请提供更多见解和指导,以帮助我入门。
【解决方案2】:

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

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

如果您有其他问题,请告诉我。

【讨论】:

  • 我的帖子没有说欧盟会编辑!这只是为了解释它如何为欧盟工作。当然内容应该通过ajax更新,但同时作者应该可以通过体验编辑器进行编辑。欣赏。如果你可以指出一个例子。如果您没有收到问题,请告诉我。
  • 我认为您应该为体验编辑器模式创建另一个视图,并根据显示模式对其进行渲染。为此,您可以扩展 MVC 显示模式并扩展控制器渲染和视图渲染以能够处理 PageEditor 视图。
  • 您能否提供任何链接以供参考。此外,这是一个 ASP.NET 而不是 MVC。它会工作吗
  • @Qwerty:是 WebForms 吗?我认为在 Webforms 中你也可以使用服务器标签 然后使用下面的条件来呈现代码使用 `if (Sitecore.Context.PageMode.IsPageEditorEditing) 或 if (Sitecore.Context.PageMode. IsPageEditor 让我知道这是否有帮助。
  • 你也可以试试这个链接,它展示了如何使用 PageEditor 模式,但这里讨论的是 Razor 视图,所以你需要像我上面提到的那样在 WebForms 中使用服务器标签来使用它 - Link 让我知道如果有帮助的话。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多