Что делать, если 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", "<script", $source );
и закомментируем их, или же просто удалим.
3. Сохраняем все изменения и отправляем их на сайт.
Теперь вы можете проверить, работает ли вставка скриптов непосредственно в саму новость DataLife Engine. Для этого в поле ввода текста статьи вставьте:
<script>
alert("Hello World!");
</script>
Публикуете статью и открываете ее на сайте. Если вы увидели всплывающее сообщение, значит, все сделано правильно.
По аналогии разблокируются и все остальные теги. Пробуйте, и если у вас возникнут какие-либо вопросы – задавайте их в комментариях к этой статье.