Как сделать пункт меню #

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО

Баг или фича в работе стандартного меню?

#1 24 июня 2015 в 04:21
В общем, суть какая: нужно сделать в стандартном меню следующее:
Кинотеатры:
— Пушкинский
— Лермонтовский
— Тургеневский.

При клике на пункт "Кинотеатры" ничего происходить не должно вообще — только выпадать подменю.

При установке назначения ссылки "Кинотеатры" в # — почему-то при клике переходит на главную, хотя происходить вообще ничего не должно.

Как это исправить?
#2 24 июня 2015 в 06:49
Анатолий, попробуйте вместо # в адрес ссылки поставить
  1. javascript:void(0)
#3 24 июня 2015 в 07:21
Анатолий, а почему бы не сделать статью или модуль с тремя фотографиями этих кинотеатров и сделать каждую картинку кликабельной? При нажатии на "Кинотеатры" будет она открываться, а уже сам кинотеатр из выпадающего меню или при нажатии на фотографию. Лишняя информативность не помешает. ИМХО
#4 24 июня 2015 в 07:56


Анатолий, попробуйте вместо # в адрес ссылки поставить

  1. javascript:void(0)

PrazdNik
все равно будет переход. Но уже по ссылке http: //ваш_сайт/javascript:void(0) т.е. с любой другой страницы будет перекидывать на главную. Инстант автоматом дописывает host...
Тоже задавался вопросом как у ТС. Ответа пока не нашел.
#5 24 июня 2015 в 08:24

все равно будет переход.

Zau4man
На двух проектах разной версии проверял, нет перехода.

Тоже задавался вопросом как у ТС. Ответа пока не нашел.

Zau4man
Самый лучший вариант предложил Volgomarket

сделать статью или модуль с тремя фотографиями этих кинотеатров и сделать каждую картинку кликабельной?

Volgomarket
Еще к этим фотографиям добавить описание не помешает.
#6 24 июня 2015 в 11:00

javascript:void(0)

PrazdNik
Не работает. Пробовал по разному.

… а почему бы не сделать статью или модуль с тремя фотографиями этих кинотеатров ...

Volgomarket
Потому что требуется другая логика работы — а именно та, что я описал в первом сообщении. При щелчке по родительскому элементу должно только открываться выпадающее подменю, никаких переходов или открытий страниц.

Тоже задавался вопросом как у ТС. Ответа пока не нашел.

Zau4man
Не кошерно. От слова "совсем".

Самый лучший вариант предложил Volgomarket

PrazdNik
Это вообще нельзя рассматривать как рабочий вариант, поскольку, как я уже написал, будет работать совершенно не так, как мне нужно.

Ещё варианты? Неужели остается только хакать \system\controllers\menu\model.php?
#7 24 июня 2015 в 11:08
В общем, решил хаком модели.

Файл \system\controllers\menu\model.php
В релизе 2.2.1 строка 176.


заменить:
  1. if (!$is_root_added && !$is_external) { $item['url'] = href_to($item['url']); }
на
  1. if (!$is_root_added && !$is_external && $item['url']!="#") { $item['url'] = href_to($item['url']); }
Что делает? Не добавляет хост, если ссылка = #.

Работает ровно так, как мне и нужно.


Предложенный ниже вариант удобней — редактируются только файлы шаблона (модель не изменяется).
#8 24 июня 2015 в 11:13
С шаблоне menu.tpl.php
  1. <?php echo !empty($item['url']) ? $item['url'] : 'javascript:void(0)'; ?>
меняем на
  1. <?php echo (!empty($item['url']) && $item['url'] != '/javascript:void(0)') ? $item['url'] : 'javascript:void(0)'; ?>
и пишем ссылку javascript:void(0) в меню
#9 24 июня 2015 в 11:57

и пишем ссылку javascript:void(0) в меню

IngDesign

Ваше решение удобнее редактированием только файла в шаблоне (т.е. не изменяются файлы движка, что большой плюс).

Но ссылку нужно использовать в виде "/javascript:void(0)"… Если без слеша — то модель у нему урл прикрутит.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.