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

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

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

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

Ответов: 4
Просмотров: 4028
Последний ответ 25 Июня 2012, 17:33:00
от manadsgn
Вывод страницы в меню с отключением вывода в карте сайта

Автор alpotemkinРаздел Макросы UMI.CMS

Ответов: 6
Просмотров: 5645
Последний ответ 03 Ноября 2011, 15:07:29
от alpotemkin
Текущая страница - добавление класса к ссылке главного меню

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

Ответов: 2
Просмотров: 2997
Последний ответ 24 Июня 2012, 14:00:10
от manadsgn
НАстройка системных параметров при импорте из 1С (меню, поиск и т.п.)

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

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

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

*

WenLeks

  • *
  • 32
  • +1/-0
    • Просмотр профиля
День добрый.

http://wiki.umisoft.ru/Отображать_в_меню_демодизи_развернутым_только_активный_пункт_меню
по аналогии сделал меню в каталоге. все работает пока не переходишь по страницам, то есть на первой странице все работает а на странице ?p=1 не работает, в чем причина?

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Развернутый только активный пункт меню
« Ответ #1 : 27 Сентября 2014, 14:11:03 »
С активным пунктом все должно быть ок, скорее всего у вас пагинация (параметр p в адресной строке) действует на ваш список. То есть у вас может не выводиться разделы первого уровня или второго (который вы пытаетесь отобразить если переменная active возвращает true), так как сраница выводить не первые n-ое кол-во разделов, а соответствующий параметру p. Чтобы такого не было, используйте параметр ignore_paging при вызове макроса %catalog getCategoryList()% (подробнее о параметре см. в документации )

А вообще определение активной страницы можно сделать без вызова макроса.
Макрос в wiki берет id всех родителей и id текущей страницы и сравнивает его с id текущего раздела (который в этот момент обрабатывается шаблоном). Но вся эта информация у вас есть в xml текущей страницы (узел result/parents/page/@id и атрибут result/@pageId).
Единственно, что нам мешает, мы хотим сравнить id текущего раздела с id текущей страницы или родителей текущей страницы в шаблоне, который работает с результатами макроса %catalog getCategoryList()% , а соответственно, там они нам недоступны. Но это решается просто, сделайте эти данные глобальными.

Если рассказывать на примере demodizzy, то
В файле /templates/demodizzy/xslt/default.xsl (где глобальные параметры) добавьте новый глобальный параметр
<xsl:variable name="parents" select="/result/parents" />

а глобавльный параметр с id текущей страницы уже там есть
<xsl:variable name="document-page-id" select="/result/@pageId" />

Затем, в шаблоне для обработки каждого item из результатов макроса %catalog getCategoryList()% делаем следующую проверку:
<xsl:template match="udata[@method = 'getCategoryList']//item" mode="left-column">
<li umi:element-id="{@id}" umi:region="row">
<span>
<a href="{@link}" umi:field-name="name" umi:delete="delete" umi:empty="&empty-section-name;">
<xsl:value-of select="." />
</a>
</span>

<!-- условие - отображать только тот раздел в котором мы находимся -->
<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>
</li>
</xsl:template>
« Последнее редактирование: 27 Сентября 2014, 14:13:38 от admin »