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

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

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});							
			}						
		}
	});
}
JS

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

03.04.2018, обновлено 28.08.2019 636

Поделится

Темы

jQuery JS WYSIWYG

Другие публикации

Обойти ячейки таблицы можно с помощью jQuery метода each, например следующий код выводит текст из всех ячеек в консоль.
Представленный код позволяет c помощью jQuery зафиксировать шапку таблицы при прокрутке страницы. Скрипт поддерживает...
PHP функции для перевода текста, ЧПУ, ссылок и имен файлов в транслит.
Smarty это компилирующий обработчик шаблонов для PHP позволяющий отделить логику и HTML-верстку веб-приложения.
Изображения нужно сжимать для ускорения скорости загрузки сайта, но как это сделать? На многих хостингах нет...
После регистрации в системе эквайринга Сбербанка и получив доступ к тестовой среде, можно приступить к интеграции с...