Как изменить пункт (ы) в стандартном меню (скрипты для юКоз, uCoz)
Как изменить один пункт в стандартном меню
Этот вопрос прозвучал на форуме юКоз (uCoz forum.ucoz.ru) и, ответа на него, полного, приемлемого и с примерами, не нашлось. Исправляю эту ситуацию так, как считаю возможным.
Сам вопрос, если интересно, звучал вот так:
Quote (VanoONLINE)
Здравствуйте. Подскажите, как в стандартном 956ом дизайне изменить цвет одной строчки в меню. Как менять цвет всего меню понятно (в css)
...
Итак. Как же изменить строчку в стандартном, генерируемом системой, меню, который вставляется в шаблон оператором $SMЕNU_1$, а само меню формируется и изменяется/корректируется в «Конструкторе меню»?
Выходов, как минимум несколько.
Задать свой класс в Конструкторе меню ...
И прописать соответствующие стили к установленным классам в CSS
Но, только для ссылок - элементов «a», иногда это не совсем то ...
Либо с помощьюJavaScript - любому элементу меню. А если уж быть конкретным, то с совмещением чистого JavaScript и библиотеки (фреймворка)jQuery, для удобства.
Информация:
Если у вас сайт на хостинге юКоз, и вы не совершали никаких действий по отключению скрипта - jQuery у вас есть, так как подключена «по умолчанию». Это, тот самый, скрипт «u.js» - который включает в себя эту библиотеку (фреймворк)(v1.3.2 на момент написания).
Для примера, приведу фрагмент исходного кода меню. Вот он:
Как четко видно по исходнику, меню имеет свой ID по которому его проще всего «вычислить» на странице. Так и поступим. Причём, каждое меню, если их несколько, имеет свой, уникальный в пределах страницы, ID.
Изменять пункты меню, можно как прописывая дополнительные стили к ним, так и через CSS, добавляя свой класс к необходимому (нужному) элементу.
Второе - лично мне ближе (я считаю, что так более грамотно управлять отображением элементов дизайна).
Назначаем класс одному элементу списка (меню)
Допустим, вам нужно прописать другой цвет фона к 3-му пункту и всё. Сделать это можно/лучше найдя элемент по его индексу.
Где: $(document).ready(function() - Ожидаем когда объектная модель документа (DOM) будет готова к использованию.
$('#uMenuDiv1 li:eq(2)') - ищем третий пункт li:eq(2) - отсчёт идет с нуля - в блоке с ID = «uMenuDiv1». Пункты в стандартном меню - это элементы неупорядоченного списка, то есть элементы «li». Что, кстати, видно по коду.
.addClass('myClass'); - добавляем (если есть, если нет - назначаем) найденному элементу класс «myClass».
или как во втором случае:
.css({backgroundColor:'#F00'}); - прописываем ему стиль «background-color:#F00;» - то есть фоновый цвет - красный.
Но, зачастую, не всегда, но всё же, бывает нужно иметь «под рукой» несколько, если не все элементы меню, причем с разными классами. В таком случае, проще скриптом пройтись, перебрать все элементы меню, и назначить им класс автоматически, в зависимости от «индекса» данного элемента.
$('#uMenuDiv1 ul.uMenuRoot>li') - выбираем всех прямых потомков «ul.uMenuRoot» - то есть все верхние элементы «li».
for(var i=0;i<b;i++){a[i].className+=' myClass'+[i];}; - проходимся по ним циклом, и назначаем (добавляем) класс, в зависимости от порядкового номера элемента на текущий момент цикла - a[i].className+=' myClass'+[i];
Где:
a[i] - текущий элемент.
.className+=' myClass'+[i] - добавляем класс плюс номер элемента.
Получаем диапазон классов начиная от «myClass0» и заканчивая, в данном случае - «myClass15» .... В зависимости от количества пунктов в меню - b=a.length;.
Далее - мы можем управлять любым элементом меню при помощи стилей:
$('#uMenuDiv1 ul.uMenuRoot>li:contains("Обратная")') - выбираем всех прямых потомков «ul.uMenuRoot» - то есть все верхние элементы «li» в которых есть текст, в данном случае - со словом «Обратная».
Здравствуйте! на forum.ucoz.ru так и не получил ответ. Может тут смогут помочь... Включен модуль интернет-магазин. Созданы под него категории. Хочу внести изменения и получить следующее: чтоб эти категории находились под разделом в меню "Интернет магазин", а отдельный блок категорий убрать. Т.е. категории интернат-магазина находились сразу под ним. Интересует вариант акардиона, только без изменения кнопок, стилей и т.п. (чтоб сохранялось по шаблону и как в настройках $CATALOG$). Ну просто не могу сообразить как в $MENU_1$, под /shop запихнуть $CATALOG$ магазина И ещё: обычно нажимаемое меню акордеона является не активным, а активны под ним категории. Мне нужно, чтоб при нажатии "Интернет-магазин" открывался акордион (просто вываливался каталог) и сразу загружалась страница /shop. Да, и при переходе на другую страницу магазина, чтоб сохранения куки были и меню не закрывалось на каждой новой странице (может это и не нужно указывать, в каталоге оно не закрывается, но на всякий случай решил указать). Как такое возможно?
А как изменить не пункт меню, а саму надпись "меню сайта", поменять цвет?
Отредактировать шаблон глобального блока «Первый контейнер» или того, в котором у вас меню. Найти надпись «Меню сайта» и заменить на свою. ... Это в ПУ » Управление дизайном » Редактирование шаблонов » Глобальные блоки ... ...
Что-то тут всего так много наворочено) Раньше, помню все пункты были прописаны и легко было ставить галочку "невидим" Легко было переместить выше - ниже, изменить название любого модуля. Попроще (по старому) можно как-то добраться до регулировок МЕНЮ? Или их вообще упразднили? Сейчас у меня в "Конструктор меню" лишь вот такое, убогое