我正在尝试向“管理偏好设置”中添加一个新字段-具有tinymce的textarea字段。我已将代码添加到AdminPreferencesController.php:
$this->fields_options['contact'] = array(
'title' => $this->l('Contact'),
'icon' => 'icon-cogs',
'submit' => array('title' => $this->l('Save')),
);
$this->fields_options['contact']['fields']['PS_CONTACT_ADDITIONAL_INFO'] = array(
'type' => 'textarea',
'label' => $this->l('Short description'),
'name' => 'short_description',
'lang' => true,
'cols' => 60,
'rows' => 10,
'autoload_rte' => 'rte',
'col' => 6,
);
但是tinymce不会出现,当我保存后使用HTML标记时,它们会消失。 Presta剥离所有HTML标记。
如何在此字段上允许HTML标签并启用tinymce?
答案 0 :(得分:0)
似乎您不能仅仅以常规方式添加它。但是您可以以另一种方式实现它。
首先,使用字段类型textareaLang
代替textarea
,并向该字段添加参数'validation' => 'isCleanHtml'
$this->fields_options['contact']['fields']['PS_CONTACT_ADDITIONAL_INFO'] = array(
'type' => 'textareaLang',
'label' => $this->l('Short description'),
'name' => 'short_description',
'lang' => true,
'cols' => 60,
'rows' => 10,
'col' => 6,
'validation' => 'isCleanHtml'
);
创建自己的脚本以初始化编辑器。我创建了一个脚本tinymce.init.js
并将其放入js/admin/
文件夹
$(document).ready(function(){
ad = ''; // this is defenition of the external plugin path. I didn't fint how it can impact on script if it's empty but by default it it the path to your admin folder
iso = iso_user;
var config = {
selector: '.textarea-autosize'
};
tinySetup(config);
});
然后将tinymce脚本和您自己的脚本包含到此控制器AdminPreferencesController.php
public function setMedia()
{
$this->context->controller->addJquery();
$this->context->controller->addJS(
array(
_PS_JS_DIR_.'admin/tinymce.init.js',
_PS_JS_DIR_.'tiny_mce/tiny_mce.js',
_PS_JS_DIR_.'admin/tinymce.inc.js'
)
);
parent::setMedia();
}
它应该实现您的要求。但是不要忘记,现在您应该在多语言范围内调用配置字段。因此,将语言ID添加到Configuration::get()
,例如
Configuration::get('PS_CONTACT_ADDITIONAL_INFO, $id_lang)
每当您使用它时。
P.S。请记住,实现您目标的最佳解决方案是创建一个简单的模块来处理此问题。还有更多,推荐的方法。