Вывод страницы контента вместо страницы "Лучшие предложения" на главной странице сайта с шаблоном "современный" — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
 
(не показаны 2 промежуточные версии этого же участника)
Строка 1: Строка 1:
Задача: На сайте с шаблоном "Современный" (demodizi) на главной странице нужно сделать вывод страницы контента вместо страницы "Лучшие предложения"
+
'''Актуально для версии 18 85081'''
  
В XSLT шаблонизаторе для страницы могут быть написано несколько шаблонов. Логика по которой примерится тот или иной шаблон такова:
+
Задача: На сайте с шаблоном "Современный" (demodizzy) на главной странице нужно сделать вывод страницы контента вместо страницы "Лучшие предложения"
 +
 
 +
В XSLT шаблонизаторе для страницы могут быть написано несколько шаблонов. Логика по которой применится тот или иной шаблон:
  
 
- Подключится тот шаблон у которого больше условий.
 
- Подключится тот шаблон у которого больше условий.
- Если условий одинаковое количество - подключится тот шаблон, который в последовательности кода будет последним
+
- Если условий одинаковое количество - подключится тот шаблон, который в последовательности кода будет последним.
 
- если в шаблоне указан параметр  priority="*" -  выполнится тот шаблон у которого имеется данный параметр, либо у которого выше значение данного параметра относительно другого.
 
- если в шаблоне указан параметр  priority="*" -  выполнится тот шаблон у которого имеется данный параметр, либо у которого выше значение данного параметра относительно другого.
  
 
На примере нашего демо сайта:
 
На примере нашего демо сайта:
Обычная страница контента подключаются в шаблоне в файле ~\xsltTpls\modules\content\common.xsl в строке:  
+
Обычная страница контента подключаются в шаблоне в файле ~templates\demodizzy\xslt\modules\content\common.xsl в строке:  
  
 
<source lang="xml">
 
<source lang="xml">
<xsl:template match="result[@module = 'content']" priority="1">
+
<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>
  
То есть, если modul = сnontent - подключаем шаблон описанный внутри тега.
+
То есть, если module = сontent - подключаем шаблон описанный внутри тега.
  
Главная же страница подхватывается шаблоном в ~\xsltTpls\modules\catalog\special-offers.xsl, так как в нем кроме условия стоит параметр priority="1"  
+
Главная же страница подхватывается шаблоном в ~\templates\demodizzy\xslt\modules\catalog\special-offers.xsl, так как в нем кроме условия стоит параметр priority="1"  
  
 
Вот код шаблона:
 
Вот код шаблона:
Строка 31: Строка 33:
 
То есть, шаблон подключается если в полученном коде страницы будет параметр  is-default = '1'
 
То есть, шаблон подключается если в полученном коде страницы будет параметр  is-default = '1'
  
is-default = '1' - говорит о том что страница является главной (в модуле структура указанно xто путь к ней следующий "/")
+
is-default = '1' - говорит о том что страница является главной (в модуле структура указанно что путь к ней следующий - "/")
  
Внутри уже тег расположен вызов USEL выборки, которая и выбирает товары из каталога.
+
Внутри тега расположен вызов USEL выборки, которая и выбирает товары из каталога.
 
 
Если нам нужно чтобы вместо товаров выводился обычный контент - нужно поставьте у первого шаблона параметр priority="2".
 
  
 +
Если нам нужно чтобы вместо товаров выводился обычный контент - нужно поставить у первого шаблона параметр
 +
<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">