2013-02-11 4 views
5

내 C# 또는 dreamweaver 템플릿에서 무엇이 렌더링인지 알아야합니다. 문제는 페이지 또는 구성 요소를 찾고 있는지 확실하지 않다는 것입니다. 아마도 package.GetByType(ContentType.Page)을 사용할 수 있으며 비어있는 경우 - 구성 요소의 컨텐츠를 얻지 만 더 짧은 방법이 있어야한다고 생각합니다. 다윗의템플릿에서 현재 항목 ID를 찾는 가장 간단한 방법은 무엇입니까

예는 짧은 :

내가 본 그 전에했던 방법
engine.PublishingContext.ResolvedItem.Item.Id 

답변

5
engine.PublishingContext.ResolvedItem.Item.Id 

또한 게시 컨텍스트의 해결 항목을 확인하고이 페이지의인지 아닌지 확인할 수 있습니다 (그렇지 않은 경우, 그것은 구성 요소의). 당신은

String currentId = currentItem.GetAsSource().GetValue("ID"); 
+0

내 접근 방식보다 훨씬 좋네요. –

3

: 확인

// Contains the call you describe in your question 
Page page = GetPage(); 
if (page == null) 
{ 
    // Contains a call using package.GetByName("Component") 
    // to avoid the situation with multiple Components on the package 
    Component comp = GetComponent(); 
    // Do component stuff 
} 
else 
{ 
    // Do page stuff 
} 

하지 않음 당신이 정말로보다 훨씬 좋네요을 캡슐화 할 수 있지만 입증 할 수있다 잘못된.

+0

: 당신이 engine.GetObject() 호출을 단축하려면

Item currentItem; if (engine.PublishingContext.ResolvedItem.Item is Page) { currentItem = package.GetByName(Package.PageName); } else { currentItem = package.GetByName(Package.ComponentName); } TcmUri currentId = engine.GetObject(currentItem).Id; 

것은, 당신이 직접 항목의 XML에서 ID를받을 수 있습니다 : 예를 들어

package.GetByName ("Component") –