在我正在进行的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);
};
<{1>}语句中的因为模板未定义。
以前有没有遇到类似的事情?任何人都知道可能导致此问题的原因是什么?
我们正在运行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页面编辑器脚本包含的“Template”jquery插件有关。由于我无法识别的原因,此模块在页面编辑器中不起作用并且是错误的来源。我们的其他Sitecore网站仍然使用此网站包含的网站。删除模板插件会导致其他网站的行为与我们的网站当前的行为方式相同。
此外,Sitecore也包含此脚本中的原型,但未映射到$
答案 0 :(得分:1)
尝试在NoConflict模式的代码中使用jQuery,因为jQuery使用$ sign但也使用Sitecore,这可能会导致冲突。
jQuery.noConflict();
执行此操作后,您需要在调用jQuery脚本时使用jQuery而不是$,或者创建一个嵌入jQuery脚本的新函数,如下面的链接所述。
答案 1 :(得分:1)
此问题是由安装了共享源模块“Taxonomy”引起的。看来这个模块与Sitecore 6.5中的页面编辑器不兼容。
它强制加载jQuery然后调用它没有冲突,将它别名为$ sc。然后,当页面编辑器的脚本实际加载时,$ sc永远不会被新的jQuery副本覆盖,因为$ sc未定义。这意味着编辑器脚本加载的插件不在$ sc变量上,正如人们所预料的那样,导致整个系统停止正常运行。