फ़ाइल आईडी (एफआईडी) को देखते हुए मैं उस HTML को कैसे प्राप्त कर सकता हूं जो उस fid का प्रतिनिधित्व करता है?


जवाबों:


15

यह मेरे लिए काम करता है। मीडिया मॉड्यूल के माध्यम से वीडियो के लिए:

<?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 करता है।

और रिवर्स के लिए; फ़ाइल नाम दिया गया एक फ़िड।

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

क्या आप कृपया "$ key = 'media_' की व्याख्या कर सकते हैं। पदार्थ ($ फ़ाइल-> फिल्म निर्माण, 6)। '_vide';" ? मैं fid से एक वीडियो प्रस्तुत करने की कोशिश कर रहा हूँ। मैं किसी भी वीडियो क्षेत्र का उपयोग नहीं करना चाहता और मेरे पास कोई कस्टम वीडियो प्रारूप नहीं है।
तेजस वैद्य

1
@TejasVaidya अगर $file->filemime = video/youtubeतब कुंजी 'Media_youtube_video' हो जाएगी, जो drupal.org/project/media_youtube के अंदर थीम फ़ंक्शन का उपयोग करेगी (देखें Media_youtube_theme () )
mikeytown2

7

आप drupal_render()अपने उदाहरण में गलत कर रहे हैं । drupal_render()प्रदर्शित की जाने वाली सामग्री रखती है और एक सरणी में इसे कैसे प्रस्तुत करना है इसके लिए निर्देश ताकि सभी सामग्री को अन्य मॉड्यूल द्वारा संशोधित किया जा सके, प्रदर्शित करने से पहले अंतिम क्षण तक। drupal_render()तर्क में सब कुछ भरा हुआ है &$elements, जो फ़ंक्शन के लिए तर्क है। drupal_render()तर्कों में पारित चर से प्रदान किए गए तत्व वापस नहीं आते हैं।

पर देखो विषय एपीआई कार्यों की एक श्रृंखला है कि फ़ाइलों सहित विभिन्न सामग्री तत्वों के लिए HTML प्रदान करेगा के लिए।


यह कहने के लिए नफरत है लेकिन debug_backtrace ने मुझे अन्यथा कहा। इसलिए मैं अपने उत्तर / प्रश्न में drupal_render के साथ गया था ।
mikeytown2

3

आप जिस फ़ंक्शन की तलाश कर रहे हैं, वह file_get_content_headers () है , जो किसी फ़ाइल को डाउनलोड करने की अनुमति देने के लिए हेडर सेट करता है, या (यदि फ़ाइल एक पाठ फ़ाइल है, या कोई छवि) इनलाइन देखी जा सकती है।

फ़ंक्शन को file_load_multiple () , file_load () , या unit_load ('फ़ाइल') द्वारा दिए गए फ़ाइल ऑब्जेक्ट की आवश्यकता होती है ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.