Структура шаблонов модуля Каталог, демо-сайт Современный — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «В данной статье мы рассмотрим структура шаблонов демо-сайта Современный, тех шаблонов кот…»)
(нет различий)

Версия 05:27, 28 июля 2011

В данной статье мы рассмотрим структура шаблонов демо-сайта Современный, тех шаблонов которые относятся к модулю Каталог.

Благодаря шаблону /xsltTpls/modules/catalog/special-offers.xsl, на главной странице случайным образом отображается девять объектов каталога. Отрабатывается данный шаблон:

<xsl:template match="result[page/@is-default = '1']" priority="1">
	<xsl:apply-templates select="document('usel://special-offers/?limit=&specials-limit;')" mode="special-offers" />
</xsl:template

В xsl-шаблоне /xsltTpls/layouts/default.xsl, прописан вызов получения дочерних разделов каталога, относительно раздела 'shop':

<xsl:apply-templates select="document('udata://catalog/getCategoryList/void/shop/')" mode="left-column" />

шаблоны-обработчики данного вызова находятся в файле /xsltTpls/modules/catalog/left-column-category-list.xsl, дополнительные шаблоны в файле /xsltTpls/modules/catalog/category-list.xsl.

В xsl-шаблоне /xsltTpls/layouts/default.xsl, прописан вызов обработки корневого узла result, т.е. xml-данных текущей страницы:

<div class="content">
   <xsl:apply-templates select="result" />
</div>

При нахождении на странице типа "Раздела каталога" (@method = 'category'), в файле /xsltTpls/modules/catalog/category-view.xsl, будет отрабатываться один из шаблонов:

<xsl:template match="/result[@method = 'category']">
  <xsl:apply-templates select="document(concat('usel://special-category-offers/', $document-page-id, '?limit=&specials-limit;'))" mode="special-offers" />
</xsl:template>
<xsl:template match="/result[@method = 'category'][count(/result/parents/page) = 1]">
  <xsl:apply-templates select="document(concat('udata://catalog/getObjectsList/', page/@id, '////2/'))/udata" />
</xsl:template>
<xsl:template match="/result[@method = 'category'][count(/result/parents/page) &gt; 1]">
  <xsl:apply-templates select="document('udata://catalog/getObjectsList')" />
</xsl:template>

в зависимости от того какой уровень вложенности текуйщей страницы (count(/result/parents/page)). Два последних из указанных шаблонов вызывают метод getObjectsList, шаблоны-обработчики данного вызова находятся в этом же файле:

<xsl:apply-templates select="document('udata://catalog/search')" />
  <div class="catalog" umi:element-id="{category_id}" umi:module="catalog" umi:method="getObjectsList" umi:sortable="sortable" umi:add-method="popup">
    <xsl:text>&empty-category;</xsl:text>
  </div>
</xsl:template>

<xsl:template match="udata[@method = 'getObjectsList'][total]">
  <xsl:apply-templates select="document('udata://catalog/search')" />
  <div class="catalog_sort" />
  <div class="catalog">
    <div class="objects" umi:element-id="{category_id}" umi:module="catalog" umi:method="getObjectsList" umi:sortable="sortable">
      <xsl:apply-templates select="lines/item" mode="short-view">
        <xsl:with-param name="cart_items" select="document('udata://emarket/cart/')/udata/items" />
      </xsl:apply-templates>
      <div class="clear" />
    </div>
  </div>
  <div class="clear" />
<xsl:apply-templates select="total" />

Шаблоны для обработки данного вызова:

<xsl:apply-templates select="lines/item" mode="short-view">
    <xsl:with-param name="cart_items" select="document('udata://emarket/cart/')/udata/items" />
</xsl:apply-templates>

находятся в файле /xsltTpls/modules/catalog/common.xsl

При нахождении на странице типа "Объект каталога" (@method = 'object'), в файле /xsltTpls/modules/catalog/object-view.xsl, будет отрабатываться шаблон:

<xsl:template match="/result[@module = 'catalog' and @method = 'object']">
   <xsl:apply-templates select="document(concat('upage://', page/@id,'?show-empty'))/udata" mode="object-view" />
</xsl:template>

шаблоны для обработки вызова:

   <xsl:apply-templates select="document(concat('upage://', page/@id,'?show-empty'))/udata" mode="object-view" />

находятся в этом же файле.