Пункти меню, які не можна натиснути


21

На сайті Drupal 8 я хочу додати пункти меню з "без посилання", я думав, що посилання не дозволено, але коли я ввійшов до цього, я отримав помилку

Введені вручну шляхи повинні починатися з /,? або #.

Чи є спосіб додавання елементів меню, які не можна натискати, не додаючи "#", тому що "#" додати атрибут [data-drupal-link-system-path = ""] і [class = "is-active"]

Відповіді:


44

Для цього потрібно використовувати route:<nolink>. Тоді він буде підтверджений і відображатиметься без посилання.


Велике спасибі, я спробував це, і він справно працює, але все ж додаю атрибути [data-drupal-link-system-path = "<front>"] та [class = "is-active"]
Мохамед Осама Гбриль

1
Це окреме питання від того, що ви намагаєтеся досягти, або основна помилка або проблема з вашою темою, але route:<nolink>це, безумовно, відповідь. Це навіть працює з Патауто.
Кевін

«Є-активним» клас помилка повідомляється тут: drupal.org/project/drupal/issues/2838351
FINEX

Це працювало для мене. Дякуємо за таке вміле рішення.
Учень

2

Щоб створити елемент меню без посилання в спеціальному модулі, додайте до [module_name] .links.menu.yml:

url: 'internal:##'

Вам потрібно додати другий символ # (або будь-яку іншу букву чи слово url: 'internal:#nolink'), щоб атрибут href не став порожнім, що призведе до перезавантаження сторінки, якщо користувач натисне посилання.


Це також хороше рішення. Для мене краще, ніж видалити посилання, що видаляє тег <a>, а потім цей пункт меню втратить відповідні стилі css.
Хуанмі


0

Для Drupal 8 ви можете створити посилання програмно, використовуючи Link :: fromTextAndUrl, не пов'язаний таким чином:

$my_link = Link::fromTextAndUrl(t('This is my link text'), Url::fromUri('route:<nolink>'));

За бажанням ви можете перетворити його в масив, використовуючи: $my_link = $my_link->toRenderable();

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.