Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Где находится код формирования тега [media=] ?

Где находится код формирования тега [media=] ?


     23.05.2020    [media=]    Все вопросы » Общие вопросы по PHP    1397

вопрос
Вставляю видео с Ютуба через тег [media=], на сайте он имеет вид:
<!--dle_media_begin:https://youtu.be/oLY1rss9Jx8--><iframe width="600" height="338" src="https://www.youtube.com/embed/oLY1rss9Jx8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe><!--dle_media_end-->

нужно изменить с "src" на "data-src" для включения "ленивой" загрузки. В parse.class.php и в \engine\editor\jscripts\froala\editor.js ничего подходящего не нашел или плохо искал, подскажите ?

Ответил: леший


Нигде в DLE Вы этого
<iframe>
не найдёте, так как он берётся непосредственно с YouTube

18 комментариев

shadow6630
Юзер

shadow6630 - 23 мая 2020 13:09 -

Есть варианты как принудительно формировать <iframe>, подставляя лишь ссылку на видео ? Пробовал в новости вставлять <iframe>, но он вырезается при сохранении новости.

TeraMoune
Эксперт

TeraMoune - 23 мая 2020 13:26 -

Проще сделать вот так
Файл: parse.class.php
Найти
return '<!--dle_media_begin:'.$decode_url.'-->'.$html.'<!--dle_media_end-->';

Добавить выше
if( $config['image_lazy'] ) $html = str_replace( 'src=', 'data-src=', $html );


P.S.
Iframe создаются на стороне движка.

Тестовый репозиторий установки плагинов: teramoune

shadow6630
Юзер

shadow6630 - 23 мая 2020 14:34 -

Спасибо, очередной раз помогли )

dj-avtosh
PHP-developer

dj-avtosh - 23 мая 2020 14:47 -

лучше уж тогда

if( $config['image_lazy'] ) $html = str_replace( ' src=', ' data-src=', $html );

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

shadow6630
Юзер

shadow6630 - 23 мая 2020 14:50 -

пробел поставить и что это меняет ?

dj-avtosh
PHP-developer

dj-avtosh - 23 мая 2020 14:52 -

а то что не заменится какой-нибудь тег похожий на test-src, а сменится именно src

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

TeraMoune
Эксперт

TeraMoune - 23 мая 2020 20:53 -

dj-avtosh,
И всё же не нужно, так как никаких test-src в фрейме по умолчанию быть не может, любой html код в движке проходит проверку библиотеки (если конечно проходит через функции ParseFilter) http://htmlpurifier.org, а она как раз и описывает в файле parse.class.php допущенные теги, аттрибуты и их значения, даже какие css правила допущены. Чтобы добавить test-src нужно его разрешить.

Более того если использовать визуальный редактор то и в нём нужно найти и разрешить подобные аттрибуты, так как Froala вот вырезает всё нестандартное. И если попытаться вставить видео, то редактор сам предварительно почистит html, а затем уже на серверной стороне дочистит htmlpurifier.

Тестовый репозиторий установки плагинов: teramoune

dj-avtosh
PHP-developer

dj-avtosh - 23 мая 2020 21:37 -

В программировании нельзя рассматривать частные случаи, особенно в плане регулярных выражений и автозамен. На то она и автоматизация.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

TeraMoune
Эксперт

TeraMoune - 23 мая 2020 23:04 -

Ну в случае с тегом media и с тем, что iframe всегда един можно и без пробела сделать. Если бы iframe появлялся из как раз таки embed ссылки то да, но тут склёпанный iframe библиотекой которая уж точно не будет добавлять постороннего.

Тестовый репозиторий установки плагинов: teramoune

dj-avtosh
PHP-developer

dj-avtosh - 24 мая 2020 00:05 -

окей окей ;)

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

shadow6630
Юзер

shadow6630 - 25 мая 2020 01:07 -

Вот и проблемы появились, добавляю Интсаграмм через тег [media=] и такой код выходит
<script async="" data-src="//www.instagram.com/embed.js"></script><!--dle_media_end-->
, в таком виде уже не работает вывод Инсты, нужно что бы только к iframe применялась замена src

TeraMoune
Эксперт

TeraMoune - 25 мая 2020 08:37 -

Тогда нужно подумать, но и пробел не поможет, скорей всего уже регуляркой заменять, а не простым реплейсом. А дайте ссылку на видео из инсты любую, а то не натыкаюсь я на неё, дают ссылку на страницу.

Тестовый репозиторий установки плагинов: teramoune

New-dev.ru
Эксперт

New-dev.ru - 25 мая 2020 09:09 -

Попробуйте так
if( $config['image_lazy'] ) {
	if ( strpos($html, '<iframe ') !== false and strpos($html, 'youtu') !== false ) {
		$html = str_replace( ' src=', ' data-src=', $html );
	}
}

TeraMoune
Эксперт

TeraMoune - 25 мая 2020 09:56 -

New-dev.ru, А для других отложка не нужна только для ютуба ?)

P.S.
Среди всех допущенных ссылок есть не только видео, а некоторые сервисы встраивают iframe самостоятельно добавляя лишь js и пару html элементов куда будут добавлять контент.

тогда можно вот так сделать,
if( $config['image_lazy'] ) $html = preg_replace( '/<iframe(.*)src=/i', '<iframe$1data-src=', $html );

, если есть iframe в $html то замена произойдёт, для остального же ничего будет всё как прежде.


Более лучше это стоит наверное сесть и проверить все хостинги и узнать какой код создаёт тег для каждого и сделать уже зная это всё, но я смотрел лишь парочку.

Тестовый репозиторий установки плагинов: teramoune

New-dev.ru
Эксперт

New-dev.ru - 25 мая 2020 18:44 -

В вопросе указано "Вставляю видео с Ютуба через тег".

shadow6630
Юзер

shadow6630 - 25 мая 2020 18:49 -

В принцепе пока использую только Ютуб, но нужно смотреть в сторону максимальной универсальности

TeraMoune
Эксперт

TeraMoune - 26 мая 2020 07:23 -

Ну и что, что из ютуба только автор вставляет. Другие ведь не только из ютуба будут вставлять, а Вы будите каждый ответ отвечать под каждый хостинг или же всё же лучше один раз сделать чтобы уже ни у кого вопросов не возникало ?)

Тестовый репозиторий установки плагинов: teramoune

shadow6630
Юзер

shadow6630 - 25 мая 2020 10:51 -

Дело в том что через тег [media=] не только вставляется видео, вот тут например я вставлял посты с Инсты, вот пример https://demo.in-rap.ru/biographi/57-ms-senechka.html В общем код
if( $config['image_lazy'] ) $html = preg_replace( '/<iframe(.*)src=/i', '<iframe$1data-src=', $html );
пока работает корректно, буду тестить дальше.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх