当我为 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' 中的这一部分。