Вывод всех опросов одним вызовом
Стандартные макросы предполагают вывод опросов только по заданым параметра - либо указанный опрос, либо последний опрос. Это не всегда бывает удобно, так как объщее число опросов может меняться, а добавлять вручную в шаблоны вывод новых опросов неудобно.
Процесс вывода можно немного автоматизировать:
Для начала необходимо получить все возможные опросы. Сделать это можно простым 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/>
Начиная с версиt 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/> -->
<b><xsl:apply-templates select="document(concat('uobject://', $vote_id))/udata" /></b>
</xsl:template>
Здесь мы поочерёдно применяем ко всем опросам шаблон вывода (выделеный курсивом). Остаётся только оформить необходимым Вам образом сами опросы. Посмотреть пример шаблонов опросов Вы можете на локалпаке, если установите демо-дизайн интернет-магазина "Современный".