避免使用 TinyMce 剥离特定属性
Avoid strip specific attributes with TinyMce
我要补充以下内容
<label for="tab1">Product Name</label>
在 Prestashop 的长产品描述中,但当我保存产品时,"for" 属性从 HTML 代码中删除。
我做了一些研究,发现编辑器是 TinyMCE,所以我尝试通过添加来更改配置:
extended_valid_elements : "+@[class|name|id|for]",
在 TinyMCE 初始化脚本中,但结果是一样的。我确定我没有使用旧脚本的缓存版本,因为我禁用了 Chrome 缓存并检查了 javascript 代码是否正确。
你有什么想法吗?
这是完整的配置脚本:
default_config = {
selector: ".rte" ,
plugins : "colorpicker link image paste pagebreak table contextmenu filemanager table code media autoresize textcolor anchor",
browser_spellcheck : true,
toolbar1 : "code,|,bold,italic,underline,strikethrough,|,alignleft,aligncenter,alignright,alignfull,formatselect,|,blockquote,colorpicker,pasteword,|,bullist,numlist,|,outdent,indent,|,link,unlink,|,anchor,|,media,image",
toolbar2: "",
external_filemanager_path: ad+"/filemanager/",
filemanager_title: "File manager" ,
external_plugins: { "filemanager" : ad+"/filemanager/plugin.min.js"},
language: iso,
skin: "prestashop",
statusbar: false,
relative_urls : false,
convert_urls: false,
entity_encoding: "raw",
extended_valid_elements : "+@[class|name|id|for]",
valid_children : "+*[*]",
valid_elements:"*[*]",
menu: {
edit: {title: 'Edit', items: 'undo redo | cut copy paste | selectall'},
insert: {title: 'Insert', items: 'media image link | pagebreak'},
view: {title: 'View', items: 'visualaid'},
format: {title: 'Format', items: 'bold italic underline strikethrough superscript subscript | formats | removeformat'},
table: {title: 'Table', items: 'inserttable tableprops deletetable | cell row column'},
tools: {title: 'Tools', items: 'code'}
}
};
您是否尝试过向 extended_valid_elements
添加标签而不是属性?像这样:
extended_valid_elements : "label[for]"
这是 HTMLPurifier 库的错误,如果您可以从后台控制 html 禁用的内容。
Preferences -> General
设置为否 Use HTMLPurifier Library
如果您不想禁用该库,则必须在 PrestaShop/tools/htmlpurifier/
中进行编辑
也许覆盖Tools
class的purifyHTML()
方法更容易,并为标签添加'for'属性,在实例化库时添加:
$config->set('HTML.AllowedAttributes', 'label.for');
我要补充以下内容
<label for="tab1">Product Name</label>
在 Prestashop 的长产品描述中,但当我保存产品时,"for" 属性从 HTML 代码中删除。
我做了一些研究,发现编辑器是 TinyMCE,所以我尝试通过添加来更改配置:
extended_valid_elements : "+@[class|name|id|for]",
在 TinyMCE 初始化脚本中,但结果是一样的。我确定我没有使用旧脚本的缓存版本,因为我禁用了 Chrome 缓存并检查了 javascript 代码是否正确。
你有什么想法吗?
这是完整的配置脚本:
default_config = {
selector: ".rte" ,
plugins : "colorpicker link image paste pagebreak table contextmenu filemanager table code media autoresize textcolor anchor",
browser_spellcheck : true,
toolbar1 : "code,|,bold,italic,underline,strikethrough,|,alignleft,aligncenter,alignright,alignfull,formatselect,|,blockquote,colorpicker,pasteword,|,bullist,numlist,|,outdent,indent,|,link,unlink,|,anchor,|,media,image",
toolbar2: "",
external_filemanager_path: ad+"/filemanager/",
filemanager_title: "File manager" ,
external_plugins: { "filemanager" : ad+"/filemanager/plugin.min.js"},
language: iso,
skin: "prestashop",
statusbar: false,
relative_urls : false,
convert_urls: false,
entity_encoding: "raw",
extended_valid_elements : "+@[class|name|id|for]",
valid_children : "+*[*]",
valid_elements:"*[*]",
menu: {
edit: {title: 'Edit', items: 'undo redo | cut copy paste | selectall'},
insert: {title: 'Insert', items: 'media image link | pagebreak'},
view: {title: 'View', items: 'visualaid'},
format: {title: 'Format', items: 'bold italic underline strikethrough superscript subscript | formats | removeformat'},
table: {title: 'Table', items: 'inserttable tableprops deletetable | cell row column'},
tools: {title: 'Tools', items: 'code'}
}
};
您是否尝试过向 extended_valid_elements
添加标签而不是属性?像这样:
extended_valid_elements : "label[for]"
这是 HTMLPurifier 库的错误,如果您可以从后台控制 html 禁用的内容。
Preferences -> General
设置为否 Use HTMLPurifier Library
如果您不想禁用该库,则必须在 PrestaShop/tools/htmlpurifier/
也许覆盖Tools
class的purifyHTML()
方法更容易,并为标签添加'for'属性,在实例化库时添加:
$config->set('HTML.AllowedAttributes', 'label.for');