UMIhelp

Разработка сайта на UMI.CMS => Макросы UMI.CMS => Тема начата: creation.vis от 16 Февраля 2012, 10:20:46

Название: Шаблон USel для вывода меню.
Отправлено: creation.vis от 16 Февраля 2012, 10:20:46
Здравствуйте, столкнулся со следующей проблемой, в шаблоне обработки запросов XSLT прописываю следующий код:

<xsl:template match="udata" mode="menu-usel-1">
   <ul>
     <xsl:apply-templates select="page" mode="menu-usel-1"/>
   </ul>
 </xsl:template>

 <xsl:template match="page" mode="menu-usel-1">
  <li>
    <a href="{@link}">
      <xsl:value-of select="name" />
    </a>
  </li>
 </xsl:template>

<xsl:template match="page[@is-active='1']" mode="menu-usel-1">
  <li>
    <a href="{@link}">
      <xsl:value-of select="name" />
    </a>
  </li>
 </xsl:template>

В итоге все страницы выбранные по заданным параметрам из базы данных по протоколу USel отображаются как активные (@is-active='1'). Насколько понял именно этот атрибут тега page отвечает за текущую страницу.
Название: Re:Шаблон USel для вывода меню.
Отправлено: BaceH от 16 Февраля 2012, 11:57:41
у вас два одинаковых шаблона
добавте
<xsl:template match="page[@is-active='1']" mode="menu-usel-1">
  <li>
    <a href="{@link}" class="active">
      <xsl:value-of select="name" />
    </a>
  </li>
 </xsl:template>
стили пропишите для class="active"

или же
<xsl:template match="page[@is-active='1']" mode="menu-usel-1">
  <li>
          <xsl:value-of select="name" />
  </li>
 </xsl:template>
убрать ссылку из активного меню
Название: Re:Шаблон USel для вывода меню.
Отправлено: creation.vis от 16 Февраля 2012, 20:43:16
Sorry, опечатка вышла.
Дело в том что шаблон для активного и неактивных пунктов меню изначально отличался по параметру class="active" стили для которого были прописаны. При таком условии, все страницы выбранные по заданным параметрам из базы данных по протоколу USel отображаются как активные (@is-active='1'). Попытка прописать @is-active='0' для неактивных страниц также ничего не дает.

Выборки по протоколу udata/content /menu по заданной методике проходят на ура, ну что то вроде:

<xsl:template match="item" mode="menu">
    <li>
      <a href="{@link}">
        <xsl:value-of select="@name"/>
      </a>
    </li>
  </xsl:template>

  <xsl:template match="item[@status = 'active']" mode="menu">
    <li>
       <a href="{@link}" class="active">
         <xsl:value-of select="@name"/>
       </a>
    </li>
  </xsl:template> 

а вот с USel никак.
Название: Re:Шаблон USel для вывода меню.
Отправлено: BaceH от 17 Февраля 2012, 09:08:56
покажите USel и шаблоны обработки
Название: Re:Шаблон USel для вывода меню.
Отправлено: admin от 21 Февраля 2012, 21:03:13
@is-active - по моему, есть только в xml, который возвращает макрос вывода меню, но не usel запрос, он вроде как никогда не проверял является ли какая-нибудь страница текущей(активной)