Вывод страницы контента вместо страницы "Лучшие предложения" на главной странице сайта с шаблоном "современный" — различия между версиями
| Romario (обсуждение | вклад)  (Новая страница: «Задача: На сайте с шаблоном "Современный" (demodizi) на главной странице нужно сделать вывод ст…») | Kublan (обсуждение | вклад)  | ||
| (не показаны 3 промежуточные версии 2 участников) | |||
| Строка 1: | Строка 1: | ||
| − | + | '''Актуально для версии 18 85081''' | |
| − | В XSLT шаблонизаторе для страницы могут быть написано несколько шаблонов. Логика по которой  | + | Задача: На сайте с шаблоном "Современный" (demodizzy) на главной странице нужно сделать вывод страницы контента вместо страницы "Лучшие предложения"  | 
| + | |||
| + | В XSLT шаблонизаторе для страницы могут быть написано несколько шаблонов. Логика по которой применится тот или иной шаблон: | ||
| - Подключится тот шаблон у которого больше условий. | - Подключится тот шаблон у которого больше условий. | ||
| − | - Если условий одинаковое количество - подключится тот шаблон, который в последовательности кода будет последним | + | - Если условий одинаковое количество - подключится тот шаблон, который в последовательности кода будет последним. | 
| - если в шаблоне указан параметр  priority="*" -  выполнится тот шаблон у которого имеется данный параметр, либо у которого выше значение данного параметра относительно другого. | - если в шаблоне указан параметр  priority="*" -  выполнится тот шаблон у которого имеется данный параметр, либо у которого выше значение данного параметра относительно другого. | ||
| На примере нашего демо сайта: | На примере нашего демо сайта: | ||
| − | Обычная страница контента подключаются в шаблоне в файле ~\ | + | Обычная страница контента подключаются в шаблоне в файле ~templates\demodizzy\xslt\modules\content\common.xsl в строке:   | 
| <source lang="xml"> | <source lang="xml"> | ||
| − | <xsl:template match="result[@module = 'content'] | + | <xsl:template match="result[@module = 'content']"> | 
|      <div umi:element-id="{$document-page-id}" umi:field-name="content" umi:empty="&empty-page-content;"> |      <div umi:element-id="{$document-page-id}" umi:field-name="content" umi:empty="&empty-page-content;"> | ||
|        <xsl:value-of select=".//property[@name = 'content']/value" disable-output-escaping="yes" /> |        <xsl:value-of select=".//property[@name = 'content']/value" disable-output-escaping="yes" /> | ||
| Строка 18: | Строка 20: | ||
| </source> | </source> | ||
| − | То есть, если  | + | То есть, если module = сontent - подключаем шаблон описанный внутри тега. | 
| − | Главная же страница подхватывается шаблоном в ~\ | + | Главная же страница подхватывается шаблоном в ~\templates\demodizzy\xslt\modules\catalog\special-offers.xsl, так как в нем кроме условия стоит параметр priority="1"   | 
| Вот код шаблона: | Вот код шаблона: | ||
| Строка 31: | Строка 33: | ||
| То есть, шаблон подключается если в полученном коде страницы будет параметр  is-default = '1' | То есть, шаблон подключается если в полученном коде страницы будет параметр  is-default = '1' | ||
| − | + | is-default = '1' - говорит о том что страница является главной (в модуле структура указанно что путь к ней следующий - "/") | |
| − | Внутри  | + | Внутри тега расположен вызов USEL выборки, которая и выбирает товары из каталога. | 
| − | |||
| − | |||
| + | Если нам нужно чтобы вместо товаров выводился обычный контент - нужно поставить у первого шаблона параметр  | ||
| + | <source lang="xml"> | ||
| + |   <xsl:template match="result[@module = 'content']" priority="2"> | ||
| + | </source> | ||
| [[Категория:Верстка в XSLT]] | [[Категория:Верстка в XSLT]] | ||
Текущая версия на 12:06, 15 мая 2018
Актуально для версии 18 85081
Задача: На сайте с шаблоном "Современный" (demodizzy) на главной странице нужно сделать вывод страницы контента вместо страницы "Лучшие предложения"
В XSLT шаблонизаторе для страницы могут быть написано несколько шаблонов. Логика по которой применится тот или иной шаблон:
- Подключится тот шаблон у которого больше условий. - Если условий одинаковое количество - подключится тот шаблон, который в последовательности кода будет последним. - если в шаблоне указан параметр priority="*" - выполнится тот шаблон у которого имеется данный параметр, либо у которого выше значение данного параметра относительно другого.
На примере нашего демо сайта: Обычная страница контента подключаются в шаблоне в файле ~templates\demodizzy\xslt\modules\content\common.xsl в строке:
<xsl:template match="result[@module = 'content']">
    <div umi:element-id="{$document-page-id}" umi:field-name="content" umi:empty="&empty-page-content;">
      <xsl:value-of select=".//property[@name = 'content']/value" disable-output-escaping="yes" />
    </div>
</xsl:template>
То есть, если module = сontent - подключаем шаблон описанный внутри тега.
Главная же страница подхватывается шаблоном в ~\templates\demodizzy\xslt\modules\catalog\special-offers.xsl, так как в нем кроме условия стоит параметр priority="1"
Вот код шаблона:
<xsl:template match="result[page/@is-default = '1']" >
   <xsl:apply-templates select="document('usel://special-offers/?limit=&specials-limit;')" mode="special-offers" />
</xsl:template>
То есть, шаблон подключается если в полученном коде страницы будет параметр is-default = '1'
is-default = '1' - говорит о том что страница является главной (в модуле структура указанно что путь к ней следующий - "/")
Внутри тега расположен вызов USEL выборки, которая и выбирает товары из каталога.
Если нам нужно чтобы вместо товаров выводился обычный контент - нужно поставить у первого шаблона параметр
  <xsl:template match="result[@module = 'content']" priority="2">
