SharePoint (2007)는 GoToLink
이라는 javascript 메서드에 source
매개 변수를 동적으로 추가합니다. 이 방법은 SharePoint의 core.js 파일에 정의되어 있으며 원본 파일을 편집하지 않고도 쉽게 사용자 지정할 수 있습니다. 사실, 그 파일을 직접 편집하고 싶지는 않습니다. SharePoint는 "지원되지 않는"상태가됩니다.
사용자 지정을위한 솔루션을 만들므로 일관된 방식으로 쉽게 배포하거나 철회 할 수 있습니다. GAC 배포를 대상으로 Visual Studio에서 빈 SharePoint 솔루션을 새로 만듭니다. 프로젝트 내에서 다음과 같은 폴더 구조를 만들 :
("1033"영어 지역화입니다 경우 당신은 다른 언어를 사용하고 있습니다, 귀하의 ID는 다를 것입니다).
"1033"내에 새 Javascript 파일 (우리는 "CustomCore.js"라고 함)을 만듭니다. 여기에는 Core.js에서 재정의하려는 코드 만 포함됩니다. GoToLink가 우리가 관심을 가지고있는 유일한 것이므로 여기에 집중하겠습니다. 다음은 Core.js의 원본입니다.
function GoToLink(elm) {
if (elm.href==null)
return;
var ch=elm.href.indexOf("?") >=0 ? "&" : "?";
var srcUrl=GetSource();
if (srcUrl !=null && srcUrl !="")
srcUrl=ch+"Source="+srcUrl;
var targetUrl=elm.href+srcUrl;
if (isPortalTemplatePage(targetUrl))
window.top.location=STSPageUrlValidation(targetUrl);
else
window.location=STSPageUrlValidation(targetUrl);
}
별로 중요하지 않습니다. 재정의하려면 source
매개 변수를 추가하는 비트를 생략하면됩니다. 내 계산에서 수정 된 방법은 다음과 같습니다.
function GoToLink(elm) {
if (elm.href==null)
return;
if (isPortalTemplatePage(elm.href))
window.top.location=STSPageUrlValidation(elm.href);
else
window.location=STSPageUrlValidation(elm.href);
}
그래야합니다. 솔루션을 패키지화하고 Visual Studio는 WSP를 만들 때 "Templates"폴더 구조를 올바르게 해석해야합니다 (TemplateFile
요소에 대해 생성 된 매니페스트 파일을보고 "Layouts \ 1033 \ CustomCore.js"로 배포).
WSP 솔루션을 SharePoint에 배포 한 후에는 마스터 페이지에서 최종적으로 참조해야합니다. 마스터 페이지의 HEAD
섹션에 코어가 표시되어야합니다.JS는 다음과 같이 참조되는 :
<SharePoint:ScriptLink Language="javascript" runat="server" Defer="True" Name="core.js"/>
우리는 단순히 직접이 줄 아래에 새로운 JS 파일에 대한 참조를 추가
<SharePoint:ScriptLink Language="javascript" runat="server" Defer="True" Name="core.js"/>
<SharePoint:ScriptLink Language="javascript" runat="server" Defer="True" Name="customcore.js"/>
테스트 그것을하고 제대로 작동하는지 확인하십시오. 이 작업은 "CustomCore.js"를 배포하고 마스터 페이지를 사용하는 서버의 모든 목록에 영향을줍니다.
Javascript/jQuery 솔루션 사용에 반대하십니까? – CBono
전혀 아닙니다. Javascript를 선호하지만 어느 쪽이든 열 수 있습니다. –
SharePoint에서 매개 변수를 추가하는 방법에 따라 다른 해결책을 제안했습니다. 아직 자바 스크립트가 포함되어 있지만 예상했던 것과 다른 방식으로 진행됩니다. 희망 당신은 그것을 유용하게 찾을 수 있습니다. – CBono