Ich versuche so etwas zu machen
$fid = 15;
$file = (array)file_load($fid);
$content = drupal_render($file);
echo $content;
Und speziell diese ID stammt aus der Version 7.x-2.x des Medienmoduls .
Ich versuche so etwas zu machen
$fid = 15;
$file = (array)file_load($fid);
$content = drupal_render($file);
echo $content;
Und speziell diese ID stammt aus der Version 7.x-2.x des Medienmoduls .
Antworten:
Das funktioniert bei mir. Für Videos über das Medienmodul:
<?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;
?>
Und für Bilder; Dies zeigt Ihnen, welche Voreinstellungen verfügbar sind ( #style_name
)
<?php
$styles = image_styles();
echo '<pre>' . print_r($styles, TRUE) . '</pre>';
?>
Und das wird die Datei rendern
<?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);
?>
Beachten Sie, dass image_load I / O ausführt.
Und für das Gegenteil; einen Dateinamen gegeben bekommen eine 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
?>
Erhalten Sie einen FID, wenn Sie den Einbettungscode für das Medium angeben.
<?php
$file = media_parse_to_file($embed_code);
if (empty($file->fid)) {
return FALSE;
}
return $file->fid;
?>
$file->filemime = video/youtube
der Schlüssel dann "media_youtube_video" ist, wird die Theme-Funktion in drupal.org/project/media_youtube verwendet (siehe media_youtube_theme () )
Sie sind drupal_render()
in Ihrem Beispiel falsch . drupal_render()
Enthält den anzuzeigenden Inhalt und die Anweisungen zum Rendern in einem Array, sodass der gesamte Inhalt bis zum letzten Moment vor der Anzeige von anderen Modulen geändert werden kann. Alles wird in das drupal_render()
Argument geladen &$elements
, das das Argument für die Funktion ist. drupal_render()
gibt keine gerenderten Elemente von Variablen zurück, die in Argumenten übergeben wurden.
In der Themen-API finden Sie eine Reihe von Funktionen, die HTML für verschiedene Inhaltselemente, einschließlich Dateien, bereitstellen.
Die Funktion, nach der Sie wahrscheinlich suchen, ist file_get_content_headers () , mit der die Überschriften festgelegt werden , mit denen das Herunterladen einer Datei oder (wenn die Datei eine Textdatei oder ein Bild ist) das Anzeigen inline ermöglicht wird.
Für die Funktion ist ein Dateiobjekt erforderlich, das von file_load_multiple () , file_load () oder entity_load ('file') zurückgegeben wird .