Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”

0 Пользователей и 1 Гость просматривают эту тему.

*

Lubashkin

  • *
  • 5
  • +0/-0
    • Просмотр профиля
Имеется вывод подразделов конкретного раздела каталога, выполнено таким образом
<xsl:apply-templates select="document('udata://catalog/getCategoryList/0/(zabory)')/udata"/>

# шаблон

<xsl:template match="udata[@module = 'catalog'][@method = 'getCategoryList']">
     <ul class="sub">
        <xsl:apply-templates select="items/item" mode="catalog"/>
     </ul>
  </xsl:template> 
 
  <xsl:template match="item" mode="catalog">
     <li>
        <a href="{@link}">
          <xsl:if test="@id = $pid">
              <xsl:attribute name="class">active</xsl:attribute>
          </xsl:if>
          <xsl:value-of select="." />
        </a>
     </li>
  </xsl:template>

В данный момент появилась задача выводит еще и подразделы этих разделов, а вот как это осуществить что то не понимаю.

Грубо говоря, нужно вывести многоуровневое меню подразделов, конкретного раздела каталога, используя макрос getCategoryList, плюс выделять активные ветки и разделы

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:многоуровневое меню раздела каталога
« Ответ #1 : 14 Октября 2014, 12:10:54 »
Подобные темы, в разных разрезах, уже обсуждались. Посмотрите поиск по слову "getCategoryList". Если вопросы останутся, пишите.

*

Lubashkin

  • *
  • 5
  • +0/-0
    • Просмотр профиля
Re:многоуровневое меню раздела каталога
« Ответ #2 : 22 Октября 2014, 15:13:24 »
Не получается,уже с разных сторон захожу, поиском прошлась,моего решения нету(((

сейчас пришла к такому варианты
выводу за счет %content menu()% все меню со всеми подразделами, всегда развернуто, что в целом замечательно. Но вот как сделать что бы выводились подраздел только конкретного раздела? тоесть начинаем не полностью выводить все меню, а только структуру конкретного раздела?
Сейчас код выглядит так
        <div class="menu333">
          <xsl:apply-templates select="document('udata://content/menu/0/3')/udata/items" mode="menu333"/>
        </div>

  <xsl:template match="items" mode="menu333">
    <ul>
      <xsl:apply-templates select="item" mode="menu333"/>
    </ul>
  </xsl:template>


  <xsl:template match="item[@status = 'active']" mode="menu333">
    <li>
       <span>
         <xsl:value-of select="@name"/>
       </span>
       <xsl:apply-templates select="items" mode="menu333"/>
    </li>
  </xsl:template>

  <xsl:template match="item|item[.//item[@status = 'active']]" mode="menu333">
    <li>
       <a href="{@link}">
         <xsl:value-of select="@name"/>
       </a>
       <xsl:apply-templates select="items" mode="menu333"/>
    </li>
  </xsl:template>

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:многоуровневое меню раздела каталога
« Ответ #3 : 24 Октября 2014, 00:15:43 »
Цитировать
Сейчас код выглядит так

и что в итоге у вас получается вывести? вроде у вас вывод подразделов как раз для активного элемента.

*

Lubashkin

  • *
  • 5
  • +0/-0
    • Просмотр профиля
Re:многоуровневое меню раздела каталога
« Ответ #4 : 27 Октября 2014, 10:11:48 »
Сейчас выводит все разделы и подразделы. Совсем все) полную структуру

*

idu.kuru

  • *
  • 17
  • +1/-0
    • Просмотр профиля
Re:многоуровневое меню раздела каталога
« Ответ #5 : 30 Октября 2014, 09:23:33 »
не совсем понятно что значит "конкретный" раздел каталога, если это активный раздел то можно так вывести
<xsl:template match="udata[@method = 'getCategoryList']" mode="left-column">
    <ul class="catalog_menu" umi:button-position="bottom left"
        umi:element-id="{@category-id}" umi:region="list" umi:module="catalog" umi:sortable="sortable">

        <xsl:apply-templates select="//item" mode="left-column" />
    </ul>
</xsl:template>

<xsl:template match="udata[@method = 'getCategoryList']" mode="left-column-children">
    <ul class="children" umi:button-position="bottom left"
        umi:element-id="{@category-id}" umi:region="list" umi:module="catalog" umi:sortable="sortable">

        <xsl:apply-templates select="//item" mode="left-column" />
    </ul>
</xsl:template>


<xsl:template match="udata[@method = 'getCategoryList']//item" mode="left-column">
    <li class="cat-item" umi:element-id="{@id}" umi:region="row">
        <xsl:variable name="is_active" select="document(concat('udata://custom/is_active/', @id, '/xslt'))/udata" />
        <xsl:if test="$is_active = 1">
            <xsl:attribute name="class">cat-item current-cat</xsl:attribute>
        </xsl:if>
        <a href="{@link}" umi:field-name="name" umi:delete="delete" umi:empty="&empty-section-name;">
                <xsl:value-of select="." />
            </a>
            <span class="count">
                (<xsl:value-of select="document(concat('udata://catalog/getObjectsList/no/', @id, '//1/10'))/udata/total" />)
            </span>
        <xsl:apply-templates select="document(concat('udata://catalog/getCategoryList/void/', @id, '//1/'))" mode="left-column-children"/>
    </li>
</xsl:template>

выглядит вот так


описано все тут
http://wiki.umisoft.ru/%D0%9E%D1%82%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B0%D1%82%D1%8C_%D0%B2_%D0%BC%D0%B5%D0%BD%D1%8E_%D0%B4%D0%B5%D0%BC%D0%BE%D0%B4%D0%B8%D0%B7%D0%B8_%D1%80%D0%B0%D0%B7%D0%B2%D0%B5%D1%80%D0%BD%D1%83%D1%82%D1%8B%D0%BC_%D1%82%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE_%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D0%BF%D1%83%D0%BD%D0%BA%D1%82_%D0%BC%D0%B5%D0%BD%D1%8E

*

Lubashkin

  • *
  • 5
  • +0/-0
    • Просмотр профиля
Re:многоуровневое меню раздела каталога
« Ответ #6 : 30 Октября 2014, 12:20:05 »
не то... если по данному примеру смотреть, то мне нужно выводить вообще только dvd технику и все, то есть только один раздел с его подразделами глубиной 2.

*

idu.kuru

  • *
  • 17
  • +1/-0
    • Просмотр профиля
Re:многоуровневое меню раздела каталога
« Ответ #7 : 30 Октября 2014, 18:48:20 »
тогда так добавить внутри шаблона дочернего раздела "left-column-children" проверку на активность и если активен снова вызвать шаблон основного раздела "left-column"
<xsl:template match="udata[@method = 'getCategoryList']" mode="left-column">
    <ul class="catalog_menu" umi:button-position="bottom left"
        umi:element-id="{@category-id}" umi:region="list" umi:module="catalog" umi:sortable="sortable">

        <xsl:apply-templates select="//item" mode="left-column" />
    </ul>
</xsl:template>
 
<xsl:template match="udata[@method = 'getCategoryList']" mode="left-column-children">
    <ul class="children" umi:button-position="bottom left"
        umi:element-id="{@category-id}" umi:region="list" umi:module="catalog" umi:sortable="sortable">

        <xsl:apply-templates select="//item" mode="left-column-children" />
    </ul>
</xsl:template>


    <xsl:template match="udata[@method = 'getCategoryList']//item" mode="left-column-children">
        <li class="cat-item" umi:element-id="{@id}" umi:region="row">
            <xsl:variable name="is_active" select="document(concat('udata://custom/is_active/', @id, '/xslt'))/udata" />
            <xsl:if test = "$is_active = 1">

                <xsl:attribute name="class">cat-item current-cat</xsl:attribute>

            </xsl:if>



            <a href="{@link}" umi:field-name="name" umi:delete="delete" umi:empty="&empty-section-name;">
                <xsl:value-of select="." />
            </a>
            <span class="count">
                (<xsl:value-of select="document(concat('udata://catalog/getObjectsList/no/', @id, '//1/10'))/udata/total" />)
            </span>
            <xsl:if test = "$is_active = 1">

                <xsl:apply-templates select="document(concat('udata://catalog/getCategoryList/void/', @id, '//1/'))" mode="left-column"/>

            </xsl:if>
            </li>
    </xsl:template>

<xsl:template match="udata[@method = 'getCategoryList']//item" mode="left-column">
    <li class="cat-item" umi:element-id="{@id}" umi:region="row">
        <xsl:variable name="is_active" select="document(concat('udata://custom/is_active/', @id, '/xslt'))/udata" />
        <xsl:if test = "$is_active = 1">

            <xsl:attribute name="class">cat-item current-cat</xsl:attribute>

        </xsl:if>



        <a href="{@link}" umi:field-name="name" umi:delete="delete" umi:empty="&empty-section-name;">
                <xsl:value-of select="." />
            </a>
            <span class="count">
                (<xsl:value-of select="document(concat('udata://catalog/getObjectsList/no/', @id, '//1/10'))/udata/total" />)
            </span>
        <xsl:apply-templates select="document(concat('udata://catalog/getCategoryList/void/', @id, '//1/'))" mode="left-column-children"/>
    </li>
</xsl:template>
на выходе имеем


со стилями косяк но это уже мелочи