сделать или распечатать изображение в друпале 7 node.tpl?

16

Я пытаюсь создать тему для узла с помощью tpl, и когда я пытался напечатать изображение, я не могу найти путь к изображению, как в d6 ... какую функцию мне нужно вызвать для правильного вывода изображения ... Я имею в виду что-то вроде theme ('')?

Array
(
    [und] => Array
        (
            [0] => Array
                (
                    [fid] => 13
                    [alt] => 
                    [title] => 
                    [width] => 416
                    [height] => 335
                    [uid] => 1
                    [filename] => Capture2.PNG
                    [uri] => public://Capture2.PNG
                    [filemime] => image/png
                    [filesize] => 215377
                    [status] => 1
                    [timestamp] => 1346837738
                    [rdf_mapping] => Array
                        (
                        )

                )

        )

)
Serjas
источник

Ответы:

33
<?php print render($content['field_image']); ?>

Если вы хотите изменить способ отображения изображения (размеры, ссылки и т. Д.), Установите их на вкладке «Управление отображением» в настройках типа узла.

Вы также можете сделать пресет для imagecache следующим образом:

<?php
print theme('image_style', array('path' => $node->field_image[LANGUAGE_NONE][0]['uri'], 'style_name' => [STYLE NAME]));
?>

Но это не рекомендуемый способ!

если вы хотите построить URL из URI,

<img src="<?php print file_create_url($node->field_image[LANGUAGE_NONE][0]['uri']); ?>" />
AyeshK
источник
спасибо, ваш ответ охватывает все. Это должно быть в документации на drupal.org :)
Serjas
Всегда полезно использовать LANGUAGE_NONE вместо «und»
qasimzee
Я знаю, что бью мертвую лошадь, но если вы выберете второй подход, как вы можете быть уверены, что получите результат, который не соответствует 404?
Кэмерон Килгор
3

Для тех, кто использует модуль file_entity (возможно, с медиа- модулем), вам может быть интересно, как программно визуализировать файлы / изображения:

$image = (object) $node->field_image[ LANGUAGE_NONE ][0];
$image_entity = file_view($image, "summary");
echo drupal_render($image_entity);

Где «field_image» - это имя вашего поля, а «summary» - ваш режим просмотра.

alexkb
источник
работает для меня, но необходимо снова установить стиль для $ image_entity ['file'] ['# style_name'] ..
rémy
Вы не должны жестко кодировать языковой ключ.
AlxVallejo
1

Если вы хотите просто визуализировать изображение с стилем изображения, установленным для этого изображения, в управлении отображением: Просто введите <?php print_render($content['field_image']) ?>

Если вы хотите отобразить изображение с любым другим стилем изображения, у вас есть SUPPOSE: 'sales_album', затем введите:

list($albumImage) = field_get_items('node', $album, 'uc_product_image');

$albumImageUrl = file_create_url($albumImage['uri']);

$style_array = array('path' => $albumImage['uri'], 'style_name' => 'sales_album');

$render_album_image = theme('image_style', $style_array);

print $render_album_image;
Химаншу Патхак
источник
1

При использовании модуля поля я обнаружил, что это было лучше:

на странице - yourcontenttype.tpl.php:

<?php
  $this_field_image = field_view_field('node',$node,'field_image');
  print render($this_field_image);?>
?>

использование field_view_field () обеспечивает дополнительные преимущества, благодаря которым можно установить массив настроек отображения:

<?php
  $hide_labels = array('label'=>'hidden');
  $this_field_image = field_view_field('node',$node,'field_image', $hide_labels);
  print render($this_field_image);?>
?>

https://api.drupal.org/api/drupal/modules%21field%21field.module/function/field_view_field/7.x

n8thanael
источник
0
$img_url = $node->field_name['und'][$i]['uri'];
print image_style_url("style_name", $img_url);

$iв случае, если у вас есть несколько изображений для отображения. Вы можете использовать цикл как:

for($i=0;$i < $imageCount; $i++) { /*the above code*/ }

и $imageCountв основном объявлено выше для цикла как

$images = array();<br>
$imageCount= count($node->field_image['und']);

Надеюсь это поможет!

Раджив Ядав
источник