xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Открыть страницу или форму в диалоговом окне

Опубликовано в

В восьмёрке стало значительно проще открыть любую страницу сайта или даже форму в диалоговом окне. Для этого достаточно приатачить либу core/drupal.ajax и создать ссылку с классом use-ajax и атрибутом data-accepts="application/vnd.drupal-modal":

В THEMENAME.theme:

/**
 * Implements hook_page_alter().
 */
function THEMENAME_page_alter(&$page) {
  $page['#attached']['library'][] = 'core/drupal.ajax';
}

Где-то в html коде:

<a href="/node/2" class="use-ajax" data-accepts="application/vnd.drupal-modal">Open dialog</a>

Результат:

Нода в диалоговом окне
Форма добавления ноды в диалоговом окне

Настройки диалога можно прописать в атрибуте data-dialog-options в формате json:

<a ... data-dialog-options='{"width":700}'>...</a>

Способ показа контента в диалоге для Drupal 7

Написанное актуально для Drupal 8
Похожие записи

Комментарии RSS

Вопрос по data-dialog-options, с width все ясно, а как диалогу задать конкретный id или класс чтоб можно было темизировать какой-либо конкретный диалог?

Благодарю за оперативность.

Подскажите путь в корне сайта куда сохранить Ваш файл THEMENAME.theme.php, использую xampp для localhost, создав ссылку в body ноды и выставил Full HTML, файл сохранил в C:\xampp\htdocs\drupal8\core\lib\Drupal\Core\Theme
не получается по ссылке открыть страницу в диалоговом окне!

Спасибо за ссылку всю ночь изучаю, действительно отличается от семёрки.
Создал по темингу 8 в C:\xampp\htdocs\drupal8\theme\example\awesome.info.yml, awesome.libraries.yml - скопировав и заменив файлы из C:\xampp\htdocs\drupal8\core\themes\bartik, а awesome.theme с Вашим кодом аттача - это не дало результата. Удал папку example.
Добавив код аттача в bartik.theme в самый низ файла, очистил кеш - тоже не помогло? Подскажите, как решить?

Теперь вместо data-accepts="application/vnd.drupal-modal" необходимо указывать data-dialog-type="modal" https://www.drupal.org/node/2488192

И библиотека называется core/drupal.dialog.ajax.

Спасибо за ответ Plazik - открывается диалоговое окно только вместе с Заголовком ноды (для примера "Новость 10") добавляется span property, data и class:

<span property="schema:name" data-quickedit-field-id="node/10/title/en/full"
class="field field--name-title field--type-string field--label-hidden">Новость 10</span>

Подскажите как сделать вывод только Заголовка ноды без "span"?

вот пишу в файл MYTHEME.theme

<?php
function MYTHEME_page_alter(&$page) {
$page['#attached']['library'][] = 'core/drupal.ajax';
}

и ссылку создал

бла бла

и ведь не работает. прямо невезуха...(
может есть дополнения какие неглавные?

добавил в MYTHEME.libraries.yml
dependencies:
- core/jquery
- core/ajax
и в ссылке ошибку убрал и радость пришла ))

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании