Установка WYSIWYG-редактора на osCommerce

osCommerce — это один из популярных движков Интернет-магазинов. Я не буду заострять на osCommerce внимание, если Вы читаете эту статью, значит Вы уже знаете, что это такое и как использовать.

Во время администрирования osCommerce, особенно при добавлении новых товаров, их описания или новых категорий товаров очень был бы востребован WYSIWYG-редактор, которого нет. В этой статье я расскажу как установить WYSIWYG-редактора на osCommerce.

Простая инструкция по установке CKEditor

Шаг 1. Скачивание редактора

Загрузите последний CKEditor с https://ckeditor.com/ckeditor-4/download/.

Для загрузки доступны три версии:

  • базовая
  • стандартная
  • полная

Выберите любую (я предпочитаю полную), которая наиболее подходит под ваши нужды и распакуйте в каталог catalog/admin/ext/ckeditor. Весьма вероятно, что вы поменяли дефолтный каталог, в котором установлена админка. Если это так, то нужно скопировать в catalog/каталог_админки/ext/ckeditor

Хитрость: Вы также можете посетить разделы плагинов и скинов и добавить различные бесплатные плагины в ваш редактор перед загрузкой.

Шаг 2. Редактируем /catalog/admin/includes/functions/html_output.php

Найдите в этом файле " function tep_draw_textarea_field "

Скопируйте всю функцию и прямо под оригинальной вставьте скопированный фрагмент этой функции так, чтобы получилось 2 идентичные функции одна после другой.

Теперь нам нужно изменить имя одной из функций — любой, это может быть первая или вторая tep_draw_textarea_field function.

Измените одну, чтобы её название стало:

" function tep_draw_textarea_field_ckeditor "

затем найдите эту линию внутри этой самой функции:

$field = '<textarea name="' . tep_output_string($name) . '" cols="' . tep_output_string($width) . '" rows="' . tep_output_string($height) . '"';

и поменяйте её на:

$field = '<textarea name="' . tep_output_string($name) . '" id="' . tep_output_string($name) . '" cols="' . tep_output_string($width) . '" rows="' . tep_output_string($height) . '"';

Сохраните ваш файл.

Шаг 3. Редактирование /catalog/admin/includes/template_top.php

Добавьте следующее сразу перед закрывающимся тегом </head> в ваш админский файл template_top.php.

<?php

//это опциональный код — если вы хотите возможность включать и отключать редактор в админке, добавьте это — он не является необходимым и не нужен для работы редактора.





if (!defined('USE_CKEDITOR_ADMIN_TEXTAREA')) {

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_id, configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added, set_function) values ('', 'Use CKEditor', 'USE_CKEDITOR_ADMIN_TEXTAREA','true','Use CKEditor for WYSIWYG editing of textarea fields in admin',1,99,now(),'tep_cfg_select_option(array('true', 'false'),' )");

define ('USE_CKEDITOR_ADMIN_TEXTAREA','true');

}

if (USE_CKEDITOR_ADMIN_TEXTAREA == "true") {

?>





<script type="text/javascript" src="<?php echo tep_href_link('ext/ckeditor/ckeditor.js'); ?>"></script>

<!-- If you would rather use ckeditor.js file from a CDN uncomment the line below and comment the line above - if the version number has changed remember to change the version number - you'll actually find the line of code on the ck editor web site for your version -->

<!-- <script src="//cdn.ckeditor.com/4.4.4/full/ckeditor.js"></script> -->

<script type="text/javascript" src="<?php echo tep_href_link('ext/ckeditor/adapters/jquery.js'); ?>"></script>

<script type="text/javascript">

$(function() {

var $editors = $('textarea');

if ($editors.length) {

$editors.each(function() {

var editorID = $(this).attr("id");

var instance = CKEDITOR.instances[editorID];

if (instance) { CKEDITOR.remove(instance); }

CKEDITOR.replace(editorID);

});

}

});

</script>



<?php

// закрывающаяся здесь скобка является частью вышеприведённого блока php

} //если вы решите удалить блок php кода выше, тогда этот кусочек также закомментируйте или удалите

?>

 

Шаг 4. Решите, в каких полях текстовой области вы хотите включить редактор

Наиболее вероятно, вам захочется иметь редактор в вашей странице categories.php, для того, чтобы вы могли редактировать описания продуктов, товаров.

Другое поле текстовой области, которую, возможно, вы также захотите включить, это поле текстовой области в newsletter.php и поле текстовой области в mail.php. Вы можете даже добавить дополнительные модули/аддоны, которые содержать поля текстовых областей и на которых вам бы хотелось иметь CKEditor. В некоторых случаях нет необходимости для установки CKEditor на определённые поля текстовых областей, например, на комментарии, если у вас есть контрибуция тегов заголовков.

Последний шаг в добавлении CKEditor на страницы, это изменение имени "tep_draw_textarea_field" на свежесозданную функцию "tep_draw_textarea_field_ckeditor" в файле html_output.php.

Сделайте это для всех полей текстовой области, где вы хотите включить редактор.

В файле categories.php найдите:

<td class="main"><?php echo tep_draw_textarea_field('products_description[' . $languages[$i]['id'] . ']', 'soft', '70', '15', (empty($pInfo->products_id) ? '' : tep_get_products_description($pInfo->products_id, $languages[$i]['id']))); ?></td>

и замените на:

<td class="main"><?php echo tep_draw_textarea_field_ckeditor('products_description[' . $languages[$i]['id'] . ']', 'soft', '70', '15', (empty($pInfo->products_id) ? '' : tep_get_products_description($pInfo->products_id, $languages[$i]['id']))); ?></td>

всё, что вы на самом деле делаете — это добавляете ' _ckeditor ' к концу ' tep_draw_textarea_field ' и ваш CKEditor затем появится только на этих полях текстовых областей.

Лично на мой взгляд это решение лучше, чем необходимость редактирования файла jQuery скрипта каждый раз, когда вы добавляете поле textarea, на котором вы НЕ хотите иметь редактор.

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

1


Кстати, ведь популярный сайт создаёт значительную нагрузку на хостинг. Важно, чтобы ваш хостер обеспечивал устойчивую работу в любых ситуациях, чтобы сайт не «лежал» от отключений электричества в дата центре, частом смене программного обеспечения, частых DdoS-атаках или просто от нагрузок из-за наплыва посетителей и т.д. Ведь пользователям это быстро надоест и они уйдут в другие магазины. Учитывая огромную конкурентность этого рынка, нужно очень тщательно относиться к выбору хостинга: никто не хочет переплачивать, Интернет-магазин открывается не для того, чтобы вся выручка уходила на оплату сайта. Но и ненадёжный хостер нам не нужен, служба поддержки которого на каждую жалобу будет советовать купить тариф подороже. Я перебрал довольно много решений и нашёл очень хороший вариант — 100 рублей в месяц! За эти деньги даётся профессиональный хостинг, с отличным аптаймом, с бесплатным доменом второго уровня в подарок (!), с 2 гигабайтами места на SSD диске, с неограниченным количеством баз данных, с возможностью подключать неограниченное количество новых доменов (платить придётся только за каждый новый домен — 139 рублей). Вообще, всего хорошего так много, что проще всего посмотреть это здесь.

Посмотрите, я уверен, это предложение заинтересует любого администратора сайта (хоть начинающего, хоть продвинутого), поскольку это хостинг с настоящим качеством от профессионалов. Кстати, у меня есть промокод, дающий бесплатный месяц (в дополнении к 2 неделям, которые и так даются всем), если хотите, можете воспользоваться.

Поделитесь этой статьёй с друзьями, если хотите выхода новых статей:

Оставить ответ

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