2013-02-11 6 views
5

В моем шаблоне C# или Dreamweaver мне нужно знать, что я делаю. Проблема в том, что я не знаю точно, ищу ли я страницу или компонент. Возможно, я мог бы использовать package.GetByType(ContentType.Page), и если он пуст, получите контент компонента, но я чувствую, что должен быть более короткий путь.Каков самый простой способ найти текущий идентификатор элемента в шаблоне

Пример Давида короче:

engine.PublishingContext.ResolvedItem.Item.Id 

ответ

5
engine.PublishingContext.ResolvedItem.Item.Id 

Вы также можете проверить разрешенную позицию контекста издательского и посмотреть, если это страница или нет (если это не так, то это компонент).

Например:

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; 

Если вы хотите, чтобы ярлык вызова engine.GetObject(), то вы можете быть в состоянии получить идентификатор из XML-элемента непосредственно:

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

Вы находитесь right with package.GetByName ("Component") –

 Смежные вопросы

  • Нет связанных вопросов^_^