it-swarm.asia

بالنظر إلى معرف الملف (fid) كيف يمكنني الحصول على HTML الذي يمثل هذا fid؟

أنا أتطلع لفعل شيء كهذا

$fid = 15;
$file = (array)file_load($fid);
$content = drupal_render($file);
echo $content;

وبالتحديد هذا fid من الإصدار 7.x-2.x من وحدة الوسائط .

15
mikeytown2

هذا يناسبني. لمقاطع الفيديو عبر وحدة الوسائط:

<?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;
?>
15
mikeytown2

إنك تسئ تطبيق drupal_render() في مثالك. drupal_render() يحتفظ بالمحتوى المراد عرضه والتعليمات الخاصة بكيفية عرضه في مصفوفة بحيث يمكن تعديل كل المحتوى بواسطة وحدات أخرى ، حتى آخر لحظة قبل العرض. يتم تحميل كل شيء في الوسيطة drupal_render()&$elements_ ، وهي الوسيطة الخاصة بالدالة. drupal_render() لا يُرجع العناصر المقدمة من المتغيرات التي تم تمريرها في الوسيطات.

انظر إلى theme API لسلسلة من الوظائف التي ستوفر HTML لعناصر المحتوى المختلفة بما في ذلك الملفات.

7
Ashlar

الوظيفة التي ربما تبحث عنها هي file_get_content_headers () ، والتي تحدد الرؤوس للسماح بتنزيل الملف ، أو (إذا كان الملف ملفًا نصيًا ، أو صورة) ليتم عرضها بشكل مضمن.

تتطلب الوظيفة كائن ملف كما تم إرجاعه بواسطة file_load_multiple () أو file_load () أو الكيان_الحمل ('file') .

3
kiamlaluno