Вывод своего опроса на каждой странице новости (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>
- Теперь на странице каждой новости будет выводится свой вопрос.