Давайте объясним на моем конкретном примере:
У меня есть 3 типа (шаблон) новостей: новые, внешние новости, выпуск продукта;
Я хочу отображать их на домашней странице по-разному.
Пока я делаю простое в моем xsl:
<xsl:variable name="upcoming" select="./item[sc:formatdate(sc:fld('End Date',.),'yyyyMMdd') >= sc:formatdate($now,'yyyyMMdd')" />
<xsl:for-each select="$upcoming">
<div>
<h2>
<sc:text field="Name" />
</h2>
<p>
<sc:text field="Description" />
</p>
</div>
</xsl:for-each>
Первое решение было бы таким (очевидно, я не знаю настоящий синтаксис):
<xsl:choose>
<xsl:when test="template = 'external news'">
<!-- something -->
</xsl:when>
</xsl:choose>
Но еще лучше, если бы подход был более объектно-ориентированным и имел бы функцию make_body (), привязанную к элементу, который я мог бы вызвать из моего рендеринга домашней страницы.
Или у Sitecore есть способ визуализации элемента, который может отображаться на любых страницах; рендеринг, обрабатываемый самими элементами?
Что вы думаете?
Обновление
Мне кажется, я не достаточно ясно:
Я хочу, чтобы на моей домашней странице была последняя новостная лента:
<div class="last_news">
<h2>Last News</h2>
<!-- Loop Goes here -->
</div>
Мои разные типы новостей (новые, внешние новости, выпуск продукта) появляются по-разному, когда они перечислены в этом поле:
новый:
<div class="news">
<h2><!-- title --></h2>
<p><!-- abridged text goes here --><p>
<a href="##news url##">read more</a>
</div>
внешние новости:
<div class="news external">
<img src="##website logo##">
<h2><!-- title --></h2>
<p><!-- abridged text goes here --><p>
<a href="##external url##">read more on www.<!-- site name --></a>
</div>
выпуск продукта:
<div class="news product_release">
<div class="float_left">
<img src="##product logo##">
<a href="##product url##">Download now</a>
<a href="##product download url##">Download now</a>
</div>
<h2><!-- title --></h2>
<p><!-- abridged text goes here --><p>
<a href="##news url##">read more</a>
</div>
Каждый тип новостей имеет свой собственный шаблон с различными полями
- новый: заголовок, сокращенный текст, полный текст
- внешние новости: заголовок, сокращенный текст, внешний URL, поле выбора веб-сайта
- выпуск продукта: название, сокращенный текст, полный текст, поле выбора продукта
Я могу сделать подслои (.ascx) или визуализации (.xslt) для каждого типа, но теперь я хочу знать , как отображать их в моем цикле .
Могу ли я поместить заполнитель в свой цикл, и Sitecore будет знать, что заполнитель должен использоваться текущим элементом?