1
12305
Как вставить Iframe при добавлении видео в новость DLE?

В Общем с чем же я столкнулся, а все очень просто если вставить уже готовую ссылку с YouTube то вы обнаружите, что ваша CMS DLE 10.0 версии, про новые версии движков сказать не могу, так как не тестировал их, да и не обновляю свой сайт до новой версии DLE. В Общем он их просто не принимает. Вот приведу наглядный вам пример ссылки, она выглядит вот таким образом:
<iframe width="640" height="360" src="https://www.youtube.com/embed/_r5BFHDnCTs" frameborder="0" allowfullscreen></iframe>
Теперь давайте разберемся почему же ваша DLE ее не принимает, если вы вставите только вот этот один код в свою новость без текста, и зайдете в полную новость, то просто увидите пустое поле.
Теперь самое интересное, раньше они облачались следующим тегом
<object></object>
и DLE этот параметр вполне принимал, а сейчас многие видео хостинги отказались от этого и используют тег:
<iframe></iframe>
И вот самое главное почему? А все довольно просто iframe является потенциально опасным тегом и его использование блокируется парсером DLE! Но как тогда же быть? приведу несколько вариантов решение данной проблемы:
1. Ну, наверное самый простой способ. Но, у вас не получится сделать это если вы не являетесь администратором данного сайта. Так как добавлять придется через phpMyAdmin
Заходим в базу данных и добавляем через нее, находим dle_post (выбрать обзор), далее ищем свою новость, нажимаем редактировать и вставляем полностью скопированный код в строку full_story в любое нужное вам место. Сохраняемся вот и все. Теперь наша DLE ее проглотит.
2. Следующий способ потребует внести некие изменения в систему управления контентом (CMS)
Убрать это ограничение можно в файле /engine/classes/parse.class.php
найти
var $tagBlacklist = array('applet', 'body', 'bgsound', 'base', 'basefont', 'frame', 'frameset', 'head', 'html', 'id', 'iframe', 'ilayer', 'layer', 'link', 'meta', 'name', 'script', 'style', 'title', 'xml');
и заменить
var $tagBlacklist = array('applet', 'body', 'bgsound', 'base', 'basefont', 'frameset', 'head', 'html', 'id', 'ilayer', 'layer', 'link', 'meta', 'name', 'script', 'style', 'title', 'xml');
Кроме выше сказанного еще удалить строку 250:
$source = preg_replace( "#<iframe#i", "<iframe", $source );
После этого Вы сможете использовать
<iframe>
напрямую в новостях! НО! также это откроет возможность использования фреймов в комментариях!
3. Довольно самый простой способ это заменить тег:
<iframe>
на который использовался ранее:
</object>
В общем берем код опять же с YouTuba:
<iframe width="640" height="360" src="https://www.youtube.com/embed/_r5BFHDnCTs" frameborder="0" allowfullscreen></iframe>
И заменяем вот на этот:
<object width="640" height="360"><param name="movie" value="//www.youtube.com/embed/_r5BFHDnCTs" frameborder="0"><embed src="//www.youtube.com/embed/_r5BFHDnCTs" frameborder="0" width="640" height="360" allowscriptaccess="always" allowfullscreen="true"></embed></object>
Думаю понятно, что и на что изменить. Если вам не понятно то скопируйте этот шаблон себе:
<object width="640" height="360"><param name="movie" value="//ссылка" frameborder="0"><embed src="//ссылка" frameborder="0" width="640" height="360" allowscriptaccess="always" allowfullscreen="true"></embed></object>
И вместо слова ссылка, вставьте к примеру опять берем этот же код:
Вот это - www.youtube.com/embed/_r5BFHDnCTs можно без https:
640 и 360 можно изменить на нужный вам размер. Это ширина и высота отображаемого проигрывателя в вашей новости.
4. Ну и последний способ это добавлять через дополнительное поле. Для начала его нужно нам создать, в общем это делается так:
Нажимаем на кнопочку "Добавить поле" и заполняем там следующее:
1. Вписываем название, на скрине я написал YouTube, но вы можете поставить любое другое.
2. Напишите любое описание этого поля.
3. Поставьте галочку ОБЯЗАТЕЛЬНО!
4. Нажмите "сохранить"
Вы не поверите но на этом мы уже сделали половину!
Теперь приступим к использованию этого поля в наших новостях. Для этого откройте файл вашего шаблона fullstory.tpl
И найдите там: {full-story}
После него мы вставляем что-то одно из трех:
1.
<center>[xfgiven_youtube]<br><iframe src="[xfvalue_youtube]" width="607" height="360" frameborder="0"></iframe>[/xfgiven_youtube]</center>
В дополнительно поле я ставлю ссылку типа "http:////www.youtube.com/embed/_r5BFHDnCTs", а не полностью весь iframe.
ИЛИ
2.
<noindex><center>[xfgiven_youtube]<br><iframe src="http://www.youtube.com/[xfvalue_youtube]" width="607" height="360" frameborder="0"></iframe>[/xfgiven_youtube]</center></noindex>
Т.е. тут я ставлю в дополнительно поле продолжение ссылки, а не всю ссылку. Пример "/embed/_r5BFHDnCTs". Таким образом ни какой iframe кроме youtube.com на сайт поставить нельзя. Я считаю этот способ более безопасным!
На одном из своих сайтов я сделал так.
3. Самый расширенный!
<noindex>[xfgiven_youtube]<iframe src="http://www.youtube.com/[xfvalue_youtube]" width="[xfvalue_youtube-w]" height="[xfvalue_youtube-h]" frameborder="0"></iframe>[/xfgiven_youtube]</noindex>
Этот вариант включает в себя второй способ, плюс два дополнительныx поля.
Т.е. Вам нужно будет создать не одно дополнительное поле, а целых три.
1. youtube - поле с ссылкой
2. youtube-w - ширина видео
3. youtube-h - высота видео
В итоге у нас получается самый гибкий вывод видео с Youtuba!
Вот в общем-то и все. Думаю, что и не опытный юзер найдет себе один из способов, хотя он здесь всего один №3, так и продвинутый админ выберет один из вариантов.
Спасибо за внимание!
Если Вам помог этот материал, пожалуйста поставьте ссылку на http://dmjo.ru, я буду Вам очень благодарен!
При копирование материала, ссылка на меня обязательна! Уважайте чужой труд!