Безлимитный хостинг на сверхбыстрых SSD-дисках от 66р в месяц   •   Реклама
4 422 просм
23 комм
Поделиться:

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

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

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

23
комментария
Форма комментирования этой статьи скрыта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.
    • 1
    2
      •  Пользователь
    28 апр в 07:00

    Здравствуйте не могу найти

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

    Версия 14

      • 0
      828
        •  Администратор
      28 апр в 14:27

      Антон, здравствуйте!

      В новых версиях поменялся принцип обработки тегов.

      Возможно в комментариях есть инструкция для свежих релизов.

      • 1
      2
        •  Пользователь
      29 апр в 03:09

      Решено .

       47 var $allowed_domains = array("drive.google.com",
    • 1
    1
      •  Пользователь
    29 мар в 18:47

    Нужно

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

    в файлах editnews и addnews

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

    На

    $full_story = $_POST['full_story'];

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

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

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

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

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

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

    • 1
    766
      •  Гости
    5 фев в 16:26

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      </script>

      {AJAX}

      </body>

      </html>

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

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

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

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

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

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

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

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

      • 1
      766
        •  Гости
      14 окт в 12:26

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

      • 1
      766
        •  Гости
      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
      766
        •  Гости
      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

      не помогло

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

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

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

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

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

      Ps: кеш чистил

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

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

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