Подключение ckeditor к opencart 2

08.05.2015 05:09

В угоду модному bootstrap разработчики опенкарта сменили текстовый редактор. Теперь во второй версии опенкарта используется summernote, который несравним по возможностям с ckeditor. Для того чтобы подключить ckeditor к opencart 2 делаем следующее:

Скачиваем ckeditor и распаковываем его в /admin/view/javascript/

Отключаем summernote, заходим в /admin/view/template/common/header.tpl и удаляем строчки:

<link href="view/javascript/summernote/summernote.css" rel="stylesheet" />
<script type="text/javascript" src="view/javascript/summernote/summernote.js"></script>

Тут же подключаем ckeditor, добавляем:

<script type="text/javascript" src="view/javascript/ckeditor/ckeditor.js"></script>

Затем заходим в /admin/view/template/catalog/product_form.tpl, находим строчку:

$('#input-description<?php echo $language['language_id']; ?>').summernote({height: 300});

И меняем её на:

CKEDITOR.replace( 'input-description<?php echo $language['language_id']; ?>' );

Далее нам нужно подключить файлменеджер, иначе мы не сможем добавлять изображения к тексту. Скачиваем kcfinder и распаковываем его в корень сайта в папку /kcfinder.

Открываем конфиг /kcfinder/conf/config.php, в секции

// GENERAL SETTINGS

    'disabled' => true,
    'uploadURL' => "upload",
    'uploadDir' => "",
    'theme' => "default",

Меняем на

// GENERAL SETTINGS

    'disabled' => false,
    'uploadURL' => "/image/catalog",
    'uploadDir' => "../image/catalog",
    'theme' => "default",

После этого пробуем открыть страницу http://Ваш-сайт/kcfinder/. Если всё сделано правильно, должен открыться менеджер файлов.

Теперь нам нужно закрыть доступ к менеджеру файлов неавторизованным пользователям. В самом верху конфига добавляем:

session_start();
if(!isset($_SESSION['user_id']))die('');
if($_SESSION['user_id']!=1)die('');

Если Вы работаете не от админа, созданного при установке opencart, то в строчке

if($_SESSION['user_id']!=1)die('');

вместо "1" нужно подставить Ваш id пользователя. Более красивую проверку прав отложим на будущее. Далее нужно научить ckeditor пользоваться менеджером файлов. Открываем конфиг: /admin/view/javascript/ckeditor/config.js

Дописываем функцию:

CKEDITOR.editorConfig = function( config ) {
	// Define changes to default configuration here. For example:
	// config.language = 'fr';
	// config.uiColor = '#AADC6E';
   config.filebrowserBrowseUrl = '/kcfinder/browse.php?opener=ckeditor&type=files';
   config.filebrowserImageBrowseUrl = '/kcfinder/browse.php?opener=ckeditor&type=images';
   config.filebrowserFlashBrowseUrl = '/kcfinder/browse.php?opener=ckeditor&type=flash';
   config.filebrowserUploadUrl = '/kcfinder/upload.php?opener=ckeditor&type=files';
   config.filebrowserImageUploadUrl = '/kcfinder/upload.php?opener=ckeditor&type=images';
   config.filebrowserFlashUploadUrl = '/kcfinder/upload.php?opener=ckeditor&type=flash';
};

Проверяем работоспособность: заходим в редактирование товара и пробуем добавить изображение. Если всё сделали правильно, в меню выбора изображения появится кнопка "Выбор на сервере", по клику на которую откроется менеджер файлов. В случае если при загрузке файла появляется ошибка "Unnown error", тогда в файле: /kcfinder/core/clas/browser.php в функции protected function postDir($existent=true) нужно закомментировать или удалить 2 строчки:

        if (!$this->checkFilePath($dir))
            $this->errorMsg("Unknown error.-");

Теперь осталось подключить эдитор к остальным страницам. Заходим в каждый шаблон и меняем строчку:

$('#input-description<?php echo $language['language_id']; ?>').summernote({
	height: 300
});

На

CKEDITOR.replace( 'input-description<?php echo $language['language_id']; ?>' );


Вывод текста на определённой странице wordpress

Стандартный функционал wordpress не позволяет вывести текст в сайдбаре только на одной конкретной странице.

Кнопки социальных сетей для wordpress

На сегодняшний день существует множество плагинов, позволяющих установить кнопки социальных сетей на wordpress. Но не все из них одиноково полезны.


(17) Комментариев

Алина - 29.11.2015 17:34:44
- 0    + 0
Здравствуйте. Помогите, пожалуйста с ошибкой, после нажатия на кнопку Выбор на сервере появляется окно с сообщением: session_start(); if(!isset($_SESSION['user_id']))die(''); if($_SESSION['user_id']!=1)die('');
Warning: Cannot modify header information - headers already sent by (output started at C:OpenServerdomains
ew-sitekcfinderconfconfig.php:4) in C:OpenServerdomains
ew-sitekcfindercoreclassrowser.php on line 112

Warning: Cannot modify header information - headers already sent by (output started at C:OpenServerdomains
ew-sitekcfinderconfconfig.php:4) in C:OpenServerdomains
ew-sitekcfindercoreclassrowser.php on line 113
ЗагрузитьОбновитьУстановкиРазвернутьО скрипте
Илья - 30.11.2015 06:54:32
- 0    + 0
Если перевести на русский, это значит: "Редирект не может быть выполнен, так как хэдер уже был послан в файле C:OpenServerdomains
ew-sitekcfinderconfconfig.php на строке 4." Этот файл послал на вывод какую-то информацию. Какую не знаю, ищите. В норме конфиг ничего не посылает, что-то Вы сделали неправильно.
Roman - 10.12.2015 12:28:35
- 0    + 0
Добрый день!
После внесения всех правок ckeditor не отображается, ошибок не выдает.
Версия OpenCart 2.0.3.1
Илья - 10.12.2015 12:49:56
- 0    + 0
Если все правки выполнены точно по инструкции и на чистый опенкарт, то такой ситуации просто не может быть. В конкретно Вашем случае я не знаю что произошло, смотрите внимательно код, откройте в конце концов отладчик в браузере и посмотрите что он говорит.
Roman - 10.12.2015 13:15:15
- 0    + 0
Сайт с темой Journal 2.5.4
Андрей - 04.03.2016 00:53:07
- 0    + 0
"Теперь осталось подключить эдитор к остальным страницам. Заходим в каждый шаблон и меняем строчку..."
Можно путь к шаблонам написать?
maxvik - 17.03.2016 09:49:40
- 0    + 0
я честно говоря не увидел что это только для чистого опенкарта, у меня русская сборка 2101, сделал все как написано до пункта "После этого пробуем открыть страницу http://Ваш-сайт/kcfinder/. Если всё сделано правильно, должен открыться менеджер файлов."
появляется ошибка 404. в админке редактор не изменился ни в товарах ни в статьях
Тарас - 28.03.2016 17:59:33
- 0    + 0
Добрый день, прошу помощи.

Кнопка выбор на сервере так и не появляется.( Вроде все по инструкции...

Возможно
config.filebrowserBrowseUrl = '/kcfinder/browse.php?opener=ckeditor&type=files';
config.filebrowserImageBrowseUrl = '/kcfinder/browse.php?opener=ckeditor&type=images';


В коде может изменения произошли по подмене. Куда капнуть(?
Андрей - 16.06.2016 10:20:01
- 0    + 0
Модификаторы обновляли?
Андрей - 16.06.2016 10:21:23
- 0    + 0
У меня все работает, но в файловом менеджере не отображаются файлы, чувствую что проблема в 'disabled' => false,
'uploadURL' => "/image/catalog/",
'uploadDir' => "../image/catalog/",
'theme' => "default",
но не могу понять в чем именно
Deep - 23.06.2016 23:49:05
- 0    + 0
что менять тут?

<textarea name="product_description[][description]" placeholder="" id="input-description" class="form-control summernote">
Илья - 24.06.2016 00:51:04
- 0    + 0
Именно тут - ничего.
Владимир - 22.07.2016 19:37:03
- 0    + 0
Автор, ёп.... почему на последнем этапе нет уточнений?
"Теперь осталось подключить эдитор к остальным страницам. Заходим в каждый шаблон и меняем строчку:" - где именно? столько времени потрачено впустую, ничего не появилось...
Yura - 02.08.2016 21:25:56
- 0    + 0
Находим строки в файлах где используется редактор:
пути:
admin/view/template/catalog/product_form.tpl
admin/view/template/catalog/category_form.tpl
admin/view/template/catalog/information_form.tpl
admin/view/template/catalog/information_form.tpl
admin/view/template/sale/contact.tpl
admin/view/template/module/welcome.tpl
admin/view/template/setting/store.tpl
Марианна - 05.08.2016 10:27:40
- 0    + 0
у меня вообще открывается белая страница без ошибки при выборе картинки на сервере. что делать? спасибо.
Марианна - 05.08.2016 10:29:27
- 0    + 0
не открывается из-за этих строк

session_start();
if(!isset($_SESSION['user_id']))die('');
if($_SESSION['user_id']!=1)die('');

нужно другое решение для скрытия папки с глаз долой
Илья - 06.08.2016 01:13:44
- 0    + 0
Это самое простое решение. Нужно разобраться почему сессии не работают.