Node Embed+CKEditor или Как вставить одну ноду в текстовую область другой ноды?

Главные вкладки

Аватар пользователя kind cat kind cat 11 ноября 2016 в 1:11
2

Добрый день, товарищи!
Решил поделиться инструкцией по установке и интеграции модуля Node Embed в редактор CKEditor, так как существующий гайд на оф сайте не совсем неактуален.
Последовательность установки модулей, думаю, не имеет значения.

Установка Node Embed проходит в штатном режиме и соответствует инструкции в описании к модулю.

  1. Устанавливаем модуль любым удобным способом;
  2. Включаем модуль;
  3. Переходим "Панель управления" -> "Конфигурация" -> "Текстовые форматы", выбираем формат для которого необходима функция вставки содержимого нод, далее "Настройки" и в списке фильтров ставим галку "Insert node", сохраняем.

Установка CKEditor, также не должна вызвать затруднений:

  1. Устанавливаем модуль любым удобным способом;
  2. Включаем модуль;
  3. Для того чтобы наши плагины не исчезли после обновления модуля, необходимо в настройки глобального профиля CKEditor ("Панель управления" -> "Конфигурация" -> "CKEditor" -> "Глобальный профиль"), в разделе расширенных настроек найти "Путь к директории с плагинами" и изменить его на %l/ckeditor/plugins ;
  4. В принципе, с CKEditor - всё, оригинальную инструкцию с рекомендациями можно найти тут.

Теперь самое интересное - интеграция Node Embed и CKEditor:

  1. Необходимо скачать плагин iframedialog для CKEditor и положить его в "sites/all/modules/ckeditor/plugins", хотя система предложит в "sites/all/libraries/ckeditor/plugins/iframedialog" (лично я положил и туда и туда);
  2. Далее, необходимо пропатчить файл node_embed.module в "sites/all/modules/node_embed", сам патч тут.
    Тоже самое можно сделать вручную:
    • открываем;
    • находим строчку 312;
    • удаляем код
      function node_embed_ckeditor_plugin() {
        return array(
          'NodeEmbed' => array(
            'name' => 'NodeEmbed',
            'desc' => t('Node Embed - embed nodes in content.'),
            'path' => drupal_get_path('module', 'node_embed') .'/ckeditor/NodeEmbed/',
          ),
        );
      }
    • вставляем вместо него
      function node_embed_ckeditor_plugin() {
        return array(
          'NodeEmbed' => array(
            'name' => 'NodeEmbed',
            'desc' => t('Node Embed - embed nodes in content.'),
            'path' => drupal_get_path('module', 'node_embed') .'/ckeditor/NodeEmbed/',
            'buttons' => array(
              'NodeEmbed' => array(
                'icon' => 'images/icon.gif',
                'label' => 'Node Embed',
              ),
            ),
          ),
        );
      }
  3. Заходим в настройки CKEditor, выбираем нужный профиль, открываем настройки внешнего вида, в пункте "Плагины" ставим флаги у Node "Embed - embed nodes in content" и "Plugin file: iframedialog", в настройках панели инструментов перетаскиваем кнопку Node Embed icon в необходимое нам место;
  4. Проверяем.

Если возникли проблемы с высотой диалогового окна Node Embed, то можно исправить так:

  1. Открываем /plugins/node_embed/node_embed.css;
  2. Вставляем строчку .cke_dialog_ui_vbox{height: 100% !important;}
ВложениеРазмер
Иконка изображения icon.gif990 байт

Комментарии

Аватар пользователя bumble bumble 11 ноября 2016 в 13:33
1

Благодарю за то что делитесь опытом!
Это обязательно пригодится кому-то в будущем.

kind cat wrote:

Необходимо скачать плагин iframedialog для CKEditor и положить его в "sites/all/modules/ckeditor/plugins", хотя система предложит в "sites/all/libraries/ckeditor/plugins/iframedialog" (лично я положил и туда и туда);

Положив в "sites/all/modules/ckeditor/plugins", плагин пропадет при первом же обновлении модуля CKEditor.

Аватар пользователя kind cat kind cat 11 ноября 2016 в 16:41

Буду рад, если помогу доброму человеку сэкономить время.

bumble wrote:

Положив в "sites/all/modules/ckeditor/plugins", плагин пропадет при первом же обновлении модуля CKEditor.

Исправил.

Аватар пользователя devland devland 27 октября 2019 в 11:02

Да уж, спасибо большое за гайд. Подготовка к работе Node Embed не очень интуитивна. Очень рад, что нашел вашу инструкцию!