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

Материал из Umicms
Перейти к:навигация, поиск
Строка 27: Строка 27:
 
<xsl:variable name="vote_id" select="@id" />
 
<xsl:variable name="vote_id" select="@id" />
 
<!-- <xsl:value-of select="$vote_id"/> <br/> -->
 
<!-- <xsl:value-of select="$vote_id"/> <br/> -->
<b><xsl:apply-templates select="document(concat('uobject://',  $vote_id))/udata" /></b>
+
<xsl:apply-templates select="document(concat('uobject://',  $vote_id))/udata" />
 
</xsl:template>
 
</xsl:template>
 
</source>
 
</source>
  
 
Здесь мы поочерёдно применяем ко всем опросам шаблон вывода (выделеный курсивом). Остаётся только оформить необходимым Вам образом сами опросы. Посмотреть пример шаблонов опросов Вы можете на локалпаке, если установите демо-дизайн  интернет-магазина "Современный".
 
Здесь мы поочерёдно применяем ко всем опросам шаблон вывода (выделеный курсивом). Остаётся только оформить необходимым Вам образом сами опросы. Посмотреть пример шаблонов опросов Вы можете на локалпаке, если установите демо-дизайн  интернет-магазина "Современный".

Версия 09:57, 25 февраля 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/>

Начиная с верси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/> -->
		<xsl:apply-templates select="document(concat('uobject://',  $vote_id))/udata" />
</xsl:template>

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