2013-04-24 5 views
1

현재 작업중인 Sitecore 프로젝트에서 페이지 편집기가 바닐라 설치 페이지 편집기처럼 작동하지 않는 것으로 나타났습니다. 모든 자리 표시 자에 대해 편집기에서 해당 자리 표시 자에 초점을 맞추려면 두 번 클릭해야합니다. 첫 번째 클릭에서 도구 모음 팝업 포커스가 방금 클릭 한 자리 표시 자 또는 하위 레이아웃을 가리 키도록 변경되지만 두 번째 클릭시 해당 항목 만 강조 표시됩니다.Sitecore 페이지 편집기 자바 스크립트 오류

나는 우리가 얻는 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 설치에서 꽤 표준적인 것으로 보이는 스크립트에 있습니다. 템플릿이 정의되어 있기 때문에이 오류가 발생하는되는 방법은 !$sc.template[templateName] 성명에서

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

입니다.

이전에 비슷한 사람이 있습니까? 누구든지이 문제의 원인을 파악할 수 있습니까?

우리는 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뿐만 아니라이 스크립트의 프로토 타입을 포함,하지만 jQuery를 또한 $ 기호하지만 Sitecore을 사용하기 때문에 충돌을 일으킬 수있는의 NoConflict 모드에서 코드에서 jQuery를 사용하는 $

+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

이 문제가 발생했다 참조하십시오. 이 모듈은 Sitecore 6.5의 페이지 편집기에서 훌륭하게 작동하지 않는 것으로 보입니다.

강제로 jQuery를로드 한 다음 충돌을 호출하지 않고 $ sc로 앨리어싱합니다. 그런 다음 페이지 편집기의 스크립트가 실제로로드 될 때 $ sc가 정의되지 않았기 때문에 $ sc가 jQuery의 새 복사본으로 덮어 쓰여지지 않습니다. 이것은 에디터 스크립트에 의해로드 된 플러그인이 $ sc 변수에 있지 않다는 것을 의미합니다. 예상대로 시스템 전체가 올바르게 작동하지 않게됩니다.

1

시도에 매핑.

jQuery.noConflict(); 

이 일 후에는 jQuery를 스크립트를 호출 할 때 $ 대신 jQuery를 사용하거나 아래 링크에 설명 된대로 jQuery를 스크립트를 내장 새로운 기능을 작성해야합니다.

은 공유 소스 모듈 "분류"설치를함으로써 또한 this link

+1

Sitecore 6.5 이상에서는 $ sc에 매핑 된 noConflict 모드에서 jQuery를 사용하므로 충돌 문제가 있어서는 안됩니다. 이전 버전에서는 Prototype을 사용했기 때문에 $ 충돌 문제였습니다. – jammykam

+0

맞습니다. Sitecore 버전 6.5 개정판 110419에서 수정되었을 것입니다. 그러나 오류는 jQuery noConflict 모드와 관련된 오류와 매우 유사합니다. 그래서 나는 이것을 시험해보아야한다. –

+1

네, 그게 제가 생각한 것입니다. 그래서 그것이 그가 사용하고있는 버전을 물었습니다. 문제가있는 곳을 배제하기 위해 몇 가지 기본적인 디버깅 단계를 시도해야하며 이는 해를 끼치 지 않을 것이라고 생각합니다. – jammykam

관련 문제