Использование атрибута HTML в исходном коде CMS

Использование атрибута HTML в исходном коде CMS

28.02.2018 10:31:16 Просмотров 25 Источник

Я использую Prestashop для веб-сайта, где страницы контента строятся с использованием:

Prestashop > Preferences > CMS > Source-Code.

Поэтому для каждой страницы CMS я использую исходный код, который является базовым HTML .

ПРОБЛЕМА

Я пытаюсь интегрировать виджет на страницу CMS сайта, теперь я протестировал виджет на простом html-документе, и он отлично работает.

Это код для HTML-страницы.

<div class="work-widget" data-key="1111plzwork111"></div>

Тема КМВ > исходного кода выбрасывает в data-key="1111plzwork111", который, очевидно, нарушает виджет.

Таким образом, после сохранения исходного кода HTML выглядит следующим образом:

<div class="work-widget"></div>

Ожидается:

Может ли кто-нибудь, пожалуйста, помочь мне найти решение для этого, я не знаю, что делать, чтобы заставить его работать. Так что если я сохраню исходный код, то HTML сохранит атрибут data-key="1111plzwork111".

У вопроса есть решение - Посмотреть?

Ответы - Использование атрибута HTML в исходном коде CMS / Using HTML attribute within CMS source code

Является ответом!
WebXY

28.02.2018 11:46:09

Вы должны отключить опцию Использовать библиотеку HTMLPurifier в меню Preferences > General в PrestaShop 1.6 или Shop Parameters > > General в PrestaShop 1.7 Use HTMLPurifier Library option

Ylama

28.02.2018 12:17:18

@WebXY имеет фиксированный ответ, и он отлично работает. Но в случае, если кто-то не доволен выключением HTMLPurifier, так как он создает риски для безопасности.

риск безопасности:

Познай своего врага. Хакеры обладают огромным арсеналом векторов XSS, скрытых в недрах спецификации HTML. HTML-очиститель эффективен, поскольку он разлагает весь документ на маркеры и удаляет элементы, не включенные в белый список, проверяет правильность формы и вложенность тегов, а также проверяет все атрибуты в соответствии с их RFC.

Я использовал JavaScript, чтобы исправить эту проблему, поэтому я добавил div с id в исходный код CMS.

Затем по определенному URL-адресу я нашел идентификатор и добавил innerHTML:

JS:

function dinePlan() {
"use strict";

var location = window.location.pathname;
var dinePlanId = document.getElementById("dineplan");

 if (location !== null && dinePlanId !== null) {
    if (location === "/restaurant"){
        // console.log("found you");
        dinePlanId.innerHTML = '<div class="work-widget" data-key="1111plzwork111"></div>';
       } 
    }
}

$(document).ready(function(){
  dinePlan();
}

Исходный код: (в рамках CMS)

<div id="dineplan"></div>    
Закрыть X