HTML редактор описания категорий для Prestashop 1.4

Разместил , 31 Окт.2013 / комментариев 6

Здравствуйте уважаемые читатели моего блога. Сегодня я Вам расскажу как сделать HTML редактор описания категорий для Prestashop 1.4. Многие знают у кого есть интернет-магазин на Prestashop, что такое HTML редактор описания товара и нам никто не мешает прикрутить его к описанию категорий.

Для этого нам понадобятся сайт работающий на движке Prestashop, notepad++, доступ по ftp к сайту и немного свободного времени. Итак приступим. Заходим через Notepad++, Total Commander, кому как удобно. Можно через FileZilla скачать файл на рабочий стол и редактировать его. Мне удобней Notepad++ так как там можно сразу редактировать файл в режиме онлайн. Заходим в папку нашего сайта например это папка yoursite.ru. В ней мы ищем yoursite.ru/administrator/tabs/AdminCategories.php открываем его в редакторе и ищем строчку:

меняем её на:

и добавляем после:


';

ещё пару строк:

// TinyMCE
global $cookie;
$iso = Language::getIsoById((int)($cookie->id_lang));
$isoTinyMCE = (file_exists(_PS_ROOT_DIR_.'/js/tiny_mce/langs/'.$iso.'.js') ? $iso : 'en');
$ad = dirname($_SERVER["PHP_SELF"]);
echo '';

в итоге получаем HTML редактор описания категорий для Prestashop

HTML редактор описания категорий для Prestashop

Но рано радоваться чтобы HTML редактор описания категорий для Prestashop заработал должным образом нужно зайти в yoursite.ru/administrator/classes/Category.php и заменить функцию:

public function getTranslationsFieldsChild()
{
	parent::validateFieldsLang();
	return parent::getTranslationsFields(array('name', 'description', 'link_rewrite', 'meta_title', 'meta_keywords', 'meta_description'));
}

на

public function getTranslationsFieldsChild()
{
        parent::validateFieldsLang();

        $fieldsArray = array('name', 'link_rewrite', 'meta_title', 'meta_keywords', 'meta_description');
        $fields = array();
        $languages = Language::getLanguages();
        $defaultLanguage = Configuration::get('PS_LANG_DEFAULT');
        foreach ($languages as $language)
        {
            $fields[$language['id_lang']]['id_lang'] = $language['id_lang'];
            $fields[$language['id_lang']][$this->identifier] = intval($this->id);
            $fields[$language['id_lang']]['description'] = (isset($this->description[$language['id_lang']])) ? pSQL($this->description[$language['id_lang']], true) : '';
            foreach ($fieldsArray as $field)
            {
                if (!Validate::isTableOrIdentifier($field))
                    die(Tools::displayError());

                /* Check fields validity */
                if (isset($this->{$field}[$language['id_lang']]) AND !empty($this->{$field}[$language['id_lang']]))
                    $fields[$language['id_lang']][$field] = pSQL($this->{$field}[$language['id_lang']]);
                elseif (in_array($field, $this->fieldsRequiredLang))
                    $fields[$language['id_lang']][$field] = pSQL($this->{$field}[$defaultLanguage]);
                else
                    $fields[$language['id_lang']][$field] = '';
            }
        }
        return $fields;

    }

Далее нужно убрать пару изъянов таких как отображение тегов в title категории:

HTML редактор описания категорий для Prestashop 1.4

делается всё очень просто ищем yoursite.ru/modules/blockcategories/category-tree-branch.tpl
находим строчку:

title="{$node.desc|escape:html:'UTF-8'}">{$node.name|escape:html:'UTF-8'}

и меняем на

title="{$node.desc|strip_tags|truncate:130:'...'|escape:'html':'UTF-8'}">{$node.name|strip_tags|truncate:130:'...'|escape:'html':'UTF-8'}

и ещё чтобы в админке не плыла ячейка с описанием категории

HTML редактор описания категорий для Prestashop 1.4

нужно в yoursite.ru/administrator/tabs/AdminCategories.php найти строчку:

'description' => array('title' => $this->l('Description'), 'width' => 500, 'maxlength' => 90, 'orderby' => false),

и заменить на

'description' => array('title' => $this->l('Description'), 'width' => 500, 'maxlength' => 90, 'orderby' => false, 'html' => true),

и в yoursite.ru/classes\AdminTab.php найти:

elseif (isset($tr[$key]))
{
	$echo = ($key == 'price' ? round($tr[$key], 2) : isset($params['maxlength']) ? Tools::substr($tr[$key], 0, $params['maxlength']).'...' : $tr[$key]);
	echo isset($params['callback']) ? call_user_func_array(array($this->className, $params['callback']), array($echo, $tr)) : $echo;
}

и заменить на

elseif (isset($tr[$key]))
{
	if(isset($params['html']))
	$tr[$key] = strip_tags($tr[$key]);
	$echo = ($key == 'price' ? round($tr[$key], 2) : isset($params['maxlength']) ? Tools::substr($tr[$key], 0, $params['maxlength']).'...' : $tr[$key]);
	echo isset($params['callback']) ? call_user_func_array(array($this->className, $params['callback']), array($echo, $tr)) : $echo;
}

Для того чтобы html редактор категорий появился в версии 1.5.4.1 в www\controllers\admin\AdminCategoriesController.php найдите:

'name' => 'description',

и после добавить

'autoload_rte' => true,

ну вот и всё HTML редактор описания категорий готов к использованию. Если будет вопросы пишите в коментариях

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

  • Всё сделал как описано но от изъянов таких как отображение тегов в title категории не избавился
    в yoursite.ru/modules/blockcategories/category-tree-branch.tpl

    title="{$node.desc|escape:html:'UTF-8'}">{$node.name|escape:html:'UTF-8'}

    на

    title="{$node.desc|strip_tags|truncate:130:'...'|escape:'html':'UTF-8'}">{$node.name|strip_tags|truncate:130:'...'|escape:'html':'UTF-8'}

    изменил бестолку, теги отображаются

    • Странно только что проверил всё работает. У Вас стандартный шаблон? Бывает такое что ещё файлы модуля лежат в папке с темой и править надо там

  • а для какой версии престы этот солюшен?

    • Для версии Prestashop 1.4x.x в 1.5.6 и 1.6 уже встроен

  • Доброго времени суток!
    Подскажите как выше описанное Вами осуществить в PS-1.5.4.1 — в ней такого еще не интегрировано, но и такого как: yoursite.ru/administrator/tabs/AdminCategories.php
    такого файла я тоже ненахожу.
    Заранее спасибо!

    • И Вам доброго времени суток. Для того чтобы html редактор категорий появился в версии 1.5.4.1 в www\controllers\admin\AdminCategoriesController.php найдите:

      'name' => 'description',

      416 строчка, и после вставте

      'autoload_rte' => true,

      и будет вам счастье

Оставить комментарий