Быстрый и надёжный хостинг на SSD-дисках от 165р в месяц   •   Реклама
3 563 просм
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.
Пользователь1

Нужно

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

в файлах editnews и addnews

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

На

$full_story = $_POST['full_story'];

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

29 мар в 18:47
  • 0
Администратор758

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

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

28 апр в 01:59
  • 0
Гости679

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

27 апр в 08:45
  • 0
Гости679

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

5 фев в 16:26
  • 0
Администратор758

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

3 фев в 16:23
  • 10
Гости679

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

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

3 фев в 14:46
  • 1
Гости679

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

</script>

{AJAX}

</body>

</html>

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

14 дек в 20:50
  • 0
Гости679

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

14 дек в 20:44
  • 0
Гости679

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

14 дек в 20:38
  • 0
Гости679

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

14 дек в 20:25
  • 0
Администратор758

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

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

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

14 дек в 20:14
  • 10
Гости679

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

14 дек в 19:35
  • 0
Администратор758

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

25 ноя в 23:11
  • 9
Гости679

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

Ps: кеш чистил

25 ноя в 21:14
  • 0
Администратор758

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

25 ноя в 17:52
  • 5
Гости679

Привет. тоже такая проблема нет этих строчек

У меня версия 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

не помогло

Помогите пожалуйста , срочно нужно)

25 ноя в 13:57
  • 1
Гости679

Дмитрий, решил проблему с вырезанием тега 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' );

23 окт в 09:02
  • 1
Гости679

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

14 окт в 12:26
  • 1
Администратор758

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

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

11 окт в 13:41
  • 5
Гости679

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

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

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

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