Saya ingin melakukan sesuatu seperti ini
$fid = 15;
$file = (array)file_load($fid);
$content = drupal_render($file);
echo $content;
Dan secara khusus fid ini berasal dari versi 7.x-2.x dari modul media .
Saya ingin melakukan sesuatu seperti ini
$fid = 15;
$file = (array)file_load($fid);
$content = drupal_render($file);
echo $content;
Dan secara khusus fid ini berasal dari versi 7.x-2.x dari modul media .
Jawaban:
Ini bekerja untuk saya. Untuk video melalui modul media:
<?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;
?>
Dan untuk gambar; ini menunjukkan kepada Anda preset apa yang tersedia ( #style_name
)
<?php
$styles = image_styles();
echo '<pre>' . print_r($styles, TRUE) . '</pre>';
?>
Dan ini akan membuat file
<?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);
?>
Perhatikan bahwa image_load melakukan I / O.
Dan sebaliknya; diberi nama file mendapatkan 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
?>
Diberi kode embed media, dapatkan FID.
<?php
$file = media_parse_to_file($embed_code);
if (empty($file->fid)) {
return FALSE;
}
return $file->fid;
?>
$file->filemime = video/youtube
kemudian kuncinya akan berakhir menjadi 'media_youtube_video' yang akan menggunakan fungsi tema di dalam drupal.org/project/media_youtube (lihat media_youtube_theme () )
Anda salah menerapkan drupal_render()
dalam contoh Anda. drupal_render()
menyimpan konten yang akan ditampilkan dan instruksi cara merendernya dalam array sehingga semua konten dapat dimodifikasi oleh modul lain, hingga saat-saat terakhir sebelum ditampilkan. Semuanya dimuat dalam drupal_render()
argumen &$elements
, yang merupakan argumen untuk fungsi. drupal_render()
tidak mengembalikan elemen yang diberikan dari variabel yang dikirimkan dalam argumen.
Lihatlah API tema untuk serangkaian fungsi yang akan menyediakan HTML untuk berbagai elemen konten termasuk file.
Fungsi yang mungkin Anda cari adalah file_get_content_headers () , yang mengatur header untuk memungkinkan file untuk diunduh, atau (jika file tersebut adalah file teks, atau gambar) untuk dilihat inline.
Fungsi ini memerlukan objek file yang dikembalikan oleh file_load_multiple () , file_load () , atau entity_load ('file') .