Вывод страницы контента вместо страницы "Лучшие предложения" на главной странице сайта с шаблоном "современный" — различия между версиями
Romario (обсуждение | вклад) |
Kublan (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
− | Задача: На сайте с шаблоном "Современный" ( | + | Задача: На сайте с шаблоном "Современный" (demodizzy) на главной странице нужно сделать вывод страницы контента вместо страницы "Лучшие предложения" |
− | В XSLT шаблонизаторе для страницы могут быть написано несколько шаблонов. Логика по которой | + | В 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: | Строка 18: | ||
</source> | </source> | ||
− | То есть, если | + | То есть, если module = сontent - подключаем шаблон описанный внутри тега. |
− | Главная же страница подхватывается шаблоном в ~\ | + | Главная же страница подхватывается шаблоном в ~\templates\demodizzy\xslt\modules\catalog\special-offers.xsl, так как в нем кроме условия стоит параметр priority="1" |
Вот код шаблона: | Вот код шаблона: | ||
Строка 31: | Строка 31: | ||
То есть, шаблон подключается если в полученном коде страницы будет параметр is-default = '1' | То есть, шаблон подключается если в полученном коде страницы будет параметр is-default = '1' | ||
− | is-default = '1' - говорит о том что страница является главной (в модуле структура указанно | + | is-default = '1' - говорит о том что страница является главной (в модуле структура указанно что путь к ней следующий - "/") |
− | Внутри | + | Внутри тега расположен вызов USEL выборки, которая и выбирает товары из каталога. |
− | |||
− | |||
+ | Если нам нужно чтобы вместо товаров выводился обычный контент - нужно поставить у первого шаблона параметр | ||
+ | <source lang="xml"> | ||
+ | <xsl:template match="result[@module = 'content']" priority="2"> | ||
+ | </source> | ||
[[Категория:Верстка в XSLT]] | [[Категория:Верстка в XSLT]] |
Версия 11:28, 1 мая 2018
Задача: На сайте с шаблоном "Современный" (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">