2013-02-11 18 views
5

Trong mẫu C# hoặc dreamweaver của mình, tôi cần biết tôi đang hiển thị những gì. Vấn đề là tôi không biết chắc chắn nếu tôi đang tìm một trang hoặc thành phần. Tôi có lẽ có thể sử dụng package.GetByType(ContentType.Page) và nếu nó trống - có được nội dung của một thành phần, nhưng tôi cảm thấy nên có một cách ngắn hơn.Cách đơn giản nhất để tìm ID mục hiện tại trong mẫu

Ví dụ về David ngắn:

engine.PublishingContext.ResolvedItem.Item.Id 

Trả lời

5
engine.PublishingContext.ResolvedItem.Item.Id 

Bạn cũng có thể kiểm tra Mục được giải quyết của bối cảnh xuất bản và xem đó có phải là Trang hay không (nếu không, thì đó là Thành phần).

Ví dụ:

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; 

Nếu bạn muốn tắt cuộc gọi engine.GetObject(), sau đó bạn có thể có được ID từ của mục XML trực tiếp:

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

Đó là đẹp hơn nhiều so với cách tiếp cận của tôi. –

3

Đó là cách tôi đã nhìn thấy nó làm trước đó:

// 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 
} 

Không chắc bạn có thể rút gọn đẹp hơn nhiều so với thực sự nhưng tôi có thể được chứng minh sai rồi.

+0

Bạn đang ngay với package.GetByName ("Component") –