2013-04-24 3 views
1

В проекте sitecore, над которым я сейчас работаю, мы заметили, что наш Редактор страниц не ведет себя как редактор страниц версии Vanilla. Для каждого заполнителя мы должны щелкнуть дважды, чтобы заставить редактора сосредоточиться на этом заполнителе. При первом нажатии фокус всплывающего окна панели инструментов изменяется на точку в замещающем или подпункте, который мы только что нажали, но только выделяет этот элемент при втором щелчке.Редактор страницы Sitecore Ошибка Javascript

Я считаю, что это bahavior связано с ошибкой 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

EDIT: После того, как день устранения этой проблемы, я обнаружил следующее:

страница редактор Sitecore является перезапись нашей версии JQuery, 1.7 .1, который мы запускаем в режиме без конфликтов с его собственной версией 1.5.1, которую он запускает в режиме без конфликтов. Наши скрипты не конфликтуют с псевдонимом $$$, а sitecore - не конфликтуют с $ sc. В конце всего, наш $ - jquery 1.5.1 (что меня озадачивает, так как оно должно быть возвращено к стандартному $, если я правильно понимаю конфликт).

Это не имеет значения в отношении редактора страниц. Страница, на которую я тестирую свои настройки, не использует jQuery, зависящую от 1.7. Проблема связана с плагином jQuery «Шаблон», который включает сценарий редактора страницы Sitecore. По причинам, которые я не могу определить, этот модуль не работает в редакторе страниц и является источником ошибки. Наши другие сайты Sitecore по-прежнему работают, используя тот, который включает этот сайт. Удаление плагина шаблона заставляет другие сайты вести себя так, как это делает наш сайт.

Кроме того, Sitecore включает в себя прототип в этом сценарии, а также, но не отображаются в $

+0

Получаете ошибку на всех ваших страницах или только некоторые из них? Какую версию Sitecore вы используете? Вы используете jQuery или другую библиотеку в своем собственном проекте? Какая версия? – jammykam

+0

Ошибка на каждой странице, когда редактор страниц активен. Мы используем Sitecore 6.5 и jQuery 1.7.2. –

+0

Некоторые шаги отладки, чтобы исключить конфликт, например Martijn, удалить свой собственный JavaScript в вашем коде и посмотреть, есть ли у вас ошибка (так что это просто Sitecore JS). Вы должны использовать закрытие, анонимные функции и пространства имен, чтобы избежать конфликтов: http://blog.navigationarts.com/avoiding-jquerys-noconflict-mode-with-prototype-and-sitecore/ – jammykam

ответ

1

Эта проблема была вызвана наличием в Shared Source модуль «Таксономия» установлен. Похоже, что этот модуль не очень хорошо работает с редактором страниц в Sitecore 6.5

Он заставляет загружать jQuery, а затем не конфликтует с ним, накладывая его на $ sc. Затем, когда скрипт редактора страниц фактически загружается, $ sc никогда не перезаписывается новой копией jQuery, потому что $ sc не является неопределенным. Это означает, что плагины, загруженные сценарием редактора, не входят в переменную $ sc, которая, как можно было бы ожидать, заставляет всю систему перестать функционировать правильно.

1

Попробуйте использовать JQuery в коде в режиме NoConflict, как JQuery использует знак $, но Sitecore также, что может привести к конфликтам.

jQuery.noConflict(); 

После этого вам нужно использовать JQuery вместо $ при вызове JQuery скрипт или создать новую функцию, которая встраивает свой скрипт JQuery, как описано в ссылке ниже.

Смотрите также this link

+1

Sitecore 6.5 on использует jQuery в режиме noConflict, сопоставленный с $ sc, поэтому он не должен быть проблемой конфликта. В предыдущих версиях использовался Prototype, поэтому он был проблемой с конфликтами $. – jammykam

+0

Вы правы, это должно было быть исправлено в версии Sitecore версии 6.5 версии 110419. Однако ошибка, которую он получает, очень похожа на ошибки, связанные с режимом jQuery noConflict. Поэтому я должен попробовать. –

+1

Да, это то, о чем я думал, но именно поэтому я спросил, какую версию он использовал. Я думаю, ему нужно попробовать некоторые основные шаги отладки, чтобы исключить, где проблема, и это не повредит. – jammykam

Смежные вопросы