renderizar ou imprimir imagem em um drupal 7 node.tpl?

16

Estou tentando tema de um nó com tpl e quando tentei imprimir a imagem, não consigo encontrar o caminho da imagem como em d6 .. qual função tenho que chamar para exibir corretamente a imagem .. Quero dizer algo como 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
fonte

Respostas:

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

Se você quiser alterar a forma como a imagem é exibida (dimensões, link, etc.), defina-as na guia Gerenciar exibição nas configurações de tipo de nó.

Você também pode fazer uma predefinição de cache de imagem como esta:

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

Mas essa não é a maneira recomendada!

se você deseja criar um URL a partir do URI,

<img src="<?php print file_create_url($node->field_image[LANGUAGE_NONE][0]['uri']); ?>" />
AyeshK
fonte
obrigado, sua resposta cobre todas as coisas. Esta deve ser na documentação drupal.org :)
Serjas
É sempre uma boa idéia usar LANGUAGE_NONE em vez de 'und'
qasimzee 18/12/2014
Sei que estou vencendo um cavalo morto, mas se você adotar a segunda abordagem, como garantir que obtém um resultado que não é 404?
Cameron Kilgore
3

Para aqueles que usam o módulo file_entity (talvez com o módulo de mídia ), você deve estar se perguntando como renderizar arquivos / imagens programaticamente:

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

Onde "imagem_campo" é o nome do seu campo e "resumo" é o seu modo de exibição.

alexkb
fonte
faz o trabalho para mim, mas necessário para definir o estilo em $ image_entity [ 'file'] [ '# STYLE_NAME'] de novo ..
rémy
Você não deve codificar a chave do idioma.
AlxVallejo
1

Se você deseja simplesmente renderizar a imagem com o estilo de imagem definido para ela na tela de gerenciamento: basta digitar <?php print_render($content['field_image']) ?>

Se você deseja exibir uma imagem com qualquer outro estilo de imagem, SUPPOSE: 'sales_album' digite:

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;
Himanshu Pathak
fonte
1

Ao usar o módulo de campo , achei que esta era melhor:

na página - yourcontenttype.tpl.php:

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

O uso de field_view_field () fornece vantagens adicionais pelas quais é possível definir uma variedade de configurações de exibição:

<?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
fonte
0
$img_url = $node->field_name['und'][$i]['uri'];
print image_style_url("style_name", $img_url);

$ié caso você tenha várias imagens para exibir. Você pode usar um loop for como:

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

e $imageCounté basicamente declarado acima para loop como

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

Espero que isto ajude!

Rajeev Yadav
fonte