Tôi đang tìm cách để làm một cái gì đó như thế này
$fid = 15;
$file = (array)file_load($fid);
$content = drupal_render($file);
echo $content;
Và cụ thể fid này là từ phiên bản 7.x-2.x của mô-đun phương tiện .
Tôi đang tìm cách để làm một cái gì đó như thế này
$fid = 15;
$file = (array)file_load($fid);
$content = drupal_render($file);
echo $content;
Và cụ thể fid này là từ phiên bản 7.x-2.x của mô-đun phương tiện .
Câu trả lời:
Điều này làm việc cho tôi. Đối với video qua mô-đun phương tiện:
<?php
$file = file_load($fid);
if (strpos($file->filemime, 'video/') !== 0) {
return;
}
$key = 'media_' . substr($file->filemime, 6) . '_video';
$formatter_info = file_info_formatter_types($key);
$content = array();
$content['#theme'] = $key;
$content['#uri'] = $file->uri;
if (isset($formatter_info['default settings'])) {
$content['#options'] = $formatter_info['default settings'];
}
$rendered = drupal_render($content);
return $rendered;
?>
Và cho hình ảnh; cái này cho bạn thấy những gì cài sẵn có sẵn ( #style_name
)
<?php
$styles = image_styles();
echo '<pre>' . print_r($styles, TRUE) . '</pre>';
?>
Và điều này sẽ làm cho tập tin
<?php
$file = file_load($fid);
$image = image_load($file->uri);
$content = array(
'file' => array(
'#theme' => 'image_style',
'#style_name' => 'large',
'#path' => $image->source,
'#width' => $image->info['width'],
'#height' => $image->info['height'],
),
);
echo drupal_render($content);
?>
Lưu ý rằng image_load thực hiện I / O.
Và cho ngược lại; đưa ra một tên tệp có được một fid.
<?php
$query = new EntityFieldQuery();
$result = $query
->entityCondition('entity_type', 'file')
->propertyCondition('filename', basename($filename))
->execute();
foreach ($result['file'] as $values) {
$fid = $values->fid;
break;
}
echo $fid
?>
Cho mã nhúng phương tiện, nhận FID.
<?php
$file = media_parse_to_file($embed_code);
if (empty($file->fid)) {
return FALSE;
}
return $file->fid;
?>
$file->filemime = video/youtube
sau đó, khóa sẽ kết thúc là 'media_youtube_video', sẽ sử dụng chức năng chủ đề bên trong drupal.org/project/media_youtube (xem media_youtube_theme () )
Bạn đang áp dụng sai drupal_render()
trong ví dụ của bạn. drupal_render()
giữ nội dung sẽ được hiển thị và hướng dẫn cách hiển thị nội dung trong một mảng để tất cả nội dung có thể được sửa đổi bởi các mô-đun khác, cho đến giây phút cuối cùng trước khi hiển thị. Tất cả mọi thứ được tải trong drupal_render()
đối số &$elements
, đó là đối số cho hàm. drupal_render()
không trả về các phần tử được kết xuất từ các biến được truyền trong các đối số.
Nhìn vào API chủ đề cho một loạt các chức năng sẽ cung cấp HTML cho các yếu tố nội dung khác nhau bao gồm các tệp.
Hàm bạn có thể đang tìm kiếm là file_get_content_headers () , đặt các tiêu đề cho phép tải xuống tệp hoặc (nếu tệp là tệp văn bản hoặc hình ảnh) được xem nội tuyến.
Hàm yêu cầu một đối tượng tệp như được trả về bởi file_load_mult Môn () , file_load () hoặc entity_load ('file') .