Простая вставка Youtube видео в статьи с помощью фильтра

2041
- Давненько не брал я в руки шашек!

Все знают, как ставить видео с Youtube себе в статью:
- На странице с видео Youtube.com под самим видео берем код для вставки.
- На сайте в редакторе статьи вставляем его в режиме "Источник".

Для тех, кто имеет дело с компьютером ничего сложного.
Но есть люди не столь сведущие и им приходится объяснять, где брать этот код для вставки, и как его вставлять в редакторе.

"Почему бы не доверить вставку кода плеера самому движку ведь у него есть такая замечательная система фильтров" - подумал я.


Вспомнив немного PHP, который я пару лет не видел, написал маленький фильтр.
Он, встретив в статье ссылку страницы youtube.com, заменяет ее кодом плеера.

Теперь авторам достаточно просто вставить адрес из адресной строки youtube. Что может быть проще?


Установка:
1. Качаем файл
2. Распаковываем и заливаем папку f_youtube себе на сайт в папку /filters/
3. Выполняем запрос
Код PHP:
INSERT INTO cms_filters VALUES ("", "Youtube плеер", "Фильтр заменяет ссылки на страницы youtube.com кодом плеера", "f_youtube", "1");
4. Проверяем и отписываемся )
Фильтруем все
Комментарии (31)
reload 4 октября 2011 в 19:52 0
Вот молодец)
+
Zau4man 4 октября 2011 в 20:04 +1
Огромный плюс!
А можно сделать плагин для блогов? Чтобы встретив ссылку он менял ее на видео + ссылку?
Maximov 5 октября 2011 в 13:39 +1
Проще и удобнее подредактировать блоги, чтобы те фильтровались общими фильтрами.
Maximov 5 октября 2011 в 14:05 +1
maia 4 октября 2011 в 20:04 0
Вот спасибо! Есть у меня заказчик, который постоянно что-то на ютуб выкладывает и потом не может догнать как на свой сайт вставить год уже - извел. Подарок просто!
GoodMade.ru 4 октября 2011 в 20:38 0
эх, как приятно когда можно воспользоваться наработкой другогоsmile
и самому нечего делать не нужно..

Спасибо.
◦ Ӎɑƙҫиӎ ◦ Ᵽɑɗиớӊớβ 4 октября 2011 в 22:11 0
Очень удобно для пользователей,ведь у них нет кнопки "источник"
RIM5 5 октября 2011 в 11:59 0
А это будет работать, если человек вставит код не с ютуба, а с рутуба, с майла, с яндекса и т.д.?
maxisoft 5 октября 2011 в 12:05 0
нет не будет этот фильтр надо просто дописать под другие ресурсы.
Maximov 5 октября 2011 в 13:37 0
Этот – нет.
У каждого сервиса свои юрлы и свои плееры.
Писал под Youtube как наиболее распространенного видеохостера.

Можно ли дописать под другие? - Конечно.
Но надо ли? Ведь 90% видео на других тубах дублируют ролики с Youtube.
RIM5 5 октября 2011 в 14:00 0
Но надо ли? Ведь 90% видео на других тубах дублируют ролики с Youtube.
Ну, у кого как... у меня вот 40 % с яндекса вставляют, 20 % с майла, 30 % с ютуба, кто-то с рутуба... остальная часть вообще непонятно откуда.
Maximov 5 октября 2011 в 14:11 0
Вставляют может и 40%, я немного о другом говорил - о том что из этих 40% большая часть есть и на youtube.

Один видеохостер - это единый стиль страниц с видео на сайте.
alexbabo 13 октября 2011 в 08:12 0
а как можно такое же сделать для стены пользователя?
Maximov 14 октября 2011 в 18:43 +1
Ну теоретически можно, только думаю это не правильно.
Лучше подменять и вставлять код видео в момент написания (т.е. до за несения в базу)
чем парсить каждую запись на стене при просмотре.
alexbabo 15 октября 2011 в 04:13 0
и как множно это сделать чтоб автоматом менялось?
Maximov 15 октября 2011 в 12:40 +1
Не могу сейчас дать готовое решение. Дело в том что при записи на стену текст и так парсится на наличие ссылок. На досуге подумаю как тот парсер можно модифицировать.
alexbabo 16 октября 2011 в 20:25 0
Было полезным для всех.Спасибо))
alexbabo 15 июля 2012 в 03:13 0
Пока ничего по поводу стены пользователя?
lezginka.ru 14 октября 2011 в 19:00 0
не давно искал такое
+
krz 14 октября 2011 в 20:35 0
Как и какую правильно вставлять ссылку?? беру ссылку с строки в браузере, но в статье отображает ссылку((
Maximov 14 октября 2011 в 21:02 +1
Либо не так установили фильтр либо Youtube ввел новые типы юрлов.

- Проверьте включен ли фильтр в админке.
- Дайте ссылку на статью, посмотреть на строку которую он незахотел обрабатывать.
krz 14 октября 2011 в 23:26 0
спасибо за помощь
GarikKR 10 ноября 2011 в 15:27 0
После этого хака пользователи и админ не смогут добовлять фото через редактор)в статьиСупер хак!!
GarikKR 10 ноября 2011 в 15:29 0
И удолить те фото с сервера, которые пытались загрузить тоже не получится
Maximov 10 ноября 2011 в 17:41 +2
Вы мягкоговоря что-то путаете.

Во-первых это не хак, а фильтр. Никакого изменения в код движка не вносится.

Во-вторых - ни к редактору, ни к загрузке фото, ни к добавлению вообще чего-нибудь на сайт, фильтр не имеет никакого отношения.
Фильтр правит на лету существующий контент перед отображением, что не влияет даже на сам контент.
Не нравится его работа - выключили в админке и всё отображается как и прежде.
GarikKR 10 ноября 2011 в 19:59 0
А вы попрбуйте добавить фото в статью!(не по ссылке)а непосредственно на сайт
Maximov 10 ноября 2011 в 20:52 0
Адрес сайта в личку - проверю.
На моем тестовом сайте фото отлично загружается.
Алфей 17 марта 2012 в 02:37 0
Поставил фильтр, все работает, но есть один косячок. При добавлении ссылки с браузерной строки, подгружается плейер но остается хвостик ссылки.
Пример ссылки: http://www.youtube.com/watch?v=l2vpKQTfyVw &feature=g-feat&context=G203f89cYFAAAAAAAAAg
Выделенный текст остается. Может кто нибудь знает как сделать чтобы этот хвостик как то вырезался?
Frost 2 апреля 2012 в 01:57 0
Там вроде строка регулярных выражений проверяет ссылку до id, тоесть в данном случае до l2vpKQTfyVw по этому остальная часть:&feature=g-feat&context=G203f89cYFAAAAAAAAAg идёт в описание ссылки.
Собственно я в строке:
Код PHP:
$text=preg_replace_callback('/\bhttp:\/\/(?:[w]{3}\.)?(?:youtu)(?:be\.com\/(?:watch\?v=|user\/[a-z0-9]+#p\/u\/\d+\/)|.be\/)([-a-z0-9_]{8,})\w*\b/i','v',$text);}
подправил шаблон регулярных выражений на:
Код PHP:
$text=preg_replace_callback('/\bhttp:\/\/(?:[w]{3}\.)?(?:youtu)(?:be\.com\/(?:watch\?v=|user\/[a-z0-9]+#p\/u\/\d+\/)|.be\/)([-a-z0-9_]{8,})\b(?:[^\s]+)\w*/i','v',$text);
А так как у меня в tinymce почему то стали криво вставляться ссылки то есчё в 2ух местах поставил ">"
Возможно поправки немного кривоватые(так что кто знает прошу исправьте), но вроде работает:
Код PHP:
function v($k) {
return	'><embed height="400" width="600" align="center" type="application/x-shockwave-flash" src="http://www.youtube.com/v/'.$k[1].'"></embed>';}
function f_youtube(&$text){
$text=preg_replace_callback('/\>\bhttp:\/\/(?:[w]{3}\.)?(?:youtu)(?:be\.com\/(?:watch\?v=|user\/[a-z0-9]+#p\/u\/\d+\/)|.be\/)([-a-z0-9_]{8,})\b(?:[^\s]+)\w*/i','v',$text);
}
edd 19 февраля 2014 в 23:10 0
Хороший фильт он работает на 1.10.3
SeoNick 2 мая 2015 в 18:39 0
на 1.10.4 не работает, подскажите как внедрить.