UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: sam от 26 Сентября 2014, 16:14:56

Название: Как создать .xsl-файл
Отправлено: sam от 26 Сентября 2014, 16:14:56
Есть такой блок:
<div id="block">
<div id="popup">
<div class="infoblock">
<div class="title">
<span style="margin: 6px 7px 0 0; float: right;">
<a href="javascript:;" onClick="hide()" alt="" title=""><img src="/images/design/close.png" border="0" height="18" width="18" alt="" title="" /></a>
</span>
<h2></h2>
</div>
<div class="body">
<div class="in">
<div style="padding: 12px; background: #ffffff; border: 1px solid #dedede; -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px;">
<img style="margin: 1px 10px -30px 0;" src="/images/design/basket-full.png" border="0" height="28" width="28" />
                                       <div style="margin-left: 40px;">
<strong>
<xsl:text></xsl:text><br/>
<xsl:text></xsl:text>
</strong>
</div>
</div>
<div style="text-align: center; margin: -1px 0 -12px 0;">
<img src="/images/design/tail.png" border="0" height="11" width="21" />
</div>
<div style="padding: 12px; margin-bottom: 5px;">
<xsl:text</xsl:text> </div>
</div>
</div>
</div>
</div>
</div>

Вчитываться необязательно. Просьба подсказать, как создать/сделать из этого отдельный .xsl-файл без изменения самого вышеуказанного кода, т.е. вставив его в файл?, где расположить сам файл и каким вызовом разместить в default.xsl (основной шаблон)?
Название: Re:Как создать .xsl-файл
Отправлено: admin от 27 Сентября 2014, 13:55:11
если вам нужно просто иметь возможность вставлять данный кусок кода в уже существующие шаблоны, то не обязательно создавать отдельный xsl фалй. Достаточно прописать в любом уже задействованном xsl файле, такой шаблон

<xsl:template name="your_name">
  ... your code
</xsl:template>


и в нужных местах вызывайте его так
<xsl:call-template name="your_name" />
Название: Re:Как создать .xsl-файл
Отправлено: sam от 27 Сентября 2014, 21:32:53
Благодарю за оперативный ответ! Вариант хороший, как один из вариантов буду иметь в арсенале. Только мне все-же интересно сделать другой вариант - создание нового .xsl-файла, который я планирую сохранить в директиве /xsltTpls/modules/emarket/filename.xsl, и соответственно вызов этого шаблона из основного (/xsltTpls/layouts/default.xsl). Спасибо!
Название: Re:Как создать .xsl-файл
Отправлено: admin от 27 Сентября 2014, 22:21:01
для подключения любого xsl файла используйте xsl:include, обычно основные подключения делаются в /xsltTpls/default.xsl, но вы также можете вставить данную инструкцию в любой уже подключенный файл, как например это сделано в /xsltTpls/modules/content/common.xsl
Название: Re:Как создать .xsl-файл
Отправлено: sam от 28 Сентября 2014, 00:11:36
Стимулировать к самостоятельным действиям Вы мастер. И правильно, если Вы знаете и умеете работать с XSLT, и где-то научились к этому, почему бы и меня не подтолкнуть к этому, и почему бы мне не последовать за Вами?!

Вопрос ставлю по-другому:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template name="my_template_name">
        ...my own code/mytemplate...
    </xsl:template>
</xsl:stylesheet>

Например, я создал .xsl (код выше), где ...my own code/mytemplate... мой в самом начале описанный код, чтобы вызвать этот файл/тэплейт, мне надо прописать в default.xsl?:
1. <xsl:call-template name="my_template_name" />
или
2. <xsl:apply-templates select="document('udata://emarket/my_own_xsl_name/')/udata" />

Какой из вариантов верный?
Название: Re:Как создать .xsl-файл
Отправлено: admin от 28 Сентября 2014, 04:53:13
чтобы подключить набор шаблонов из другого файла, вам необходимо воспользоваться xsl:include (как и сказано выше)

<xsl:include href="...my own code/mytemplate....xsl" />

а после этого, вы сможете использовать шаблоны из этого файла вызвав их через

<xsl:call-template name="my_template_name" />

вызов же вида
<xsl:apply-templates select="document('udata://emarket/my_own_xsl_name/')/udata" />
предполагает, что вы вызываете макрос %emarket my_own_xsl_name()%, так как такого макроса нет в umi (см. документацию с макросами), то этот вызов стоит использовать, только если вы написали свой кастом, что не относится к вашему случаю.

Название: Re:Как создать .xsl-файл
Отправлено: sam от 28 Сентября 2014, 13:44:49
Понятно всё. Спасибо!