当我为 prestashop 1.6.1.5 使用自定义 html 时,它会在保存后删除它
When I use custom html for prestashop 1.6.1.5 it deletes it after saving
请帮助我了解问题的本质。我使用 Prestashop 1.6.1.5.
我为我的 prestashop 页面使用自定义 HTML 标签,它非常适合其中的博客 (Smart Blog v2.0.2) 模块。
但是,当我在主菜单(设置 -> 页面)中对页面使用相同的内容时,它会删除我所有的 HTML 添加:(
我已经在 classes/Validate.php 中更改了 isCleanHtml 方法(到现在总是 returns "True"。但是,这对我没有帮助:(
例如:
我想用
<div style="display: inline-block;">
<div style="display: inline-block; vertical-align: top; float: left; margin-right: 15px;">
<div style="display: inline-block; text-align: center;"><a href="link11"><img title="Title" src="link12" alt="Text alt" width="100" height="100" /></a></div>
<div style="display: inline-block; text-align: center;"><a href="link21"><img title="Title" src="link22" alt="Text alt" width="100" height="100" /></a>
</div> </div>
<p>Text</p>
</div>
保存页面后得到的结果:
<div>
<div>
<div><a href="link11"><img title="Title" src="link12" alt="Text alt" width="100" height="100" /></a></div>
<div><a href="link21"><img title="Title" src="link22" alt="Text alt" width="100" height="100" /></a></div>
</div>
<p>Text</p>
</div>
谢谢!
返回 true 的 isCleanHtml 函数只会阻止 Validate 返回错误。相反,您应该从 CMS 对象的内容中删除验证字段。因为 formatFields 中的 ObjectModel 有:
$purify = (isset($data['validate']) && Tools::strtolower($data['validate']) == 'iscleanhtml') ? true : false;
// Format field value
$fields[$field] = ObjectModel::formatValue($value, $data['type'], false, $purify, !empty($data['allow_null']));
所以净化只依赖于设置了验证的字段。 formatValue 有:
...
case self::TYPE_HTML:
if ($purify) {
$value = Tools::purifyHTML($value);
}
...
所以它仍然会净化 HTML,因为你的字段仍然有 'validate' => 'isCleanHtml'
。解决方案应该很简单:从 类 文件夹中的 CMS 对象中删除 'content' 中的这一部分。
请帮助我了解问题的本质。我使用 Prestashop 1.6.1.5.
我为我的 prestashop 页面使用自定义 HTML 标签,它非常适合其中的博客 (Smart Blog v2.0.2) 模块。 但是,当我在主菜单(设置 -> 页面)中对页面使用相同的内容时,它会删除我所有的 HTML 添加:(
我已经在 classes/Validate.php 中更改了 isCleanHtml 方法(到现在总是 returns "True"。但是,这对我没有帮助:(
例如: 我想用
<div style="display: inline-block;">
<div style="display: inline-block; vertical-align: top; float: left; margin-right: 15px;">
<div style="display: inline-block; text-align: center;"><a href="link11"><img title="Title" src="link12" alt="Text alt" width="100" height="100" /></a></div>
<div style="display: inline-block; text-align: center;"><a href="link21"><img title="Title" src="link22" alt="Text alt" width="100" height="100" /></a>
</div> </div>
<p>Text</p>
</div>
保存页面后得到的结果:
<div>
<div>
<div><a href="link11"><img title="Title" src="link12" alt="Text alt" width="100" height="100" /></a></div>
<div><a href="link21"><img title="Title" src="link22" alt="Text alt" width="100" height="100" /></a></div>
</div>
<p>Text</p>
</div>
谢谢!
返回 true 的 isCleanHtml 函数只会阻止 Validate 返回错误。相反,您应该从 CMS 对象的内容中删除验证字段。因为 formatFields 中的 ObjectModel 有:
$purify = (isset($data['validate']) && Tools::strtolower($data['validate']) == 'iscleanhtml') ? true : false;
// Format field value
$fields[$field] = ObjectModel::formatValue($value, $data['type'], false, $purify, !empty($data['allow_null']));
所以净化只依赖于设置了验证的字段。 formatValue 有:
...
case self::TYPE_HTML:
if ($purify) {
$value = Tools::purifyHTML($value);
}
...
所以它仍然会净化 HTML,因为你的字段仍然有 'validate' => 'isCleanHtml'
。解决方案应该很简单:从 类 文件夹中的 CMS 对象中删除 'content' 中的这一部分。