Avisos
Vaciar todo

Añadir JavaScript y JQuery a CMS Prestashop  

 
Rober
 Rober
Reputable Member

Buenos días,

Me gustaría añadir a uno de mis CMS en prestashop digo JQuery, JavaScript y CSS.
Si edito desde la página de creación de CMS y meto el HTML, lo único que me hace es ponerme el Body.
Me quita los enlaces a los archivos jquery, javascript y al estilo.

Si alguien me puede decir algo se lo agradezco...

Saludos.

URL del sitio: Contenido solo visible a usuarios registrados

Citar
Respondido : 10/03/2016 2:03 pm
Pablo Velasco
 Pablo Velasco
Illustrious Member

Hola,

Entiendo que el código que estás tratando de añadir lo estás poniendo dentro del contenido del artículo del CMS.

Esto ocurre porque PrestaShop, antes de guardar los cambios añadidos en el editor, aplica una verificación del código, de forma que comenta o elimina el código que no le gusta, entre ellos el de los scripts.

Para solucionar esto, es necesario aplicar un cambio en uno de los archivos de PrestaShop. En concreto, tendrás que editar el archivo classes/Validate.php. Previa copia de seguridad del mismo, edítalo y cambia el código:

public static function isCleanHtml($html, $allow_iframe = false)
{
    $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';

    if (preg_match('/<[s]*script/ims', $html) || preg_match('/('.$events.')[s]*=/ims', $html) || preg_match('/.*script:/ims', $html)) {
        return false;
    }

    if (!$allow_iframe && preg_match('/<[s]*(i?frame|form|input|embed|object)/ims', $html)) {
        return false;
    }

    return true;
}

por este otro:

public static function isCleanHtml($html, $allow_iframe = false) { return true; }

Así no se pasará esta validación y te dejará guardar el código javascript, css , etc.

ResponderCitar
Respondido : 10/03/2016 3:19 pm

wpdoctor-revisa-la-salud-de-tu-wordpress

Rober
 Rober
Reputable Member

Disculpa pero he probado lo que dices y se me quita desde hasta , con lo cual no me coge el jquery ni nada

ResponderCitar
Respondido : 10/03/2016 4:52 pm
Jhon
 Jhon
Soporte CMS Webempresa Moderator

Hola

Creo que lo estas planteando mal, primero que todo tu sitio sólo debe tener un doctype y sólo debe tener un body, no tiene lógica que pongas código como el que comentas dentro de un artículo CMS

Tal vez lo que debas evaluar es crear un archivo .html con referencias a tus scripts y este archivo llamarlo desde tu sitio web, incluso puedes inscrustrar este archivo a través de un iframe en la opción que estas usando ahora, pero no es posible poner el código del archivo directamente (con etiquetas doctype y body) en un artículo CMS.

Saludos.

ResponderCitar
Respondido : 10/03/2016 5:39 pm