Chcę zrobić coś takiego
$fid = 15;
$file = (array)file_load($fid);
$content = drupal_render($file);
echo $content;
A konkretnie ten fid pochodzi z wersji 7.x-2.x modułu medialnego .
Chcę zrobić coś takiego
$fid = 15;
$file = (array)file_load($fid);
$content = drupal_render($file);
echo $content;
A konkretnie ten fid pochodzi z wersji 7.x-2.x modułu medialnego .
Odpowiedzi:
To działa dla mnie. W przypadku filmów za pośrednictwem modułu multimediów:
<?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;
?>
I dla obrazów; to pokazuje, jakie ustawienia wstępne są dostępne ( #style_name
)
<?php
$styles = image_styles();
echo '<pre>' . print_r($styles, TRUE) . '</pre>';
?>
A to wyrenderuje plik
<?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);
?>
Zauważ, że image_load wykonuje operacje we / wy.
I na odwrót; biorąc pod uwagę nazwę pliku, uzyskaj 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
?>
Biorąc pod uwagę kod osadzania mediów, uzyskaj FID.
<?php
$file = media_parse_to_file($embed_code);
if (empty($file->fid)) {
return FALSE;
}
return $file->fid;
?>
$file->filemime = video/youtube
kluczem będzie „media_youtube_video”, który będzie korzystał z funkcji motywu wewnątrz drupal.org/project/media_youtube (patrz media_youtube_theme () )
Źle aplikujesz drupal_render()
w swoim przykładzie. drupal_render()
przechowuje zawartość do wyświetlenia i instrukcje, jak renderować ją w tablicy, aby cała zawartość mogła być modyfikowana przez inne moduły, aż do ostatniej chwili przed wyświetleniem. Wszystko jest ładowane do drupal_render()
argumentu &$elements
, który jest argumentem funkcji. drupal_render()
nie zwraca renderowanych elementów ze zmiennych przekazywanych w argumentach.
W interfejsie API kompozycji znajduje się szereg funkcji, które zapewnią HTML dla różnych elementów treści, w tym plików.
Funkcja, której prawdopodobnie szukasz, to file_get_content_headers () , która ustawia nagłówki pozwalające na pobranie pliku lub (jeśli plik jest plikiem tekstowym lub obrazem) na przeglądanie w linii.
Funkcja wymaga obiektu pliku zwróconego przez file_load_multiple () , file_load () lub entity_load ('file') .