Вывод всех опросов одним вызовом — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
Строка 32: Строка 32:
  
 
Здесь мы поочерёдно применяем ко всем опросам шаблон вывода (выделеный курсивом). Остаётся только оформить необходимым Вам образом сами опросы. Посмотреть пример шаблонов опросов Вы можете на локалпаке, если установите демо-дизайн  интернет-магазина "Современный".
 
Здесь мы поочерёдно применяем ко всем опросам шаблон вывода (выделеный курсивом). Остаётся только оформить необходимым Вам образом сами опросы. Посмотреть пример шаблонов опросов Вы можете на локалпаке, если установите демо-дизайн  интернет-магазина "Современный".
 +
[[Категория:Шаблонизаторы]][[Категория:Верстка в XSLT]]

Версия 08:52, 8 сентября 2011

Стандартные макросы предполагают вывод опросов только по заданным параметрам - либо указанный опрос, либо последний опрос. Это не всегда бывает удобно, так как объщее число опросов может меняться, а добавлять вручную в шаблоны вывод новые опросы неудобно.

Процесс вывода можно немного автоматизировать:

Для начала необходимо получить все возможные опросы. Сделать это можно простым 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>

Здесь мы поочерёдно применяем ко всем опросам шаблон вывода (выделеный курсивом). Остаётся только оформить необходимым Вам образом сами опросы. Посмотреть пример шаблонов опросов Вы можете на локалпаке, если установите демо-дизайн интернет-магазина "Современный".