neon
26.Ноябрь.2016 00:00:00
1
Добрый день!
Решил добавить в админку дополнительное текстовое поле для категории. Само поле добавил, данные в базу пишутся, на фронтенде выводятся.
Но прикрутить WYSIWYG редактор чтоб он работал как положено никак не получается.
Добавление классов к текстэрии ничего не дало, поэтому пришлось вызывать инициализацию редактора самостоятельно прямо под кодом самого поля.
{$category_data.mytext}
(function(_, $) {
$.ceEvent('on', 'ce.commoninit', function(context) {
var elm = context.find('#elm_mytext');
elm.ceEditor();
});
}(Tygh, Tygh.$));
Редактор включается и подхватывает текст, но при сохранении изменения не попадают в бд. Насколько я понимаю нужно как-то вызывать ceEditor('destroy') редактора, но где и как это правильно делать непонятно.
Класса cm-wysiwyg должно быть достаточно для появления WYSIWYG. Смотрите в консоли, может яваскриптовые ошибки какие-то мешают
neon
28.Ноябрь.2016 00:00:00
3
Никаких ошибок в консоли нету. Доп поле подключается на вкладку Модули.
Файл находится тут:
design/backend/templates/addons/my_addon/hooks/categories/detailed_content.post.tpl
Попробуйте такой код
{__("mytext")}:
{$category_data.mytext}
neon
28.Ноябрь.2016 00:00:00
5
У меня так и написано - не работает.
Исследуя Core.js появилась догадка:
Инициализация редактора вызывается в методе processForms
processForms: function(elm)
{
var frms = $('form:not(.cm-processed-form)', elm);
frms.addClass('cm-processed-form');
frms.ceFormValidator();
if (_.area == 'A') {
frms.filter('[method=post]:not(.cm-disable-check-changes)').addClass('cm-check-changes');
var elms = (frms.length == 0) ? elm : frms;
}
$('textarea.cm-wysiwyg', elms).appear(function() {
$(this).ceEditor();
});
},
В то время как форма на странице категории есть только внутри первой вкладки, а все остальные вкладки вне формы.
Я попробовал обернуть моём поле в форму, но форма удаляется при рендеринге страницы...
neon
28.Ноябрь.2016 00:00:00
6
Я решил проблему. Она состояла в неправильной html вёрстке файла \design\backend\templates\views\categories\update.tpl
{__("usergroups")}:
{include file="common/select_usergroups.tpl" id="ug_id" name="category_data[usergroup_ids]" usergroups=["type"=>"C", "status"=>["A", "H"]]|fn_get_usergroups:$smarty.const.DESCR_SL usergroup_ids=$category_data.usergroup_ids input_extra="" list_mode=false}
{__("to_all_subcats")}
[[
]] - НУЖНО ДОБАВИТЬ
{/if}
<div class="control-group">
<label class="control-label" for="elm_category_position">{__("position")}:</label>
<div class="controls">
<input type="text" name="category_data[position]" id="elm_category_position" size="10" value="{$category_data.position}" class="input-text-short" />
</div>
</div>
<div class="control-group">
<label class="control-label" for="elm_category_creation_date">{__("creation_date")}:</label>
<div class="controls">
{include file="common/calendar.tpl" date_id="elm_category_creation_date" date_name="category_data[timestamp]" date_val=$category_data.timestamp|default:$smarty.const.TIME start_year=$settings.Company.company_start_year}
</div>
</div>
{include file="views/localizations/components/select.tpl" data_from=$category_data.localization data_name="category_data[localization]"}
<-- НУЖНО УДАЛИТЬ
Странно, у меня без каких-либо доработок все работает
http://prntscr.com/dd38xn
Может быть версия другая (тестировалось на 4.3.6)