Estoy buscando hacer algo como esto
$fid = 15;
$file = (array)file_load($fid);
$content = drupal_render($file);
echo $content;
Y específicamente este fid es de la versión 7.x-2.x del módulo de medios .
Estoy buscando hacer algo como esto
$fid = 15;
$file = (array)file_load($fid);
$content = drupal_render($file);
echo $content;
Y específicamente este fid es de la versión 7.x-2.x del módulo de medios .
Respuestas:
Esto funciona para mi. Para videos a través del módulo de medios:
<?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;
?>
Y para imágenes; esto le muestra qué ajustes preestablecidos están disponibles ( #style_name
)
<?php
$styles = image_styles();
echo '<pre>' . print_r($styles, TRUE) . '</pre>';
?>
Y esto representará el archivo
<?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);
?>
Tenga en cuenta que image_load realiza E / S.
Y por el reverso; dado un nombre de archivo obtener 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
?>
Dado el código de inserción de medios, obtenga un FID.
<?php
$file = media_parse_to_file($embed_code);
if (empty($file->fid)) {
return FALSE;
}
return $file->fid;
?>
$file->filemime = video/youtube
la clave terminará siendo 'media_youtube_video', que usará la función de tema dentro de drupal.org/project/media_youtube (ver media_youtube_theme () )
Estás aplicando mal drupal_render()
tu ejemplo. drupal_render()
contiene el contenido que se mostrará y las instrucciones sobre cómo representarlo en una matriz para que otros módulos puedan modificar todo el contenido, hasta el último momento antes de mostrarlo. Todo se carga en el drupal_render()
argumento &$elements
, que es el argumento de la función. drupal_render()
no devuelve elementos renderizados de variables pasadas en argumentos.
Mire la API del tema para ver una serie de funciones que proporcionarán HTML para varios elementos de contenido, incluidos los archivos.
La función que probablemente esté buscando es file_get_content_headers () , que establece los encabezados para permitir la descarga de un archivo, o (si el archivo es un archivo de texto o una imagen) para verse en línea.
La función requiere un objeto de archivo devuelto por file_load_multiple () , file_load () o entity_load ('file') .