Вывод своего опроса на каждой странице новости (xslt).

Материал из Umicms
Перейти к:навигация, поиск

Актуально для версии 2.9

Задача:

Необходимо сделать так, чтобы у каждой новости выводилось свое голосование.


Решение:

Открываем модуль "Шаблоны данных", находим тип данных "Новость".

Добавляем группу полей и в ней одно поле, например "ид опроса" с идентификатором id_oprosa. Теперь, в редактировании страницы новости в данное поле необходимо внести идентификационный номер нужного опроса.

Открываем файл, в котором описан шаблон, по которому выводится отдельная новость.

Здесь необходимо объявить переменную и присвоить ей значение поля "ид опроса", например так:

<xsl:variable name="opros">

<xsl:value-of select="document(concat('upage://', $document-page-id, '.id_oprosa'))//value" />

</xsl:variable>
Далее, в шаблоне вывода отдельной новости <xsl:template match="/result[@module = 'news'][@method = 'item']">

добавляем вызов макроса %vote insertvote()%

Например:

<xsl:apply-templates select= "document(concat('udata://vote/insertvote/', $opros))" />
Необходимо, также, чтобы был описан шаблон отработки для макроса %vote insertvote()% следующей конструкции:

Вызываем в шаблоне например таким образом:

<xsl:template match="udata[@module = 'vote'][@method = 'insertvote']">
...описание шаблона
</xsl:template>
Теперь на странице каждой новости будет выводится свой вопрос.