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

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

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

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

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

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

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

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

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

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

Ответов: 4
Просмотров: 3245
Последний ответ 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

  • ***
  • 202
  • +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

  • ***
  • 202
  • +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

  • ***
  • 202
  • +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

  • *****
  • 2419
  • +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

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

*

niakriss

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

*

admin

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

*

niakriss

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