Кнопка добавления чанка в содержимое

Добрый вечер!
Подскажите, пожалуйста, как реалиизавать такую штуку. На мой взгляд очень полезная вещь.
Сделать кнопочку для менеджера в содержимом, для вставки чанка в нужное место в тексте.
К примеру:
В на вкладке «Дополнительные поля» MIGX галерея, но ее необходимо вставить в середине содержимого [[*content]], менеджер ставит курсор в нужное место в содержимом и нажимает кнопку «Вставить галерею», куда автоматически вставляется код чанка.
Vadim
31 октября 2017, 17:27
modx.pro
2 318
0

Комментарии: 14

Волков Николай
31 октября 2017, 20:48
0
Варианты:
1) Покупка ContentBlocks или что-то аналогичное. В нем вставка чанков — это самое меньшее, что можно сделать.
2) Реализация кастомной логики / покупка плагинов для текстовых редакторов. TinyMCE и CKEditor точно смогут подобное.
3) Если по каким-либо причинам я смог объяснить, что бесплатно/просто подобное не реализуется, но для вас в данный момент проблема с деньгами- вставлять в нужное место
[[$gallery]]
/
{include 'gallery'}
и т.д. зависимости от парсера.

P.S.
автоматически вставляется код чанка.
парсить код чанков ради переноса их содержимого — не надо.
    Илья Уткин
    31 октября 2017, 20:53
    0
    А это зависит от используемого HTML-редактора. У TinyMCE есть возможность создать разнообразные шаблоны.
      Волков Николай
      31 октября 2017, 21:07
      0
      1) Ссылка на форум 9 летний давности…
      2) Еще раз:
      бесплатно/просто подобное не реализуется
      человек в тупую убьет тучу времени, пока будет пытаться их поставить.
        Илья Уткин
        31 октября 2017, 21:24
        0
        Можно вообще сказать менеджерам, что галерея вставляется так: __Galery__, а самому написать плагин на onWebPagePrerender, в котором заменять эту строку на
        $modx->getChunk('gallery')

        В итоге получится бесплатное и простое решение)
          Волков Николай
          31 октября 2017, 21:28
          +1
          Можно вообще сказать менеджерам, что галерея вставляется так: __Galery__
          Ну если уж прямо вообще, то тогда в ручную заставить писать на чистом HTML :-))))))))
            Vadim
            31 октября 2017, 21:33
            +1
            Отличная идея!
            Волков Николай
            31 октября 2017, 21:31
            0
            А если серьезно, то увидев __GALLERY__ вспомнил сразу JS и его шаблоны под асинхрон :-)
              Vadim
              31 октября 2017, 21:34
              +1
              Только вот [[$Galery]] не сильно отличается от __Galery__
              Vadim
              31 октября 2017, 21:27
              0
              В этой задаче нет острой необходимости, чтобы задействовать платные плагины.
              Для интереса ради, такая вещь будет полезна многим.
              Мне думается, есть простой вариант реализации… Но пока он не приходит мне в голову. )))
              Буду рад, если кто-то даст направление движения.
                Hetzerok
                01 ноября 2017, 12:52
                0
                Как я понимаю нужно отталкиваться от визуального редактора — посмотрите имеет ли он возможность создавать кастомные вставки и если имеет то насколько сложно делать. А уж там дело техники.
            Сергей Шлоков
            01 ноября 2017, 07:10
            +1
            Может быть этого менеджера, не способного нажать 10 клавиш, устроить обычный драг-н-дроп?
              Vadim
              02 ноября 2017, 23:06
              0
              Нашел как сделать кнопку для ckeditor!
              Может кому пригодится.
              Создал плагин:
              Иерархия:
              manager/assets/components/ckeditor/ckeditor/plugins/name_plugin
              name_plugin — название плагина, в моем случае «mgalery»

              manager/assets/components/ckeditor/ckeditor/plugins/mgalery
              manager/assets/components/ckeditor/ckeditor/plugins/mgalery/plugin.js
              manager/assets/components/ckeditor/ckeditor/plugins/mgalery/images
              manager/assets/components/ckeditor/ckeditor/plugins/mgalery/images/mgalery.png
              manager/assets/components/ckeditor/ckeditor/plugins/mgalery/dialogs
              manager/assets/components/ckeditor/ckeditor/plugins/mgalery/dialogs/mgalery.js

              Содержание plugin.js:
              CKEDITOR.plugins.add('mgalery', {
                init : function(editor) {
                  var command = editor.addCommand('mgalery', new CKEDITOR.dialogCommand('mgalery'));
                  command.modes = {wysiwyg:1, source:1};
                  command.canUndo = true;
              
                  editor.ui.addButton('Mgalery', {
                    label : 'Вставить галерею',
                    command : 'mgalery',
                    icon: this.path+'/images/mgalery.png'
                  });
              
                  CKEDITOR.dialog.add('mgalery', this.path + 'dialogs/mgalery.js');
                }
              });
              Содержание mgalery.js:
              CKEDITOR.dialog.add('mgalery', function(editor) {
                return {
                  title : 'Вставить галерею',
                  minWidth : 200,
                  minHeight : 70,
                  onOk: function() {
                    var mgalerystyle = this.getContentElement( 'idmgalery', 'mgalerystyle').getInputElement().getValue();
                    this._.editor.insertHtml('<div class="motion_galery ' + mgalerystyle + '">[[$motion.galery]]</div>');
                  },
                  contents : [{
                    id : 'idmgalery',
                    label : 'First Tab',
                    title : 'First Tab',
                    elements : [{
                      id : 'mgalerystyle',
                      type : 'text',
              		label : 'Стиль (не обязательно)'
                    }]
                  }]
                };
              });
              в админке:
              Системные настройки — ckeditor — Дополнительные плагины — mgalery

                Vadim
                02 ноября 2017, 23:08
                0
                Может где-то каряво, но функцию выполняет и бесплатно!
                Vadim
                02 ноября 2017, 23:22
                0
                Системные настройки:


                Вид кнопки в редакторе:


                При нажатии открывается диалоговое окно для добавления стиля при необходимости


                В итоге получаем вставленный в нужное место чанк


                Изнурительный диалог с менеджером устранен
                  Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                  14