Chcete u popisu produktu či v CMS přidat iframe či script? Bohužel prestashop vyskočí s chybou a do databáze se nic nezapíše. Je to standardní opatření Prestashopu 1.5 a novější verze z důvodu bezpečnosti. Například náš modul Heureka hodnocení obchodu zákazníky používá script .js. Po instalaci ovšem prestahop napíše chybu a potřebný zápis se neprovede do databáze. Řešením je následující úprava.
Soubor classes/Validate.php ve verzi 1.5.5 a vyšší je potřeba zakomentovat následující řádky
// if (preg_match('/<[\s]*script/ims', $html) || preg_match('/('.$events.')[\s]*=/ims', $html) || preg_match('/.*script\:/ims', $html)) // return false;
Ve verzi 1.5.5 a starší ve funkci isCleanHtml($html) zakomentovat
/* $events = 'onmousedown|onmousemove|onmmouseup|onmouseover|onmouseout|onload|onunload|onfocus|onblur|onchange'; $events .= '|onsubmit|ondblclick|onclick|onkeydown|onkeyup|onkeypress|onmouseenter|onmouseleave|onerror|onselect|onreset|onabort|ondragdrop|onresize|onactivate|onafterprint|onmoveend'; $events .= '|onafterupdate|onbeforeactivate|onbeforecopy|onbeforecut|onbeforedeactivate|onbeforeeditfocus|onbeforepaste|onbeforeprint|onbeforeunload|onbeforeupdate|onmove'; $events .= '|onbounce|oncellchange|oncontextmenu|oncontrolselect|oncopy|oncut|ondataavailable|ondatasetchanged|ondatasetcomplete|ondeactivate|ondrag|ondragend|ondragenter|onmousewheel'; $events .= '|ondragleave|ondragover|ondragstart|ondrop|onerrorupdate|onfilterchange|onfinish|onfocusin|onfocusout|onhashchange|onhelp|oninput|onlosecapture|onmessage|onmouseup|onmovestart'; $events .= '|onoffline|ononline|onpaste|onpropertychange|onreadystatechange|onresizeend|onresizestart|onrowenter|onrowexit|onrowsdelete|onrowsinserted|onscroll|onsearch|onselectionchange'; $events .= '|onselectstart|onstart|onstop'; return (!preg_match('/<[ \t\n]*script/ims', $html) && !preg_match('/('.$events.')[ \t\n]*=/ims', $html) && !preg_match('/.*script\:/ims', $html)); */
Od verze 1.5.6 je v administraci možnost povolení/zakázání nastavení použití iframe,..
Je potřeba nastavit v administraci na ANO + upravit zdrojový kód
public static function isCleanHtml($html, $allow_iframe = false)
nahradit za
public static function isCleanHtml($html, $allow_iframe = false){ return true; }
Soubor classes/Validate.php nahrajte do override/classes/Validate.php
Modifikace funkcí TinyMCE (přidání iframe, script,…) je potřeba upravit soubor ADMINsložka/themes/default/template/controllers/product/helpers/form.tpl
tinySetup({ editor_selector :"autoload_rte", setup : function(ed) {
nahradit za
tinySetup({ editor_selector :"autoload_rte", theme_advanced_buttons1 : "save,newdocument,bold,italic,underline,strikethrough,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect, fontselect,fontsizeselect", theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,search,replace,bullist,numlist,outdent,indent,blockquote,undo,redo,link,unlink,anchor,image,cleanup,help,codemagic,insertdate,inserttime,preview,forecolor,backcolor", theme_advanced_buttons3 : "code,tablecontrols,hr,removeformat,visualaid,sub,sup,charmap,emotions,iespell,media,advhr,print,ltr,rtl,fullscreen", theme_advanced_buttons4 : "styleprops,cite,abbr,acronym,del,ins,attribs,visualchars,nonbreaking,template,pagebreak,restoredraft,visualblocks", theme_advanced_toolbar_location : "top", theme_advanced_toolbar_align : "left", theme_advanced_statusbar_location : "bottom", theme_advanced_resizing : false, extended_valid_elements: 'pre[*],script[*],style[*]', valid_children: "+body[style|script],pre[script|div|p|br|span|img|style|h1|h2|h3|h4|h5],*[*]", valid_elements : '*[*]', force_p_newlines : false, cleanup: false, forced_root_block : false, force_br_newlines : true, setup: function(ed) {