Перейти к содержимому
Русский язык для Invision Community 5

Вставка видео с ютуба в доп поле

Сделал вставку видео в доп поле, получилось только по id видео. Как сделать вставку видео по ссылке? Что бы ссылка преобразовалась в iframe. Как в редакторе.

Знаю что можно через поле типа "Редактор" сделать, но мне нужно сделать доп поле без использования редактора для пользователей.

Вот код:

 

{{if $cfields['field_13']['value']}}
{{$link = strip_tags($cfields['field_13']['value']);}}   
<li class='ipsCarousel_item ipsAreaBackground_reset ipsPad_half' data-ipsLazyLoad>   
<iframe width="385" height="225" src="https://www.youtube.com/embed/{$link}" frameborder="0" 
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></li>
{{endif}}

Рекомендованные сообщения

Как сделать вставку видео по ссылке?
Никак. Нужно извлечь ID из ссылки и его использовать.
  • Автор

@newbie, а если пользователь вставит ссылку, есть ли какой то способ извлечь ID из ссылки?

  • Автор

@newbie, к примеру с помощью подобных скриптов. Можно это реализовать именно для доп поля?

 

<script type="text/javascript">
function youTubeGetId(url) {
   var expression = /^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be[.]?\/|youtube\.com[.]?\/(?:embed\/|v\/|watch\/?\?(?:\S+=\S*&)*v=))([\w-]{11})\S*$/;
   return url.match(expression) ? RegExp.$1 : undefined;
}

</script>

{{if $value = trim(strip_tags($cfields['field_13']['value']))}}
{{$cacheKey = 'downloads_cfield_embed_' . md5($value); try { $html = \IPS\Data\Cache::i()->getWithExpire($cacheKey, TRUE); } catch (\Exception $e) { $html = \IPS\Text\Parser::embeddableMedia(\IPS\Http\Url::createFromString($value, FALSE), TRUE); \IPS\Data\Cache::i()->storeWithExpire($cacheKey, $html, \IPS\DateTime::create()->add(new \DateInterval('P10D')), TRUE); } }}   
{{if $html}}
	{$html|raw}
{{endif}}
{{endif}}

  • Автор

@newbie, спасибо, а куда именно это прописывать?)

newbie, спасибо, а куда именно это прописывать?)

 

В шаблон view

  • Автор

@newbie, хмм, так и делаю. Но ничего не меняется.

Как выглядит ссылка?

  • Автор

@newbie, именно сейчас у меня так

{{if $cfields['field_13']['value']}}
{{$link = strip_tags($cfields['field_13']['value']);}}              
<li class='ipsCarousel_item ipsAreaBackground_reset ipsPad_half' data-ipsLazyLoad>   
<iframe width="385" height="225" src="https://www.youtube.com/embed/{$link}" frameborder="0" 
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></li>

{{endif}}

 

Ссылку прописал так:

https://www.youtube.com/embed/{$link}

 

А вот как ваш код задействовать который выше для извлечения id, так и не понял.

Изменено пользователем alcatras

А вот как ваш код задействовать который выше для извлечения id, так и не понял.

В моем коде ничего не извлекается.

$html - html-код плеера.

Нужно просто вставить код и заменить 13 на ID поля.

  • Автор

@newbie, а ссылку в html-коде плеера указать в таком виде?

https://www.youtube.com/embed/{значение доп поля}

Изменено пользователем alcatras

  • Автор

@newbie, получается то же самое, что я выше кинул

а ссылку в html-коде плеера указать в таком виде?

В каком коде?

В моем решение ничего делать дополнительно не нужно.

Там берется ссылка из поля, делается запрос и получаем html уже с плеером.

  • Автор

@newbie, ну я просто вставил этот код, указал id нужного поля. И просто видео не появляется. Прописал его на странице с файлом в карусели с картинками.

Дадите доступ в АЦ - посмотрю.

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.