Использование условий на примере макроса core navibar в шаблоне demodizzy — различия между версиями
Материал из Umicms
Mad grant (обсуждение | вклад) |
Mad grant (обсуждение | вклад) |
||
Строка 35: | Строка 35: | ||
=== Результат === | === Результат === | ||
[[Файл:Navibar1.png]] | [[Файл:Navibar1.png]] | ||
+ | Как мы видим главной страницы в навигации не, так как она не стоит на одном уровне иерархии, как | ||
== Вывод навигации на всех страницах, кроме главной== | == Вывод навигации на всех страницах, кроме главной== | ||
Версия 12:26, 4 сентября 2013
Актуально для версии 2.9.1
Содержание
Вывод постраничной навигации
Для вывода постраничной навигации в системе предусмотрен макрос %core navibar()%, см. "Полезные ссылки".
Решение
Добавим в файл /templates/demodizzy/xslt/modules/content/common.xsl перед иклюдами (include) следующий код:
<xsl:template match="udata[@method = 'navibar']">
<xsl:apply-templates select="items/item" mode="navibar"/>
</xsl:template>
<xsl:template match="item" mode="navibar">
<a href="{@link}"><xsl:value-of select="."/></a>
<xsl:text> » </xsl:text>
</xsl:template>
<xsl:template match="item[position() = last()]" mode="navibar">
<xsl:value-of select="."/>
</xsl:template>
Это шаблон для вывода результатов работы макроса, теперь нужно добавить вызов макрос, для этого добавим в файл /templates/demodizzy/xslt/layouts/default.xsl после вызова меню
<xsl:apply-templates select="document('udata://content/menu/(null)/1/')" mode="top_menu" />
следующий код:
<xsl:apply-templates select="document('udata://core/navibar')/udata"/>
Результат
Как мы видим главной страницы в навигации не, так как она не стоит на одном уровне иерархии, как
Вывод навигации на всех страницах, кроме главной
Допустим, мы не хотим, чтобы на главной странице выводился результат работы макроса, так как это лишено смысла и портит внешний вид:
Для этого воспользуемся конструкцией <xsl:if>, см. "Полезные ссылки".