Je cherche à faire quelque chose comme ça
$fid = 15;
$file = (array)file_load($fid);
$content = drupal_render($file);
echo $content;
Et plus précisément, ce fid provient de la version 7.x-2.x du module média .
Je cherche à faire quelque chose comme ça
$fid = 15;
$file = (array)file_load($fid);
$content = drupal_render($file);
echo $content;
Et plus précisément, ce fid provient de la version 7.x-2.x du module média .
Réponses:
Cela fonctionne pour moi. Pour les vidéos via le module média:
<?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;
?>
Et pour les images; cela vous montre quels préréglages sont disponibles ( #style_name
)
<?php
$styles = image_styles();
echo '<pre>' . print_r($styles, TRUE) . '</pre>';
?>
Et cela rendra le fichier
<?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);
?>
Notez que image_load effectue des E / S.
Et pour l'inverse; étant donné un nom de fichier obtenir un 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
?>
Étant donné le code d'intégration des médias, obtenez un FID.
<?php
$file = media_parse_to_file($embed_code);
if (empty($file->fid)) {
return FALSE;
}
return $file->fid;
?>
$file->filemime = video/youtube
alors la clé finira par être 'media_youtube_video' qui utilisera la fonction de thème à l'intérieur de drupal.org/project/media_youtube (voir media_youtube_theme () )
Vous drupal_render()
faites une mauvaise application dans votre exemple. drupal_render()
contient le contenu à afficher et les instructions pour le rendre dans un tableau afin que tout le contenu puisse être modifié par d'autres modules, jusqu'au dernier moment avant l'affichage. Tout est chargé dans l' drupal_render()
argument &$elements
, qui est l'argument de la fonction. drupal_render()
ne renvoie pas les éléments rendus des variables passées en arguments.
Regardez l' API de thème pour une série de fonctions qui fourniront du HTML pour divers éléments de contenu, y compris des fichiers.
La fonction que vous recherchez probablement est file_get_content_headers () , qui définit les en-têtes pour autoriser le téléchargement d'un fichier ou (si le fichier est un fichier texte ou une image) pour être visualisé en ligne.
La fonction nécessite un objet fichier renvoyé par file_load_multiple () , file_load () ou entity_load ('file') .