Показ youtube ролика по коду

Показ youtube ролика по коду

613
11.11.2014

Продолжаю перенос постов со своего блога на сайте битрикса. На этот раз пост про работу с роликами youtube (пост частично устарел, т.к. новый апи немного по другому работает, но по новому апи сделаю как-нибудь позже отдельную статью)...

Доброго времени уважаемые.

Пост, думаю, может быть интересен только новичкам. В основном, делаю для себя заготовку кода. А то давно не было необходимости во вставке 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);
   }

Код изкомпонента news.list, взят кусок кода из перебора всех новостей (если у вас детальная карточка - $arItem замените на $arResult) и далее уже в template.php выводим сам ролик и информацию о нем:

(в старом варианте) 

    <object 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>
        <embed 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>


или в новом,более компактном варианте: 

<iframe
    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']);

Кому интересно посмотреть на результат - он присутствует в Магазине автозапчастей интегрированного с мощной базой данных оригинальных запасных деталей и их аналогов. Внизу индексной страницы есть блок с выводом видео в списке видео-новостей. 

Легкого всем кода ;) 


Источник: http://dev.1c-bitrix.ru/community/webdev/user/60622/blog/12111/


Благодарю за внимание! Делитесь вашими замечаниями в комментариях ниже.


P.S. Обращайтесь ко мне за приобретением лицензий и продлений на 1C-Битрикс "Управление сайтом", лицензий на облачную и коробочную версии Битрикс 24 а также за приобретением и внедрением готовых решений на базе 1С-Битрикс от партнеров. За более подробной информацией свяжитесь со мной любым удобным для вас способом


Комментарии

Еще никто не комментировал данную публикацию. Будьте первыми!

Добавить комментарий

captcha

Возврат к списку