Быстрый и надёжный хостинг на SSD-дисках от 165р в месяц   •   Реклама
3 770 просм
20 комм
Поделиться:

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

12 мая
Хаки

Когда я размещал на своем сайте одну из статей, была необходимость внедрить небольшой скрипт непосредственно в сам текст. Но как мне стало потом известно – 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.
    • 0
    1
      •  Пользователь
    29 мар в 18:47

    Нужно

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

    в файлах editnews и addnews

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

    На

    $full_story = $_POST['full_story'];

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

    • 0
    784
      •  Администратор
    28 апр в 01:59

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

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

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

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

    • 0
    679
      •  Гости
    5 фев в 16:26

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

    • 10
    784
      •  Администратор
    3 фев в 16:23

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

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

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

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

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

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

    </script>

    {AJAX}

    </body>

    </html>

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

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

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

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

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

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

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

    • 10
    784
      •  Администратор
    14 дек в 20:14

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

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

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

    • 0
    679
      •  Гости
    14 дек в 19:35

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

    • 9
    784
      •  Администратор
    25 ноя в 23:11

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

    • 0
    679
      •  Гости
    25 ноя в 21:14

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

    Ps: кеш чистил

    • 5
    784
      •  Администратор
    25 ноя в 17:52

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

    • 1
    679
      •  Гости
    25 ноя в 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
    679
      •  Гости
    23 окт в 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
    679
      •  Гости
    14 окт в 12:26

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

    • 5
    784
      •  Администратор
    11 окт в 13:41

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

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

    • 1
    679
      •  Гости
    10 окт в 18:48

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

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

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

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