Вывод всех опросов одним вызовом — различия между версиями
Kirill (обсуждение | вклад) (Новая страница: «Стандартные макросы предполагают вывод опросов только по заданым параметра - либо указан…») |
Mad grant (обсуждение | вклад) |
||
(не показано 6 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
− | Стандартные макросы предполагают вывод опросов только по | + | Стандартные макросы предполагают вывод опросов только по заданным параметрам - либо указанный опрос, либо последний опрос. Это не всегда бывает удобно, так как объщее число опросов может меняться, а добавлять вручную в шаблоны вывод новые опросы неудобно.<br/><br/> |
Процесс вывода можно немного автоматизировать:<br/> | Процесс вывода можно немного автоматизировать:<br/> | ||
Строка 14: | Строка 14: | ||
</source> | </source> | ||
− | Начиная с | + | Начиная с версие 2.8.3 идентификатор может отличаться. Для версии более ранней этот id=40. <br/><br/> |
В шаблоне, где необходимо выводить все активные опросы, надо добавить следующий вызов: | В шаблоне, где необходимо выводить все активные опросы, надо добавить следующий вызов: | ||
<source lang="xml"> | <source lang="xml"> | ||
− | <xsl:apply-templates select="document('usel:// | + | <xsl:apply-templates select="document('usel://votetest/')//item" disable-output-escaping="yes" mode="votetest"/> |
</source> | </source> | ||
Теперь мы знаем id всех объектов "Опрос". Они будут в результирующем xml-ответе. Остаётся только обработать эту выборку: | Теперь мы знаем id всех объектов "Опрос". Они будут в результирующем xml-ответе. Остаётся только обработать эту выборку: | ||
Строка 25: | Строка 25: | ||
<xsl:template match="item" mode="votetest"> | <xsl:template match="item" mode="votetest"> | ||
<!-- <xsl:value-of select="@id"/> <br/> --> | <!-- <xsl:value-of select="@id"/> <br/> --> | ||
− | <xsl:variable name=" | + | <xsl:variable name="vote_id" select="@id" /> |
<!-- <xsl:value-of select="$vote_id"/> <br/> --> | <!-- <xsl:value-of select="$vote_id"/> <br/> --> | ||
− | + | <xsl:apply-templates select="document(concat('uobject://', $vote_id))/udata" /> | |
− | + | </xsl:template> | |
</source> | </source> | ||
Здесь мы поочерёдно применяем ко всем опросам шаблон вывода (выделеный курсивом). Остаётся только оформить необходимым Вам образом сами опросы. Посмотреть пример шаблонов опросов Вы можете на локалпаке, если установите демо-дизайн интернет-магазина "Современный". | Здесь мы поочерёдно применяем ко всем опросам шаблон вывода (выделеный курсивом). Остаётся только оформить необходимым Вам образом сами опросы. Посмотреть пример шаблонов опросов Вы можете на локалпаке, если установите демо-дизайн интернет-магазина "Современный". | ||
+ | [[Категория:Верстка в XSLT]] |
Текущая версия на 19:50, 4 июня 2013
Стандартные макросы предполагают вывод опросов только по заданным параметрам - либо указанный опрос, либо последний опрос. Это не всегда бывает удобно, так как объщее число опросов может меняться, а добавлять вручную в шаблоны вывод новые опросы неудобно.
Процесс вывода можно немного автоматизировать:
Для начала необходимо получить все возможные опросы. Сделать это можно простым usel-запросом. Его описание Вы можете найти здесь http://help-dev.umi-cms.ru/chapter.XSLTTemplates.usel.html. Создадим файл с usel-запросом и названием votetest.xsl:
<?xml version="1.0" encoding="utf-8"?><br/>
<selection><br/>
<target expected-result="objects"><br/>
<type id="ИД_объекта_опрос" /> <br/>
</target><br/>
</selection><br/>
Начиная с версие 2.8.3 идентификатор может отличаться. Для версии более ранней этот id=40.
В шаблоне, где необходимо выводить все активные опросы, надо добавить следующий вызов:
<xsl:apply-templates select="document('usel://votetest/')//item" disable-output-escaping="yes" mode="votetest"/>
Теперь мы знаем id всех объектов "Опрос". Они будут в результирующем xml-ответе. Остаётся только обработать эту выборку:
<xsl:template match="item" mode="votetest">
<!-- <xsl:value-of select="@id"/> <br/> -->
<xsl:variable name="vote_id" select="@id" />
<!-- <xsl:value-of select="$vote_id"/> <br/> -->
<xsl:apply-templates select="document(concat('uobject://', $vote_id))/udata" />
</xsl:template>
Здесь мы поочерёдно применяем ко всем опросам шаблон вывода (выделеный курсивом). Остаётся только оформить необходимым Вам образом сами опросы. Посмотреть пример шаблонов опросов Вы можете на локалпаке, если установите демо-дизайн интернет-магазина "Современный".