ฉันกำลังมองหาที่จะทำอะไรเช่นนี้
$fid = 15;
$file = (array)file_load($fid);
$content = drupal_render($file);
echo $content;
ฉันกำลังมองหาที่จะทำอะไรเช่นนี้
$fid = 15;
$file = (array)file_load($fid);
$content = drupal_render($file);
echo $content;
คำตอบ:
มันใช้งานได้สำหรับฉัน สำหรับวิดีโอผ่านโมดูลสื่อ:
<?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;
?>
และสำหรับรูปภาพ สิ่งนี้แสดงให้คุณเห็นว่ามีสถานีใดบ้าง ( #style_name
)
<?php
$styles = image_styles();
echo '<pre>' . print_r($styles, TRUE) . '</pre>';
?>
และสิ่งนี้จะแสดงไฟล์
<?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);
?>
โปรดทราบว่าimage_loadดำเนินการ I / O
และสำหรับสิ่งที่ตรงกันข้าม ให้ชื่อไฟล์ได้รับ 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
?>
ได้รับรหัสฝังสื่อรับ FID
<?php
$file = media_parse_to_file($embed_code);
if (empty($file->fid)) {
return FALSE;
}
return $file->fid;
?>
$file->filemime = video/youtube
คีย์จะจบลงด้วยการเป็น 'media_youtube_video' ซึ่งจะใช้ฟังก์ชันธีมภายในdrupal.org/project/media_youtube (ดูmedia_youtube_theme () )
คุณใช้drupal_render()
ตัวอย่างของคุณไปในทางที่ผิด drupal_render()
เก็บเนื้อหาที่จะแสดงและคำแนะนำสำหรับวิธีการแสดงผลในอาร์เรย์เพื่อให้เนื้อหาทั้งหมดสามารถแก้ไขได้โดยโมดูลอื่น ๆ จนถึงช่วงเวลาสุดท้ายก่อนที่จะแสดง ทุกอย่างถูกโหลดในการdrupal_render()
โต้แย้ง&$elements
ซึ่งเป็นอาร์กิวเมนต์สำหรับฟังก์ชัน drupal_render()
ไม่ส่งคืนองค์ประกอบที่เรนเดอร์จากตัวแปรที่ส่งผ่านในอาร์กิวเมนต์
ดูAPI ธีมสำหรับชุดฟังก์ชันที่จะให้ HTML สำหรับองค์ประกอบเนื้อหาต่าง ๆ รวมถึงไฟล์
ฟังก์ชั่นที่คุณกำลังมองหาคือ file_get_content_headers ()ซึ่งตั้งค่าส่วนหัวสำหรับอนุญาตให้ดาวน์โหลดไฟล์หรือ (หากไฟล์นั้นเป็นไฟล์ข้อความหรือรูปภาพ) ที่ต้องการดูแบบอินไลน์
ฟังก์ชั่นต้องใช้วัตถุไฟล์ที่ส่งกลับโดยfile_load_multiple () , file_load ()หรือentity_load ( 'ไฟล์')