Как вывести поле изображения drupal?
Вполне возможно, что я просто ищу помощь в поиске имени функции, которая уже существует в drupal (7), но иногда документация немного сложна для навигации. Надеюсь, кто-то может мне помочь.
У меня есть node, у которого есть настраиваемое поле.
Я работаю в шаблоне field--mycustomcontenttype.tpl.php
, и поэтому пытаюсь найти имя функции PHP, которая выводит и поле изображения со стилями изображения.
mycustomcontenttype
является node со следующим дополнительным полем:
[field_image] => Array
(
[und] => Array
(
[0] => Array
(
[fid] => 51
[alt] => ImageAltText
[title] =>
[width] => 150
[height] => 150
[uid] => 29
[filename] => myimagename.jpg
[uri] => public://myimagename.jpg
[filemime] => image/jpeg
[filesize] => 8812
[status] => 1
[timestamp] => 1339445372
[uuid] => a088ea8f-ddf9-47d1-b013-19c8f8cada07
[metatags] => Array
(
)
)
Итак, я мог отображать изображение с помощью (уродливых) ручных функций, которые принимают значение, найденное в $item['#options']['entity']->field_image
, и выполняет замену public://
для фактического пути к серверу, а затем также возможно, что я собираюсь чтобы загрузить изображение с правильным стилем изображения Drupal (эскиз, пользовательский стиль и т.д.)
К сожалению, я просто не знаю, как называется функция, которая работает примерно так: unknown_function_name_drupal_image_print($item['#options']['entity']->field_image, 'thumnail');
is.
Есть ли кто-нибудь, кто может помочь мне найти это?
Ответы
Ответ 1
Вы ищете image_style_url(style_name, image_url);
Например:
<?='<img src="'.image_style_url('fullwidth', $node->field_page_image['und'][0]['filename']).'" />'?>
ИЗМЕНИТЬ
Как указано, вы также можете установить стиль изображения на странице "Управление отображением" для типа контента, а затем вывести его с помощью рендеринга.
<?php print render($content['field_image']); ?>
Ответ 2
Я бы сделал это, используя комбинацию field_get_items и field_view_value.
Например:
<?php
// In some preprocessor...
$images = field_get_items('node', $node, 'field_image');
if(!empty($images)) {
$image = field_view_value('node', $node, 'field_image', $images[0], array(
'type' => 'image',
'settings' => array(
'image_style' => 'custom_image_style' // could be 'thumbnail'
)
)
);
}
$variables['image'] = $image;
// Now, in your .tpl.php
<?php print render($image); ?>
У меня есть запись о доступе к полю, и именно это здесь.
Удачи.
Ответ 3
Ответ SpaceBeers верен - вы можете распечатать изображение таким образом. Но на стороне Друпала это плохо.
У вас есть язык undefined и напрямую используется только первое поле, если это поле с несколькими значениями.
Кроме того, вы жестко кодируете некоторые из хороших вещей Drupal, такие как изменение стиля изображения с использованием пользовательского интерфейса.
<?php print render($content['field_image']); ?>
Это напечатает изображение с соответствующими размерами (в тегах img), тегами alt и всегда будет уважать то, что вы установили на вкладке "Управление отображением" типа mycustomcontenttype node.
Ответ 4
Я использую это:
print theme('image_style', array('path' => [image uri from field], 'style_name' => [image style]));
Вы также можете включить переменную массива "атрибуты", которая содержит элементы для (например) класса, alt и title. Я думаю, что это лучший вариант, позволяющий вам выбирать стиль изображения, сохраняя при этом рендеринг изображений по умолчанию для Drupal (или вашей темы).
Ответ 5
Вы должны использовать
<?='<img src="'.image_style_url('fullwidth', $node->field_page_image['und'][0]['uri']).'" />'?>
вместо
<?='<img src="'.image_style_url('fullwidth', $node->field_page_image['und'][0]['filename']).'" />'?>
Ответ 6
Я думаю, что ответ Ayesh K - это предпочтительный способ печати поля на странице Drupal. Гораздо проще читать и сохранять любые операции/пресеты, которые вы выполняете с вашим изображением в пользовательском интерфейсе.
Вы можете разбить его, но похоже, что это было бы для узких случаев использования.
Ответ 7
это можно сделать следующим образом:
$style='full_width';
$path=$node->my_img_field['und']['0']['uri'];
$style_url = image_style_url($style, $path);
print "<img src=".file_create_url($style_url)." >";
Ответ 8
$field_image = field_view_field('node', $promoNode, 'field_image');
$variables['promo_image'] = render($field_image);
Отдает:
<div class="field field--name-field-image field--type-image field--label-above">
<div class="field__label">Image: </div>
<div class="field__items">
<div class="field__item even">
<img typeof="foaf:Image"
src="http://domain/sites/domain/files/promo1.png"
width="360"
height="301"
alt="Promotional Image"
title="Promotional Image Title">
</div>
</div>
</div>
Ответ 9
<?php
global $base_url;
$nid=6;//node id
$node=node_load($nid);
echo '<div style="margin-right:350px;">';
echo "<marquee>";
foreach($node->field_image_gallery['und'] as $v){
$image=$v['uri'];
$image_path=explode("public://",$image);
$url_path=$base_url.'/sites/default/files/'.$image_path[1];
echo '<img src="'.$url_path.'" width="100" height="100"> ';
}
echo "</marquee>";
echo "</div>";
?>
Ответ 10
Это помогло мне добавить изображение на страницу результатов поиска:
<?php if ($result['node']-> field_image): ?>
<?php
$search_image_uri = $result['node']-> field_image['und'][0]['uri'];
// assuming that the uri starts with "public://"
$search_image_locate = explode('//', $search_image_uri);
$search_image_filepath = '/sites/actual/path/to/public/' . $search_image_locate[1];
?>
<div class="search-image">
<img src="<?php print $search_image_filepath; ?>" />
</div>
<?php endif; ?>