Вход • Регистрация

Дополнительный класс для первого и последнего пункта меню

  • 16 августа 2012 г. , редакция: 16 августа 2012 г.
  • Добрый день.
    Столкнулся с задачей, где надо прописать для последнего пункта меню в элемент <li> класс, например, last.
    Для первого элемента мне не надо пока, но в будущем может пригодиться.
    Подскажите, пожалуйста, есть ли возможность добавить такой класс в меню?
    P.S: до вашей системы, делали магазины на imagecms, там была такая возможность :) Может и у вас есть такое?
    • 16 августа 2012 г.
    • Конечно есть, даже два варианта есть как это сделать. Читайте документацию по меню, там все описано + видео урок есть по интеграции дизайна - там это все тоже показывается.
  • 16 августа 2012 г.
  • Видеоуроки да, посмотреть - это первое что надо сделать, если Вы разработчик. Особенно про интеграцию дизайна. Почти 2 часа, но польза великая
    • 16 августа 2012 г.
    • Кстати я так и недосмотрел
      Мне кажется можно было бы сократить на час минимум. Очень там все разжевано.
      • 16 августа 2012 г.
      • Надо же готовить новое поколение разработчиков. Ато получается, что желающих построить сайт на диафане много. А Кто бы мог оказать такую услугу, мало. Клиенты жалуются на нехватку рабочих кадров.
    • 16 августа 2012 г.
    • Да документацию читал, наверное невнимательно. Пока так и не удалось найти то что нужно.
      Я делаю меню:
      <ul id=menu>
      <li><a href="">Главная</a></li>
      <li><a href="">О компании</a></li>
      <li><a href="">...</a></li>
      <li><a href="">...</a></li>
      <li><a href="">...</a></li>
      <li class="last"><a href="">Последний пункт меню</a></li>
      </ul>
      В остальном, по интеграции дизайна все понятно :)
      • 16 августа 2012 г.
      • http://cms.diafan.ru/dokument/full-manual/templates-functions/#show_block_menu
        • 16 августа 2012 г.
        • Это видел, но так и не нашел там ответа, к сожалению.
      • 16 августа 2012 г.
      • Шаблон default уже делает именно такое меню. если есть необходимость чтобы второй уровень был вложен то надо переместить блок который занимается выводом вложенного меню чуть выше. Перед выводом закрывающего тега </li>.

        modules/menu/views/menu.view.show_level.php
        Код

        if ($result["show_all_level"] || $row["active_child"] || $row["active"]){
        // вывод вложенного уровня меню
        $menu_data = $result;
        $menu_data["parent_id"] = $row["id"];
        $menu_data["level"]++;

        if (empty($result['attributes']['count_level']) || $result['attributes']['count_level'] >= $menu_data["level"])
        $this->get('show_level_2', 'menu', $menu_data); //ниже функция, которая выводит в цикле пункты второго уровня вложенности.
        }

        перед
        Код

        if ($row["active"]){
        // окончание пункта меню - текущей страницы
        echo '</li>';
        • 16 августа 2012 г.
        • У меня верхнее меню (но это не столь важно). Вложенности нет.

          Мне надо на всех страницах выводить:

          <ul id=menu>
          <li><a href="">Главная</a></li>
          <li><a href="">О компании</a></li>
          <li><a href="">...</a></li>
          <li><a href="">...</a></li>
          <li><a href="">...</a></li>
          <li class="last"><a href="">Последняя страница в меню!</a></li>
          </ul>

          Когда открываю страницу "<li class="last"><a href="">Последняя страница в меню!</a></li>", чтобы было <li class="last active"> и тд.

          Речь идет не об окончаниях и активных элементах, а именно о дополнительном классе для конкретно последнего пункта меню без вложенности и тд.
  • 16 августа 2012 г.
  • http://cms.diafan.ru/ здесь в верхнем меню, например у пункта Демо шрифт красный и жирный. Нужно чтото подобное, только для элемента перед ссылкой, а не внутри.
  • 16 августа 2012 г. , редакция: 16 августа 2012 г.
  • Короче, дело к ночи! Нате-гнуте! (мне от тех. поддержки):

    Цитата
    Здравствуйте!
    Не подскажете решение:?

    Мне нужно какие-то пункты меню делать красным цветом. При этом все остальные пункты - синего цвета.

    Можно как-то задать class или id для конкретного пункта?

    Спасибо! :)


    Цитата
    Здравствуйте!

    Решение следующее:

    Используйте слово Increment при указании class или id. Например:

    tag_start_1="[li class=`item_Increment`]"

    Increment будет увеличиваться для каждого следующего пункта меню начиная с 0.
  • 16 августа 2012 г.
  • А в чём тогда проблема у человека?
  • 07 января 2013 г. , редакция: 07 января 2013 г.
  • Может кто подсказать как сделать ВАЛИДНОЕ меню? Такое нужно (с индивидуальными классами - item_1, item_2, item_3):

    <ul class="item_1">
    <li>
    <ul class="podmenu">
    <li></li>
    <li></li>
    <li></li>
    </ul>
    </li>
    </ul>

    <ul class="item_2">
    <li>
    <ul class="podmenu">
    <li></li>
    <li></li>
    <li></li>
    </ul>
    </li>
    </ul>

    <ul class="item_3">
    <li>
    <ul class="podmenu">
    <li></li>
    <li></li>
    <li></li>
    </ul>
    </li>
    </ul>

    Сейчас у меня меню с НЕВАЛИДНЫМ кодом выводится такой конструкцией:

    <insert name="show_block" module="menu"
    id="3"
    tag_level_start_1="[ul]"
    tag_start_1="[li class='item_Increment']"
    tag_end_1="[/li]"
    tag_level_end_1="[/ul]"
    tag_level_start_2="[ul class='podmenu']"
    tag_start_2="[li]"
    tag_end_2="[/li]"
    tag_level_end_2="[/ul]"
    >

    Интересует только вопрос валидности, а так и сам знаю, что браузеры корректно отображают этот невалидный список выводимый данной конструкцией.

    • 07 января 2013 г. , редакция: 07 января 2013 г.
    • Артур. Для нестандартных решений меню, у нас есть шаблоны.
      Впрочем - для меня уже шаблон привычнее чем тег. Тегом уже почти не пользуюсь.
      • 07 января 2013 г.
      • Спсибо, Денис. А где почитать можно об этом?
        • 09 января 2013 г.
        • http://cms.diafan.ru/dokument/full-manual/sysmodules/menu/ - здесь принципы. Коменарии внутри файлов шаблонов, которые можно взять за образец для своего шаблона.
  • 09 января 2013 г.
  • Если подключить jquery то

    <script type='text/javascript'>
    $(document).ready(function() {
    $("#menu li:last-child").addClass("last");
    });
    </script>

    как раз подставит класс для последнего элемента <li> даже если он будет с классом active
    • 09 января 2013 г.
    • как раз будет вот такая конструкция:

      <ul id=menu>
      <li><a href="">Главная</a></li>
      <li><a href="">О компании</a></li>
      <li><a href="">...</a></li>
      <li><a href="">...</a></li>
      <li><a href="">...</a></li>
      <li class="last"><a href="">Последняя страница в меню!</a></li>
      </ul>
  • 10 января 2013 г.
  • А через ID чем не устраевает?
    Получаем id и делаем стили в css у четом этого id
    • 13 января 2013 г.
    • Скорее всего потому что конструкция может быть динамической. Сегодня 3 пункта, а завта может быть и боьлше или меньше. Не будешь же каждый раз в CSS лазить циферку подправлять. М?
  • 13 января 2013 г.
  • Можно стилями еще выделить:

    Код
    #menu li:last-child a {color:red;}



    но в IE плохо работает. лучше тогда скриптом, всего пользовался приведенным выше примером проблем не было.

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум