Получить url файла по fid

Главные вкладки

Аватар пользователя dmuradz dmuradz 23 декабря 2013 в 18:15

Добрый вечер. Пытаюсь создать видео галерею. установил модули jw player(и все что к нему требуется), views. Создал тип материала видео с полями: видео, видео в формате mp4(для ios устройств) и превью.
во вьюхе вывожу все три поля. Средство форматирования (для видео файлов) выбираю: URL файла. Добавляю еще одно поле глобальный PHP, в котором пишу условие:
если сайт открыт с ipad или iphone, печатать html 5, иначе печатать jw player.
проблема в том, что я не знаю как взять url файла видео. когда подставляю значение из доступных переменных, $row->field_video_flv, он печатает мне цифру 7.
пытался сделать как описано тут http://drupalhint.ru/snippetyi/po-fid-fayla-vyivesti-polnyiy-put-do-nego..., но ничего не получается. Может что то не так делаю, подскажите плиз?
с друпалом знаком меньше месяцв, так что не судите строго

Комментарии

Аватар пользователя dmuradz dmuradz 24 декабря 2013 в 10:00

Niklan wrote:
file_load() а uri перегоняем в url file_create_url($uri)

<?php
$fid = $row->field_upload_video_flv;
$video_file = file_load($fid);
$video_path = file_create_url($video_file->$uri);

print $video_path;
?>

пишу вот такую хрень, она выводит мне имя домена

Аватар пользователя dmuradz dmuradz 24 декабря 2013 в 9:54

<?php
$view = views_get_current_view();
$field = $view->field['field_upload_video_flv_fid'];
if(isset($GLOBALS['ipad']) || isset($GLOBALS['iphone']) )
$field = $view->field['field_upload_video_mp4_apple_m_fid'];
?>
< div id="videoplayer" style="width: 720px; height: 442px">
< a class="video" title="< ?php print $view->field['title']->last_render; ? >" href="< ?php print $field->last_render; ? >">field['field_upload_video_preview_fid']->last_render; ? >">< /a>
< /div>

вот такая конструкция на drupal 6 работала. А на 7 нифига не получается

Аватар пользователя Niklan Niklan 24 декабря 2013 в 11:57

$fid = $row->field_upload_video_flv['und'][0]['fid'];

хотя уж лучше так тогда:
$file_uri = $row->field_upload_video_flv['und'][0]['uri'];
$file_url = file_create_url($file_uri);

Аватар пользователя dmuradz dmuradz 5 января 2014 в 12:54

"Niklan" wrote:
$fid = $row->field_upload_video_flv['und'][0]['fid'];
хотя уж лучше так тогда:
$file_uri = $row->field_upload_video_flv['und'][0]['uri'];
$file_url = file_create_url($file_uri);

вот так заработал...

$node = node_load(array("nid" => $row->field_upload_video_flv));
$filename = $node->field_upload_video_flv["und"][0]["filename"];

Аватар пользователя dmuradz dmuradz 5 января 2014 в 13:15

Warning: array_flip() [function.array-flip]: Can only flip STRING and INTEGER values! в функции DrupalDefaultEntityController->load() (строка 173 в файле /home/public_html/includes/entity.inc).
Warning: array_flip() [function.array-flip]: Can only flip STRING and INTEGER values! в функции DrupalDefaultEntityController->cacheGet() (строка 350 в файле /home/public_html/includes/entity.inc).
Notice: Undefined index: und в функции __lambda_func() (строка 4 в файле /home/public_html/sites/all/modules/views_php/plugins/views/views_php_handler_field.inc(202) : runtime-created function).

только вот теперь такую ошибку выводит