2017-06-11 1 views
1

S'il vous plaît, aidez-moi à comprendre la nature du problème. J'utilise Prestashop 1.6.1.5. J'utilise des balises HTML personnalisées pour mes pages prestashop et cela fonctionne très bien pour le module Blog (Smart Blog v2.0.2). Cependant, quand je l'utilise pour les pages du menu principal (settings -> pages), il supprime tous mes ajouts HTML :(Lorsque j'utilise html personnalisé pour prestashop 1.6.1.5 il le supprime après enregistrement

J'ai déjà changé la méthode isCleanHtml dans classes/Validate.php (ça revient toujours) . "True" maintenant Cependant, cela me ont pas aidé :(

Ex .: Je veux utiliser

<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> 

ce que je après avoir sauvé la page:

<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> 

Merci!

Répondre

0

La fonction isCleanHtml renvoyant true empêchera uniquement le Validate de renvoyer une erreur. Au lieu de cela, vous devez supprimer le champ de validation du contenu de l'objet CMS. Parce que ObjectModel en formatFields a:

$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'])); 

Ainsi, le purifient ne dépend que du champ ayant mis la validation. Et FormatValue a:

... 
case self::TYPE_HTML: 
     if ($purify) { 
      $value = Tools::purifyHTML($value); 
     } 
... 

Il sera toujours purifyHTML, parce que votre champ a toujours le 'validate' => 'isCleanHtml'. La solution devrait être simple: supprimer cette partie dans 'content' de l'objet CMS dans le dossier classes.

+0

Parfait, ça marche! Merci beaucoup! –