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

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «Стандартные макросы предполагают вывод опросов только по заданым параметра - либо указан…»)
 
 
(не показано 6 промежуточных версий 2 участников)
Строка 1: Строка 1:
Стандартные макросы предполагают вывод опросов только по заданым параметра - либо указанный опрос, либо последний опрос. Это не всегда бывает удобно, так как объщее число опросов может меняться, а добавлять вручную в шаблоны вывод новых опросов неудобно.<br/><br/>
+
Стандартные макросы предполагают вывод опросов только по заданным параметрам - либо указанный опрос, либо последний опрос. Это не всегда бывает удобно, так как объщее число опросов может меняться, а добавлять вручную в шаблоны вывод новые опросы неудобно.<br/><br/>
  
 
Процесс вывода можно немного автоматизировать:<br/>
 
Процесс вывода можно немного автоматизировать:<br/>
Строка 14: Строка 14:
 
</source>
 
</source>
  
Начиная с версиt 2.8.3 идентификатор может отличаться. Для версии более ранней этот id=40. <br/><br/>
+
Начиная с версие 2.8.3 идентификатор может отличаться. Для версии более ранней этот id=40. <br/><br/>
  
 
В шаблоне, где необходимо выводить все активные опросы, надо добавить следующий вызов:
 
В шаблоне, где необходимо выводить все активные опросы, надо добавить следующий вызов:
 
<source lang="xml">
 
<source lang="xml">
<xsl:apply-templates select="document('usel://test/')//item" disable-output-escaping="yes" mode="votetest"/>
+
<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="vote_i" 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>
  
 
Здесь мы поочерёдно применяем ко всем опросам шаблон вывода (выделеный курсивом). Остаётся только оформить необходимым Вам образом сами опросы. Посмотреть пример шаблонов опросов Вы можете на локалпаке, если установите демо-дизайн  интернет-магазина "Современный".
 
Здесь мы поочерёдно применяем ко всем опросам шаблон вывода (выделеный курсивом). Остаётся только оформить необходимым Вам образом сами опросы. Посмотреть пример шаблонов опросов Вы можете на локалпаке, если установите демо-дизайн  интернет-магазина "Современный".
 +
[[Категория:Верстка в 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>

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