Как отключить очистку кода в TinyMCE для MODX

TinyMCE for MODx Revo

Как всегда решение такой несложной на первый взгляд задачи затянулось на часы.

Итак, как же отключить автоматическое удаление неизвестных TinyMCE тегов?
Для начала нужно сказать, что для MODx Revoluion версия TinyMCE — 3.5.4 (плагина — 4.3.3) и датируется июлем 2012. В то время, как на официальном сайте сейчас можно скачать версии 4.0.26, либо 3.5.11 из третьей ветки.
Не нужно говорить, что за два года многое изменилось. Но для MODx приходится использовать старый плагин.

Отключить cleanup в TinyMCE можно несколькими способами:

  1. Передать параметр “verify_html : false” в вызове Javascript.
    tinyMCE.init({
            ...
            verify_html : false
    });
    

    Но где он находится в MODx я не нашел. Поэтому переходим к следующему пункту.

  2. Настроить список поддерживаемых тегов в файле xconfig.js.
    Либо дописать недостающие теги. Но в нашем случае легче совсем вырубить, указав валидными их все.

    var tinymce_valid_elements = '*[*]';
    

    В предвкушении победы заливаем конфиг на /assets/components/tinymce. И тут оказывается, что в данной реализации плагина он вообще не подгружается.
    Самое интересное, что поэтому нет нужных HTML5 тегов, например <figure> и <figcapture>, и они нещадно режутся.
    Ладно, едем дальше.

  3. И наконец финальное решение:
    Отредактировать /core/components/tinymce/templates/script.tpl:

    Tiny.config = <?php echo $this->modx->toJSON($this->properties); ?>;
    Tiny.config.valid_elements = '*[*]'; //отключаем фильтр как в случае "verify_html : false"
    

    Туда же можно закинуть огромный список html-тегов через Tiny.config.valid_elements, но я этого делать не рекомендую.

Перезагружаем админку и видим, что новые теги больше не режутся. Win!
Лично мне сам редактор не особо нужен, но добавлять вручную ссылки на статьи вида [[~123]] каждый раз разворачивая и копаясь в дереве элементов — сизифов труд. TinyMCE облегчает данную задачу.

Total
0
Shares
9 comments
  1. Благодаря вам вместо целого дня, провел в поисках ответа 15 минут! спасибо!

  2. Кстати, хотел было сначала просто снести TinyMCE
    но после того, как компонент был удален возможность редактировать страницы пропала вообще. не загружается страница и все.
    Не знаете как победить такую проблему?

    1. Деинсталлировать плагин через “Управление пакетами”, а затем очистить кэш.

  3. Спасибо! Ваша статья очень помогла. Не мог применять микроразметку вместе с TinyMCE. Теперь всё прекрасно работает!

  4. Есть ещё один способ. Файл
    core/components/tinymce/tinymce.class.php
    В массив
    $this->properties = array_merge(array(
    Добавить строку
    ‘extended_valid_elements’ => ‘*[*]’,
    Для понимания тегов HTML5 строку
    ‘schema’ => ‘html5’
    И будет вам счастье
    + посмотрите в сторону патча
    http://community.modx-cms.ru/blog/solutions/9443.html

    1. На данный момент использую новый TinyMCE для MODX. Единственный его минус – неудобное переключение на исходный код.

  5. Спасибо, чувак, полдня мучился, единственное только надо указать, что нужно 3 строчки удалить, а еще лучше сделай скрин или выложи кусок кода сюда), блин, спасибо еще раз)

  6. В assets/components/tinymce/tiny.js нужно передать параметр в переменную s
    MODx.loadRTE = function(id) {
    if (Tiny.config){
    var s = Tiny.config || {
    verify_html : false
    };
    delete s.assets_path;
    delete s.assets_url;
    delete s.core_path;
    delete s.css_path;
    delete s.editor;
    delete s.id;
    delete s.mode;
    delete s.path;
    s.cleanup_callback = “Tiny.onCleanup”;
    var z = Ext.state.Manager.get(MODx.siteId + ‘-tiny’);
    if (z !== false) {
    delete s.elements;
    }
    s.dialog_type = ‘modal’;
    s.plugins = Tiny.config.plugins+’,inlinepopups’;
    if (Tiny.config.frontend||Tiny.config.selector){
    s.mode = “specific_textareas”;
    s.editor_selector = Tiny.config.selector||”modx-richtext”;
    }
    tinyMCE.init(s);
    }

  7. Тоже не мог сделать микроразметку, возился полдня, наткнулся на эту статью, сделал все за 10 минут. Автор лучший!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Previous Article
Оптимизация MODx Revolution

Быстрая оптимизация MODX Revolution

Next Article
Структура обычного URL

ЧПУ: О расширениях в URL

Related Posts
Переход с MODX на October CMS
Далее

Переход с MODX на October CMS. Часть 3-я

Сегодня мы поговорим о том как сделать аналог дополнительных полей (TV-параметров) в October CMS. Это неотъемлемая часть любого…