Я пытаюсь использовать основную функцию Drupal 8, чтобы открыть страницу в модальном окне. К сожалению, очень сложно найти официальную документацию по этому поводу, и большинство блогов, посвященных этой теме, похоже, устарели. Но, насколько я знаю, должно быть возможно создать модальный диалог, добавив следующие атрибуты в a-элемент:
class="use-ajax” data-dialog-type="modal"
Так что полный пример будет выглядеть так:
<a href="/impressum/lizenzen/43" class="use-ajax" data-dialog-type="modal">
<span class="glyphicon glyphicon-copyright-mark" aria-hidden="true"></span>
</a>
Где в моем случае /impressum/lizenzen/43
путь к странице просмотра.
Кажется, это работает, но только когда я вошел в систему как администратор. Поскольку это не похоже на проблему с разрешениями, я предполагаю, что она связана с темой администратора ( Семь ), которая может включать некоторые базовые библиотеки, которые Bootstrap (которые я использую для своего сайта) может не иметь. Но как ни странно, в строке заголовка модала вместо заголовка страницы появилась строка «Массив», что заставляет меня предположить, что произошел неожиданный разговор между массивом и строкой:
Может ли кто-нибудь
- приведи меня к официальной документации основных модальных API,
- объясните мне, в чем может быть причина того, что он работает только как администратор.
- И, наконец, скажите мне, почему же происходит разговор между массивом и строкой, вызывающий модал?
источник
Ответы:
Это официальная документация об изменении API, которую вы упомянули:
Модал / dialog / ajax использует параметры запроса вместо принятия заголовков
Самая важная деталь - прикрепить эту библиотеку:
Вы спрашиваете, почему это работает на страницах администратора без этого. Причина в том, что страницы администратора уже имеют зависимости от большинства библиотек jQuery Drupal, в то время как страницы, не относящиеся к администраторам, загружаются без каких-либо jQuery из коробки (что является большим улучшением производительности в D8).
Тема начальной загрузки
Если включено в настройках темы темы Bootstrap, «jQuery Modal» заменяется на «Bootstrap Modal», см. Этот фрагмент кода:
LibraryInfo :: альтер ()
Чтобы это работало, вы присоединяете ту же основную библиотеку, что и выше, чтобы тема Bootstrap могла найти эти базовые библиотеки для их переопределения.
источник
<a href="https://drupal.stackexchange.com/node/43" class="use-ajax" data-dialog-type="modal"> test </a>
Для тех, кто пытается добавить это в тему, вы можете просто добавить drupal.dialog.ajax в свой файл library.yml в разделе JS зависимость:
Подробнее о зависимостях темы здесь .
источник
Я также боролся с Документацией. Тем не менее, я смог заставить работать мой модал с помощью Dialog API D8 Core.
Отображение модального
Закрытие модального
источник
Ваша тема должна объявить зависимость от core / drupal.ajax, потому что ajax не загружается автоматически для анонимных пользователей.
источник