Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Не выводится дополнительное меню в версии "Start"

Автор BabajkaРаздел Шаблоны XSLT

Ответов: 4
Просмотров: 3629
Последний ответ 10 Января 2013, 10:08:04
от admin
Магазин "Современный" - добавление заголовка к левому меню каталога

Автор manadsgnРаздел Шаблоны XSLT

Ответов: 4
Просмотров: 4087
Последний ответ 25 Июня 2012, 17:33:00
от manadsgn
Текущая страница - добавление класса к ссылке главного меню

Автор manadsgnРаздел Шаблоны XSLT

Ответов: 2
Просмотров: 3023
Последний ответ 24 Июня 2012, 14:00:10
от manadsgn
Вывод в меню только разделов с определенными свойствами

Автор poloРаздел Шаблоны XSLT

Ответов: 4
Просмотров: 5549
Последний ответ 24 Июня 2011, 12:58:58
от polo
НАстройка системных параметров при импорте из 1С (меню, поиск и т.п.)

Автор atachРаздел Custom макросы

Ответов: 3
Просмотров: 3275
Последний ответ 16 Ноября 2012, 16:18:48
от admin

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

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Здравствуйте!
Может быть уже кто-то сталкивался с таким вопросом, как вывод меню в разделе каталога включая в себя только подразделы этого раздела.

Суть такова:

Каталог (главный раздел)
  - Раздел 1А
   -- подРаздел 2А
    ---подРаздел 3А
     ---- Объект
  - Раздел 1б
   -- подРаздел 2б
    ---подРаздел 3б
     ---- Объект
  - Раздел 1в
   -- подРаздел 2в
    ---подРаздел 3в
     ---- Объект

так вот, надо что бы в Разделах с "А" показывались только те же разделы с "А" в меню, а другие "б" и "в" разделы в меню раздела "А" не выводились.

 Я попробовал такой вызов, где переменная $document-page-id сообщает в макрос меню "pageId" именно этого открытого раздела "А"

<xsl:variable name="document-page-id" select="/result/@pageId" />

 <xsl:apply-templates select="document('udata://content/menu/(null)/5/$document-page-id')/udata/items" mode="menu-catalog-center"/>

но всё равно выводятся все разделы в меню подряд.

Что посоветуете ?
« Последнее редактирование: 26 Сентября 2014, 22:26:00 от Axiomateria »

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
1) - использовать новый модуль меню, либо getCategoryList
2) - в шаблоне, описывающем item, добавить строчку <xsl:if test="@id = $document-page-id"><xsl:apply-templates select="items/item" /></xsl:if>
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
1) - использовать новый модуль меню, либо getCategoryList
Для нового модуля "Меню" надо множество  типов данных делать и шаблоны к ним с макросами собственными делать, что учитывая объём каталога трудоёмко будет слишком получится.
getCategoryList - выводит просто всё подряд, то есть все разделы и подразделы как слева на сайте demodizzy...

2) - в шаблоне, описывающем item, добавить строчку <xsl:if test="@id = $document-page-id"><xsl:apply-templates select="items/item" /></xsl:if>

Вот этот способ стоит доработать, как мне кажется:
 <xsl:apply-templates select="document('udata://content/menu/207/5/$document-page-id')/udata/items" mode="menu-catalog-center"/>

где 207 = ID главного раздела каталога

однако может быть я не точно понял куда вставлять ваши пример обработки?
вот как у меня получается сейчас:

    <xsl:template match="items" mode="menu-catalog-center">
        <ul>     
            <xsl:apply-templates select="item" mode="menu-catalog-center"/>
        </ul>
    </xsl:template>
   
    <xsl:template match="item" mode="menu-catalog-center">
        <a href="{@link}" umi:element-id="{@id}" umi:region="row" umi:field-name="name" umi:empty="&empty-section-name;" umi:delete="delete">
            <xsl:value-of select="@name"/>         
        </a>
        <xsl:if test="@id = $document-page-id">
            <xsl:apply-templates select="items/item" mode="menu-catalog-center" />
        </xsl:if>     
    </xsl:template>
   
и всё равно всё подряд выводится в меню, включая разделы ,как "Главная", "Новости",  "Контакты" и т.д.

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Axiomateria? ничего не понял. Вам надо вывесли список разделов и подразделов какого-то каталога, как в demodizzy в левом блоке. Но при этом выводить подразделы только у того раздела первого уровня, который является текущей странице или является родителем текущей страницы?

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Axiomateria? ничего не понял. Вам надо вывесли список разделов и подразделов какого-то каталога, как в demodizzy в левом блоке. Но при этом выводить подразделы только у того раздела первого уровня, который является текущей странице или является родителем текущей страницы?

Да : "является родителем текущей страницы"

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
загляните сюда http://umihelp.ru/forum/index.php/topic,1898.msg8329.html#msg8329

Спасибо, admin!

Но пока в моём случае условие не выполняется...

Попробую теперь наглядно представить вопрос:

http://joxi.ru/umQqVIwyTJDZAsqftHk - на этом скриншоте раздел "Торговое оборудование 11" имеет дочерние вложения в виде подразделов, которые только и надо вывести пользователю,, находящемся в этом же разделе "Торговое оборудование 11" на сайте кроме всех остальных разделов с подразделами  "Торговое оборудование 22" "Торговое оборудование 33" "Торговое оборудование 44", которые вот пока выводятся, игнорируя условие $parents/page/@id = @id or $document-page-id = @id - см. второй скриншот  http://joxi.ru/I2cqVIwyTJA6A-Hrxs0

	<!-- условие - отображать только тот раздел в котором мы находимся -->
<xsl:if test="$parents/page/@id = @id or $document-page-id = @id">
<xsl:apply-templates select="document(concat('udata://catalog/getCategoryList/void/', @id))" />
</xsl:if>

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Axiomateria, я правильно понимаю, что вам нужно выводить список разделов первого уровня ("Торговое оборудование 11", "Торговое оборудование 22" и т.д.) на всех страницах, за исключением страниц данных разделов и дочерних к ним.

А на странциах этих разделов и дочерних к ним надо выводить в левом (или где-там у вас выводиться этот блок) блоке только подразделы (то есть разделы второго уровня вытягивая их из разделов первого уровня являющегося текущей странице или родителем текущей страницы)? Если да, то:

вначале следует определить какой id передавать, чтобы вывести соответствующий список разделов.
<xsl:variable name="category-parent-id">
<xsl:choose>
<xsl:when test="count(result/parents/page) &gt; 1 and @module='catalog'">
<xsl:value-of select="result/parents/page[2]/@id"/>
</xsl:when>
<xsl:otherwise>551</xsl:otherwise>
</xsl:choose>
</xsl:variable>

вызов разделов
<xsl:apply-templates select="document(concat('udata://catalog/getCategoryList/void/',$category-parent-id,'/1000'))/udata"/>

В итоге, у вас система будет выводить либо разделы 1 уровня (я предположил, что id у раздела "Каталог" = 551), либо разделы второго уровня текущей ветки, если мы находимся в подразделе или на странице товара

P.S. ну и шаблоны для вывода подразделов оформите или подключите через mode

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Спасибо admin! Свет в конце тоннеля появился вот после такого вызова:

                                       <xsl:variable name="category-parent-id">
                                            <xsl:choose>
                                                <xsl:when test="count(result/parents/page) &gt; 1 and @module='catalog'">
                                                    <xsl:value-of select="result/parents/page[2]/@id"/>
                                                </xsl:when>
                                                <xsl:otherwise>207</xsl:otherwise>
                                            </xsl:choose>
                                        </xsl:variable>
                                       
                                        <xsl:apply-templates select="document(concat('udata://catalog/getCategoryList/catalog//',$category-parent-id,'/1000'))/udata" mode="menu_category"/>

и его обработки:
    <xsl:template match="udata[@method = 'getCategoryList']" mode="menu_category">
        <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="menu_category" />
        </ul>
    </xsl:template>
    <xsl:template match="udata[@method = 'getCategoryList']//item" mode="menu_category">
        <li umi:element-id="{@id}" umi:region="row">
                <a href="{@link}" umi:field-name="name" umi:delete="delete" umi:empty="&empty-section-name;">
                    <xsl:value-of select="." />
                </a>
            <xsl:apply-templates select="document(concat('udata://catalog/getCategoryList/void/', @id))" mode="menu_category" />
        </li>
    </xsl:template>

НО если углубится в структуру этого раздела "Торговое оборудование 11" далее по ссылкам и его меню, то в его дочерних подразделах сами пункты меню пропадают...
Возможно ещё надо как-то вот этот момент доработать, что бы структура в меню этого раздела оставалась доступной вне зависимости от погружения в дочерние подразделы родительского раздела  (ну например что бы пользователь всегда видел все доступные пункты меню родительского раздела "Торговое оборудование 11" для ориентированной навигации)
    <xsl:template match="udata[@method = 'getCategoryList']//item" mode="menu_category">
        <li umi:element-id="{@id}" umi:region="row">
                <a href="{@link}" umi:field-name="name" umi:delete="delete" umi:empty="&empty-section-name;">
                    <xsl:value-of select="." />
                </a>
            <xsl:apply-templates select="document(concat('udata://catalog/getCategoryList/void/', @id))" mode="menu_category" />
        </li>
    </xsl:template>
?