JS/jQuery

CKEditor 4 – выбор якорей из нескольких редакторов

Допустим ситуацию, когда контент страницы разделен на несколько редакторов, в первом содержится оглавление статьи с якорными ссылками, а во втором основной текст с расставленными якорями.

Проблема заключается в том, что при добавлении якорной ссылки, в списке не будет якорей из других редакторов, что усложняет работу контент менеджера.

Исправить это можно изменив файл плагина /ckeditor/plugins/link/dialogs/link.js или заменить его на готовый link.js

JS код там сжат, для форматирования можно применить сервис 
http://tools.seo-auditor.com.ru/javascript-formatter/

Итак, нужно закомментировать оригинальный код сбора якорей (строки 125-130) и после вставить новый который проходит по всем редакторам.

//f = new CKEDITOR.dom.nodeList(a.document.$.anchors);
//c = 0;
//for (e = f.count(); c < e; c++) h = f.getItem(c), d[c] = {
//    name: h.getAttribute("name"),
//    id: h.getAttribute("id")
//}

for(var instanceName in CKEDITOR.instances) {
    div = $('<div>').html(CKEDITOR.instances[instanceName].getData());
    div.find('a').each(function() {
        if (!$(this).attr('href')) {
            name = $(this).attr('name');
            id = $(this).attr('id');
            if (id.length > 0 || name.length > 0) {
                d.push({name: name, id: id});                            
            }                        
        }
    });
}

После изменений нужно сбросить кеш браузера.

03 апреля 2018