Генератор favicon   •   Online-инструменты
924 просм
14 комм
Поделиться:

Что делать, если DLE вырезает некоторые HTML-теги из новости?

Когда я размещал на своем сайте одну из статей, была необходимость внедрить небольшой скрипт непосредственно в сам текст. Но как мне стало потом известно – DataLife Engine не дает возможность простой вставки HTML-тегов определенного типа, PHP- и JS-скриптов.

Я стал разбираться, в чем дело и как заставить DLE пропускать мой код в новости. Начну с того, что CMS не просто так запрещает вставки кода в текст материала, и если вы хотите поделиться исходным кодом ваших творений – воспользуйтесь конструкцией:

[codе]Необходимый код[/codе]

В таком случае код будет отображен в статье как обычный текст, а иначе это чревато плохими последствиями, в том числе – взломом вашего сайта. Так что перед тем, как открывать необходимые теги для внедрения их в статью, подумайте, действительно ли вам это нужно.

Итак, что касается запрета на определенные теги. Если мы откроем файл parse.class.php в папке /engine/classes/ вашего сайта и посмотрим примерно на 46 строку (нумерация в разных версиях может отличаться – ищите строку по начальной фразе), увидим следующее:

var $tagBlacklist = array ('applet', 'body', 'bgsound', 'base', 'basefont', 'frame', 'frameset', 'head', 'html', 'id', 'ilayer', 'layer', 'link', 'meta', 'name', 'script', 'style', 'title', 'xml' ); 

Что именно здесь есть? В принципе, полный перечень того, что запрещает DLE вставлять в текст новостей. Теперь рассмотрим, как разрешить вставку кода, на примере тега <script>.

1. Первое, что вам необходимо сделать – это удалить 'script' из этой строки.

2. Затем ниже ищем все строки, содержащие:

$source = preg_replace( "#<script#i", "&lt;script", $source ); 

и закомментируем их, или же просто удалим.

3. Сохраняем все изменения и отправляем их на сайт.

Теперь вы можете проверить, работает ли вставка скриптов непосредственно в саму новость DataLife Engine. Для этого в поле ввода текста статьи вставьте:

<script>alert("Hello World!");</script>

Публикуете статью и открываете ее на сайте. Если вы увидели всплывающее сообщение, значит, все сделано правильно.

По аналогии разблокируются и все остальные теги. Пробуйте, и если у вас возникнут какие-либо вопросы – задавайте их в комментариях к этой статье.

14
комментарий
Андрей
10.10 в 18:48
Артем, приветствую!
У меня 2 сайта на 11.3 и 12 версии движка. Так вот в обоих файлах parse.class отсутствуют даже примерные строчки из Вашего примера.
Возможно в новых версиях как-то по-другому реализовано?
  • 0
Андрей, к сожалению под рукой нет DLE этих версий. Если у вас есть тестовый сайт или можете скинуть доступы к рабочему - пришлите их в комментариях, во «ВКонтакте» или через форму обратной связи.

Постараюсь вам помочь
  • 0
Дмитрий
14.10 в 12:26
Артем, привет, та же проблема, что и у человека выше, отписал тебе в вк, может поможешь
  • 1
Андрей
23.10 в 09:02
Дмитрий, решил проблему с вырезанием тега option так:

/engine/classes/parse.class.php

Найди:
$def->addElement('section', 'Block', 'Flow', 'Common');
Ниже:
$def->addElement('option', 'Inline', 'Flow', 'Common');

Найди:
$def->addAttribute('img', 'sizes', 'Text' );
Ниже:
$def->addAttribute('option', 'value', 'Text' );
  • 1
Алексей
25.11 в 13:57
Привет. тоже такая проблема нет этих строчек
У меня версия dle 12

Пробовал /engine/classes/parse.class.php

Найди:
$def->addElement('section', 'Block', 'Flow', 'Common');
Ниже:
$def->addElement('option', 'Inline', 'Flow', 'Common');

Найди:
$def->addAttribute('img', 'sizes', 'Text' );
Ниже:
$def->addAttribute('option', 'value', 'Text' );
1

не помогло

Помогите пожалуйста , срочно нужно)
  • 1
Алексей, а визуальный редактор при этом Вы отключили?
  • 1
Алексей
25.11 в 21:14
Артем, я пробовал все 3 вида визуального редактора переключать, все равно не помогает.
Ps: кеш чистил
  • 0
Алексей, тогда пишите нам вконтакте - попробуем помочь. (нужно будет предоставить доступы к сайту).
  • 1
Артём
14.12 в 19:35
Здравствуйте у меня проблема с тегом [code] как только я вставляю тег [code] в новость у меня перестает отображаться логотип, кнопка настройки, кнопка выхода и перестает разворачиваться меню
  • 0
Артём, а вы тег этот закрываете?

Структура его такая:

[code] Ваш код [/code]
  • 0
Артём
14.12 в 20:25
конечно закрываю
  • 0
Артём
14.12 в 20:38
решение нашел удалил с main.tpl {AJAX}
  • 0
Артём
14.12 в 20:44
удалил {AJAX} теперь все модули перестали работать DDD
  • 0
Артём
14.12 в 20:50
просто переместил {AJAX} в самый конец
</script>
{AJAX}
</body>
</html>
и все заработало)))
  • 0
Оставить комментарий:
Нажимая кнопку «Отправить» вы даете согласие на обработку своих персональных данных.
Ваше Имя
Ваш E-mail
Текст комментария