Супербыстрый хостинг на SSD от 115р в месяц   •   Реклама
3 375 просм
20 комм
Поделиться:

Что делать, если 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>

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

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

20
комментариев
Гостям запрещено участвовать в обсуждениях сайта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.

Нужно

Заменить 2 строки

в файлах editnews и addnews

$full_story = $parse->process( $_POST['full_story'] );

На

$full_story = $_POST['full_story'];

Файлы в папке /engine/inc/

  • 0

Сергей, какая версия движка?

Как вариант - обработчик перенести просто в дизайн полной новости.

  • 0
27.04 в 08:45

Здравствуйте Артем. Есть такая проблема, добавил форму для текста, на которой обработчик события выполняет текст. Но при сохранении DLE удаляет обработчик события, не трогая остальной код формы. По вашей статье зашел в parse.class.php, нашел искомый обработчик и закоментировал его, но все равно при сохранении страницы обработчик удаляется. Не подскажете, в каком направлении копать?

  • 0
5.02 в 16:26

Спасибо вам огромное! Очень долго искал такую информацию

  • 0

Вячеслав, в исходном коде шаблона или новости?

  • 10
3.02 в 14:46

Здравствуйте Артем. Не подскажешь в чем может быть проблема <!--noindex-->

в исходном коде не отображается.

  • 1
14.12 в 20:50

просто переместил {AJAX} в самый конец

</script>

{AJAX}

</body>

</html>

и все заработало)))

  • 0
14.12 в 20:44

удалил {AJAX} теперь все модули перестали работать DDD

  • 0
14.12 в 20:38

решение нашел удалил с main.tpl {AJAX}

  • 0
14.12 в 20:25

конечно закрываю

  • 0

Артём, а вы тег этот закрываете?

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

[code] Ваш код [/code]

  • 10
14.12 в 19:35

Здравствуйте у меня проблема с тегом [code] как только я вставляю тег [code] в новость у меня перестает отображаться логотип, кнопка настройки, кнопка выхода и перестает разворачиваться меню

  • 0

Алексей, тогда пишите нам вконтакте - попробуем помочь. (нужно будет предоставить доступы к сайту).

  • 9
25.11 в 21:14

Артем, я пробовал все 3 вида визуального редактора переключать, все равно не помогает.

Ps: кеш чистил

  • 0

Алексей, а визуальный редактор при этом Вы отключили?

  • 5
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
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
14.10 в 12:26

Артем, привет, та же проблема, что и у человека выше, отписал тебе в вк, может поможешь

  • 1

Андрей, к сожалению под рукой нет DLE этих версий. Если у вас есть тестовый сайт или можете скинуть доступы к рабочему - пришлите их в комментариях, во «ВКонтакте» или через форму обратной связи.

Постараюсь вам помочь

  • 5
10.10 в 18:48

Артем, приветствую!

У меня 2 сайта на 11.3 и 12 версии движка. Так вот в обоих файлах parse.class отсутствуют даже примерные строчки из Вашего примера.

Возможно в новых версиях как-то по-другому реализовано?

  • 1
Подняться наверх
«Pandoge» - помощник веб-мастера