Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Страницы в "активном" разделе меню без ссылок

Страницы в "активном" разделе меню без ссылок
, by

Здравствуйте уважаемые!

имеем: пункт меню ведет на страницу со вьюхой(ну много там обьектов, много) у каждого из объектов есть своя страница с подробным описанием и галереей. В Структура-Типы материалов создан нужный тип. В настройках меню этого типа материалов  ставлю галочку на нужное меню, выибраю нужный родительский элемент по умолчанию, после этого появляется возможность создать ссылку в выбранном меню, тогда родительский\(нужный) пункт подсвечивается, если ссылку не создаю - пункт не подсвечивается, зачем же его тогда вообще выбирать в настройках типов материалов. Если не ситавить галочку в выборе меню, аналогично, родительский элемент остается неподсвеченным. в стили ЛИ-шки ничего нового не дописывается, остаетс clas=leaf

Нужно:

чтобы находясь на одной из страниц "объектов", я имел подсвеченный родительский пункт меню + в хлебных крошках тоже хочется иметь название родительсого раздела.  раскрываться этот пункт меню, в отличии от соседних не должен!

 

Как правильно решить подобную задачу или что я делаю неправильно?

буду крайне признателен за совет.

1 answer
votes: 581
Answer

Посмотрите, возможно у вас в теге body настроен вывод классов нод.

Можно решить проблему еще двумя способами, через javascript и через php, через php правильнее.

Можете попробовать nice menus поставить он позволяет выводить классы пунктам меню и правильно обрабатывать active и active-trail.

В случае если будете писать свой модуль для этого, то лучше всего настроить пути, например для объектов, через модуль Pathauto одинаковым образом, чтобы они например начанались с /object/... , так вы сможете проверить на какой вы странице находитесь. Проверить можно в php с помощью переменной глобальной $_SERVER, у которой есть поле REQUEST_URI, проверяем так:

<?php
  if(substr($_SERVER['REQUEST_URI'], 0, 7) == '/object'){
  //совершаем действие на этой странице
}
?>

Можно например такую проверку вставить в template.php и добавить классы в тег body и уже основываясь на этом классе написать нужный нам css. Например если в body выводится класс node-object, то выделяем через css .node-object .menu-1233 нужным цветом.

Если через javascript (jquery) нужно проверить, то там тоже можно обратиться к пути.

 var sBody = document.URL;

Проверить урл можно также как и в php:

if(sBody.substr(0,7) == '/object'){
  //совершаем действие
}

Можно например с помощью нужного класса добавить еще один, например active:

$('.menu-1324').addClass('active');

 


Спасибо з аподробный ответ. 

1. на данном этапе меня совсем не интересуют красивые урлы, почти даже наоборот:)

2. Все же, если не ошибаюсь, то выбор родительского пункат по умолчанию давал нужный эффект когда-то:)

3. почему-то в класс меню не пишется его ИДшник.. тот самый .menu-1324

буду экспериментировать.


Удалось решить задачу - отключил в соотв. меню появившиеся пунты - все :)