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

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

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

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

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

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

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

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

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

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

Ответов: 4
Просмотров: 3372
Последний ответ 24 Июнь 2011, 12:58:58
от polo

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

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
стили пунктов меню
« : 17 Сентябрь 2012, 10:52:20 »
Здравствуйте. Столкнулась с такой проблемой. Мне надо сделать подменю таким образом, чтоб при открытии одного из пунктов он выделялся цветом и раскрывал список его дочерних пунктов. Это я сделала. Но так же надо чтоб при выборе этих дочерних пунктов выделение с родительского снималось, а дочерний выделялся. у меня получается, что выделяется и тот и другой. какое условие можно поставить, чтоб он определял что последний активный пунт - это дочерний, поэтому с родительского надо снять выделение.

*

BaceH

  • ***
  • 141
  • +21/-0
    • Просмотр профиля
Re:стили пунктов меню
« Ответ #1 : 19 Сентябрь 2012, 02:51:55 »
ид выделенного элемента меню будет совпадать с текущей страницей.

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:стили пунктов меню
« Ответ #2 : 19 Сентябрь 2012, 11:43:28 »
а как можно написать это? текущую страницу я еще как нить напишу.. а как выделенную?
вот хотела так:
<xsl:if test="@id = @id[@status='active']">
...
</xsl:if>
но так не получается..

*

john

  • ***
  • 206
  • +6/-0
    • Просмотр профиля
Re:стили пунктов меню
« Ответ #3 : 19 Сентябрь 2012, 19:02:48 »
Я сделал так. Активному пунтку меню присваивается статус  и его описываю в css
/classes/modules/custom.php
        public function is_active_page($id=NULL) {
        if(!$id) return;
        $page_id = cmsController::getInstance()->getCurrentElementId();// берем id текущей страницы
        if($page_id==$id) return 'active';
        }
в xslt шаблоне
используем –
<!-- вызов кастомного скрипта -->
<xsl:variable name="actmenu" select="document(concat('udata://custom/is_active_page/',@id,'/',$document-page-id))/udata" />

<a href="{@link}" class="{$actmenu}">link</a>

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:стили пунктов меню
« Ответ #4 : 20 Сентябрь 2012, 09:19:26 »
Всем спасибо.. проблема решена... Техподдержка помогла)))

*

john

  • ***
  • 206
  • +6/-0
    • Просмотр профиля
Re:стили пунктов меню
« Ответ #5 : 24 Сентябрь 2012, 19:37:35 »
В тему стилей пунктов меню.
Как написать условие?
Если один из пунктов 1-го уровня меню имеет 2-ой уровень меню (т.е. подуровень), необходимо его выделить пунктиром. И если выбрана конкретная ветка, пункт этого 1-го уровня меню выделить например цветом.

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:стили пунктов меню
« Ответ #6 : 25 Сентябрь 2012, 09:21:36 »
я делала так.. в админке добавляла новое поле типа Флаг. Назвать можно какнить типа Есть вложенные подпункты или чтонить такое.
И в шаблонах прописала условие. Если это поле отмечено, то <div class-active>, если нет, то просто <div>...
в вашем случае либо подчеркнут либо нет...
если нужен полностью подробный пример, напишите. постараюсь расписать...

*

john

  • ***
  • 206
  • +6/-0
    • Просмотр профиля
Re:стили пунктов меню
« Ответ #7 : 25 Сентябрь 2012, 15:35:29 »
Было бы неплохо посмотреть пример.
Спасибо!

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:стили пунктов меню
« Ответ #8 : 28 Сентябрь 2012, 09:27:32 »
<!-- вызов всего меню -->
<xsl:template match="udata[@module = 'content'][@method = 'menu']">
  <ul>
  <xsl:apply-templates select="items/item" mode="menu"/>
  </ul>
</xsl:template>

<!-- активный пункт меню -->
<xsl:template match="item[@status = 'active']" mode="menu">
<xsl:variable name="is_submenu_link1"
select="document(concat('upage://', @id, '.submenu_link1'))//value" /><!-- Это поле, которое я создала в админке с типом данных флаг -->
<xsl:choose>
<xsl:when test="$is_submenu_link1"><!-- Если стоит галочка то выполняется следующее -->
<li class="current">
<a href="{@link}"><span id="a"><xsl:value-of select="@name" disable-output-escaping="yes"/></span></a>
<xsl:apply-templates select="document(concat('udata://content/menu/notemplate/1/', @id))/udata[items/item]"/>
</li>
</xsl:when>
<xsl:otherwise><!-- Если галочка не стоит то это -->
<li>
<a href="{@link}"><span id="a"><xsl:value-of select="@name" disable-output-escaping="yes"/></span></a>
</li>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

<!-- неактивный пункт меню -->
<xsl:template match="item" mode="menu">
<xsl:variable name="is_submenu_link1" select="document(concat('upage://', @id, '.submenu_link1'))//value" />
<xsl:choose>
<xsl:when test="$is_submenu_link1">
<li>
<a href="{@link}"><span id="a"><xsl:value-of select="@name" disable-output-escaping="yes"/></span></a>
<xsl:apply-templates select="document(concat('udata://content/menu/notemplate/1/', @id))/udata[items/item]"/>
</li>
</xsl:when>
<xsl:otherwise>
<li>
<a href="{@link}"><span id="a"><xsl:value-of select="@name" disable-output-escaping="yes"/></span></a>
</li>
</xsl:otherwise></xsl:choose>
</xsl:template>

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

*

admin

  • *****
  • 2421
  • +172/-1
    • Просмотр профиля
Re:стили пунктов меню
« Ответ #9 : 29 Сентябрь 2012, 00:20:07 »
и все же я не понимаю зачем вам такая сложная конструкция, у вас есть в админке страницы вида

1 первая
1.1 подпункт первый
1.2 подпункт второй

2. вторая
3. третья

на всех страницах вы проставляете галочки "Выводить в меню", у пунктов первого уровня дополнительно ставите галочки "Показывать подменю", "Меню всегда развернуты" (последняя галочка вам нужна чтобы подпункты всех пунктов были видны, если вам надо чтобы были видны только подпункты текущей страницы то эту галочку убираем)

затем делаем вызов (вывести меню в 2 уровня от корня)
<xsl:apply-templates select="document('udata://content/menu/notemplate/2/0')" />

пишем шаблон вывода меню

<!-- вызов всего меню -->
<xsl:template match="udata[@module = 'content'][@method = 'menu']">
  <ul>
<xsl:apply-templates select="items/item" mode="menu"/>
  </ul>
</xsl:template>

<!-- все пункты меню (общий шаблон) -->
<xsl:template match="item" mode="menu">
<li>
<a href="{@link}"><span id="a"><xsl:value-of select="text()" /><!--disable-output-escaping="yes" не нужен, в названии меню не предполагается наличие тегов, имя пункта меню содержиться внутри узла в виде текста так что выводим его не через @name, а через text()--></span></a>
<xsl:apply-templates select="items[item]" mode="sub_menu"/>
</li>
</xsl:template>

<!-- активный пункт меню (уточняющий шаблон размещаем ниже общего) -->
<xsl:template match="item[@status = 'active']" mode="menu">
<li class="current">
<a href="{@link}"><span id="a"><xsl:value-of select="text()"/></span></a>
<xsl:apply-templates select="items[item]" mode="sub_menu"/>
</li>

</xsl:template>

<!--вывод блока для подпункта меню-->
<xsl:template match="items" mode="sub_menu">
  <ul>
<xsl:apply-templates select="item" mode="menu"/><!--выводим элементы подпункта при помощи шаблона описанного выше, в принципе такая связка шаблонов выведет любое количество уровней меню-->
  </ul>
</xsl:template>

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:стили пунктов меню
« Ответ #10 : 01 Октябрь 2012, 12:51:29 »
потому что у меня первый уровень горизонтальный и у него свои стили.. а второй и 3 уровни вертикальные и у них совсем другие стили... не знала как иначе сделать.. так получилось.. а времени на улучшение не было.. вот и оставила пока так...

*

admin

  • *****
  • 2421
  • +172/-1
    • Просмотр профиля
Re:стили пунктов меню
« Ответ #11 : 01 Октябрь 2012, 13:08:40 »
в итоге, мною предложенный вариант подошел вам? или все же пока вам удобнее пользоваться своим кодом?

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:стили пунктов меню
« Ответ #12 : 01 Октябрь 2012, 14:50:14 »
нет... я пробовала на подобии этого.. тогда выпадающее меню появляется только тогда, когда пункт активынй... а у неактивных не выпадает... мне нужно чтоб у всех выпадало при наведении... а в моем случаи выпадает...

*

admin

  • *****
  • 2421
  • +172/-1
    • Просмотр профиля
Re:стили пунктов меню
« Ответ #13 : 01 Октябрь 2012, 15:31:10 »
для того чтобы 2 уровень меню появился при использования макроса content/menu, убедитесь, что у страниц первого уровня, которые имеют подпункты, в админке стоят галочки "Отображать в меню", "Показывать подменю", "Меню всегда развернуто". Последняя галочка как раз и отвечает за вывод подпунктов, даже если родительская страница 1 уровня не является активной .

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:стили пунктов меню
« Ответ #14 : 01 Октябрь 2012, 17:05:43 »
оу.. пасиб огромное.. ларчик то просто открывался... я недавно с юми работаю, поэтому не все нюансы еще знаю...
поставила галочку Меню всегда развернуто и все заработало))) пасиб...