2012-12-11 2 views
3

SDL Tridion Anguilla 확장 프로그램을 작성 중이며 webdav URL을 사용하여 구성 요소를 가져와야합니다. 또한 config에는 webdav urls 세트가 있으며 이것들을 위해 item 객체를 가져와야합니다.Anguilla의 GetItemByWebDavUrl

프랭크 - 내가 CMS GUI 확장을 작성하고 자바 스크립트를 쓰고 있어요 .. 내가 내 질문에 몇 마디를 먹었다 될 수 있습니다. 그래서 $ models.getItem(); 나에게 구성 요소의 구성 요소 또는 xml을 제공합니까?

+0

무엇이 질문입니까? –

+0

확장 프로그램을 설치할 때 실행되는 스크립트를 통해 webdav URL을 해석하는 방법은 무엇입니까? –

답변

3

대부분의 Tridion Content Manager API에서 TCM URI 또는 WebDAV URL을 통해 항목을 읽을 수 있습니다.

그래서 당신은 핵심 서비스를 사용하는 경우, 당신은 간단하게 수행 할 수 있습니다

다음
var item = client.Read(webdavURL, null); 

(당신이 편리 할 핵심 서비스이 Fields helper class을 사용하는 경우) 당신은 필드를 반복 할 수 있으며 거기에있는 각 값에 대해서도 똑같이하십시오.

매핑을 클라이언트에 제공해야하는 경우 사용자 지정 웹 서비스를 만들어야 사용할 수 있습니다. 처음에는 사소한 일이 아니지만 WCF 서비스를 만드는 것은 어떤 사람들이하는 것처럼 힘들지 않습니다. 특히 this example of a minimal WCF service for Tridion으로 시작할 때 특히 그렇습니다.

+0

많은 감사의 프랭크, 최소한의 서비스가 구현되고 매력처럼 작동합니다. 비록 내가 그런 기본적인 기능이 상자 밖으로 사용할 수 있어야한다고 생각하지만. –

+0

대부분의 SDL Tridion 제품 및 애드온은 서버에 대한 매핑을 수행하여 서버에 대한 라운드 트립을 수행하지 않아도됩니다. 따라서 WebDAV URL을 어딘가에 가지고 있다면 데이터 익스텐더의 서버에있는 TCM URI로 변환하지 않으시겠습니까? 처음에는 작업이 조금 더 빨라질 수 있지만 대기 시간이 긴 연결을 사용하는 사용자는 감사하게 생각합니다. –

2

WebDAVUrl로 항목을 확인하는 기능이 클라이언트에 없습니다. 우리가 가진 유일한 기능은 다음과 같습니다.

var item = $models.getItem(tcmUri); 
item.getWebDavUrl(); // will return you WebDAVUrl, if it was loaded before 
item.loadWebDavUrl(); // will make async call to load WebDAVUrl. "loadwebdavurl" or "loadwebdavurlfailed" will be fired on the item afterwards