Доброго времени уважаемые.
Пост, думаю, может быть интересен только новичкам. В основном, делаю для себя заготовку кода. А то давно не было необходимости во вставке youtube роликов на сайты - забыл, где код лежит:)
Итак, имеем текстовое свойство YOUTUBE. В это поле записывается ссылка на ролик (которую можно получить, нажав на кнопку "поделиться" под роликом).
Для начала знакомимся софициальной документацией .
Дальше, в result_modifier компонента вывода элемента инфоблока (или списка элементов, или одного из компонентов работы с каталогом ...)
Код изкомпонента news.list, взят кусок кода из перебора всех новостей. Если у вас детальная карточка - $arItem замените на $arResult
и далее уже в template.php выводим сам ролик и информацию о нем:
(в старом варианте)
или в новом,более компактном варианте:
Размеры не забудьте ваши задать.
Вот такой код покажет превью изображение, название, дату добавления и количество просмотров:
Ну и генерация самого превью изображения:
Кому интересно посмотреть на результат - он присутствует вМагазине автозапчастей интегрированного с мощной базой данных оригинальных запасных деталей и их аналогов. Внизу индексной страницы есть блок с выводом видео в списке видео-новостей.
Легкого всем кода
Пост, думаю, может быть интересен только новичкам. В основном, делаю для себя заготовку кода. А то давно не было необходимости во вставке youtube роликов на сайты - забыл, где код лежит:)
Итак, имеем текстовое свойство YOUTUBE. В это поле записывается ссылка на ролик (которую можно получить, нажав на кнопку "поделиться" под роликом).
Для начала знакомимся с
Дальше, в result_modifier компонента вывода элемента инфоблока (или списка элементов, или одного из компонентов работы с каталогом ...)
if(strlen($arItem['DISPLAY_PROPERTIES']['YOUTUBE']['VALUE'])>0){ $arYOUTUBE = array_pop(explode('/',$arItem['DISPLAY_PROPERTIES']['YOUTUBE']['VALUE'])); } else { $db_props = CIBlockElement::GetProperty(intval($arItem['IBLOCK_ID']), intval($arItem['ID']), array("sort" => "asc"), Array("ID"=>75)); if($ar_props = $db_props->Fetch()){ $arItem['DISPLAY_PROPERTIES']['YOUTUBE'] = $ar_props; } $arYOUTUBE = array_pop(explode('/',$arItem['DISPLAY_PROPERTIES']['YOUTUBE']['VALUE'])); } if(strlen($arItem['DISPLAY_PROPERTIES']['YOUTUBE']['VALUE'])>0){ $arItem['DISPLAY_PROPERTIES']['YOUTUBE']['YOUCODE'] = $arYOUTUBE; $decode = file_get_contents('https://gdata.youtube.com/feeds/api/videos/'.$arYOUTUBE.'?v=2&alt=json'); $videodata = json_decode($decode); $entry = (array) $videodata->entry; $published = (array) $entry['published']; $arItem['DISPLAY_PROPERTIES']['YOUTUBE']['VIEWCOUNT'] = $entry['yt$statistics']->viewCount; $arItem['DISPLAY_PROPERTIES']['YOUTUBE']['ACTIVE_FROM'] = substr($published['$t'],0,10); } |
и далее уже в template.php выводим сам ролик и информацию о нем:
(в старом варианте)
<ob ject width="560" height="315"> <param name="movie" value="//www.youtube.com/v/<?=$arItem['DISPLAY_PROPERTIES']['YOUTUBE']['YOUCODE']?>?hl=ru_RU&version=3"></param> <param name="allowFullScreen" value="true"></param> <param name="allowscriptaccess" value="always"></param> <emb ed src="//www.youtube.com/v/<?=$arItem['DISPLAY_PROPERTIES']['YOUTUBE']['YOUCODE']?>?hl=ru_RU&version=3" type="application/x-shockwave-flash" width="560" height="315" allowscriptaccess="always" allowfullscreen="true"></embed> </object> |
<ifr ame width="560" height="315" src="//www.youtube.com/embed/<?=$arItem['DISPLAY_PROPERTIES']['YOUTUBE']['YOUCODE']?>" frameborder="0" allowfullscreen></iframe> |
Размеры не забудьте ваши задать.
Вот такой код покажет превью изображение, название, дату добавления и количество просмотров:
<div class="video-item" id="<?= $this->GetEditAreaId($arItem['ID']); ?>"> <?=CFile::ShowImage($arItem["PREVIEW_PICTURE"], 105, 105, 'title="'.$arItem["NAME"].'" class="img-responsive pull-left" alt="'.$arItem["NAME"].'"', $arItem['DETAIL_PAGE_URL'], false);?> <h5><a href="<?=$arItem['DETAIL_PAGE_URL']?>"><?=$arItem['NAME']?></a></h5> <span class="text-muted video-date-time">Добавлено: <?=$arItem['DISPLAY_PROPERTIES']['YOUTUBE']['ACTIVE_FROM'];?></span><br/> <span class="text-muted number_of_views">Просмотров: <?=$arItem['DISPLAY_PROPERTIES']['YOUTUBE']['VIEWCOUNT'];?></span> </div> |
Ну и генерация самого превью изображения:
$imgsrc = "http://img.youtube.com/vi/" . $V_CODE . "/0.jpg"; $arItem['DISPLAY_PROPERTIES']['YOUTUBE']["PREVIEW_PICTURE"] = CFile::MakeFileArray($arItem['DISPLAY_PROPERTIES']['YOUTUBE']['YOUCODE']); |
Кому интересно посмотреть на результат - он присутствует в
Легкого всем кода
