1

在我目前正在进行的 sitecore 项目中,我们注意到我们的页面编辑器的行为不像 Vanilla 安装的页面编辑器。对于每个占位符,我们必须单击两次以使编辑器专注于该占位符。在第一次单击时,工具栏弹出焦点更改为指向我们刚刚单击的占位符或子布局,但仅在第二次单击时突出显示该项目。

我相信这种行为是由于我们遇到的 JS 错误。错误是:

Uncaught TypeError: Cannot read property 'sc-renderMoreSection' of undefined 
renderTemplate 
Sitecore.PageModes.ChromeControls.Base.extend.renderMoreSection
Sitecore.PageModes.ChromeControls.Base.extend.updateCommands
Sitecore.PageModes.ChromeControls.Base.extend.show
Sitecore.PageModes.SelectionFrame.Sitecore.PageModes.ChromeFrame.extend.showSides
value
Sitecore.PageModes.ChromeFrame.Base.extend.show
Sitecore.PageModes.SelectionFrame.Sitecore.PageModes.ChromeFrame.extend.show     
value 
select
Sitecore.PageModes.Chrome.Base.extend._clickHandler
c jquery.noconflict.js:16
d.event.handle jquery.noconflict.js:16
k.handle.m

JS 位于生成的脚本中,该脚本在 Sitecore 安装中似乎非常标准。发生此错误的方法是

this.renderTemplate = function(templateName, template, data, options) {
   if (!$sc.template[templateName]) {
      $sc.template(templateName, template);
   }
  return $sc.tmpl(templateName, data, options);
};

!$sc.template[templateName]语句中,因为模板未定义。

有没有人遇到过类似的事情?有人知道可能导致此问题的原因吗?

我们正在运行 Sitecore 6.5 和 jQuery 1.7.2

编辑:在解决此问题一天后,我发现了以下内容:

Sitecore 的页面编辑器正在覆盖我们的 jQuery 版本 1.7.1,我们在无冲突模式下运行它与它自己的版本 1.5.1,它在无冲突模式下运行。我们的脚本与 $$$ 别名没有冲突,sitecore 与 $sc 没有冲突。最后,我们的 $ 是 jquery 1.5.1(这让我感到困惑,因为如果我正确理解无冲突,它应该返回到标准 $)。

就页面编辑器而言,这无关紧要。我正在测试我的调整的页面不使用依赖于 1.7 的 jQuery。该问题与 sitecore 页面编辑器脚本包含的“模板”jquery 插件有关。由于我无法确定的原因,此模块在页面编辑器中不起作用,并且是错误的根源。我们的其他 Sitecore 站点仍然使用该站点包含的站点运行。删除模板插件会导致其他网站的行为方式与我们的网站当前相同。

此外,Sitecore 在此脚本中也包含原型,但未映射到 $

4

2 回答 2

1

此问题是由安装了共享源模块“分类法”引起的。看来这个模块在 Sitecore 6.5 的页面编辑器中表现不佳

它强制加载 jQuery,然后对其调用不冲突,将其别名为 $sc。然后,当页面编辑器的脚本实际加载时,$sc 永远不会被新的 jQuery 副本覆盖,因为 $sc 不是未定义的。这意味着编辑器脚本加载的插件不在 $sc 变量上,正如人们所预料的那样,这会导致整个系统停止正常运行。

于 2013-05-10T13:02:40.237 回答
1

尝试在 NoConflict 模式下在代码中使用 jQuery,因为 jQuery 使用 $ 符号但 Sitecore 也使用,这可能会导致冲突。

jQuery.noConflict();

完成此操作后,您需要在调用 jQuery 脚本时使用 jQuery 而不是 $,或者创建一个嵌入 jQuery 脚本的新函数,如下面的链接中所述。

另请参阅此链接

于 2013-04-24T20:43:42.720 回答