web-dev-qa-db-fra.com

rendre ou imprimer une image dans un drupal 7 node.tpl?

J'essaie de thème un nœud avec tpl et quand j'ai essayé d'imprimer l'image, je ne peux pas trouver le chemin de l'image comme dans d6 .. quelle fonction je dois appeler pour sortir correctement l'image .. Je veux dire quelque chose comme le thème ('')?

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
                        (
                        )

                )

        )

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

Si vous souhaitez modifier la façon dont l'image est affichée (dimensions, lien, etc.), définissez-les dans l'onglet Gérer l'affichage dans les paramètres de type de nœud.

Vous pouvez également faire un préréglage imagecache comme celui-ci:

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

Mais ce n'est pas la voie recommandée!

si vous souhaitez créer une URL à partir de l'URI,

<img src="<?php print file_create_url($node->field_image[LANGUAGE_NONE][0]['uri']); ?>" />
34
AyeshK

Pour ceux qui utilisent le module file_entity (peut-être avec le module media ), vous vous demandez peut-être comment rendre par programme des fichiers/images:

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

Où "field_image" est le nom de votre champ et "summary" est votre mode d'affichage.

3
alexkb

Lors de l'utilisation du module de terrain , j'ai trouvé que c'était mieux:

dans la page - yourcontenttype.tpl.php:

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

l'utilisation de field_view_field () offre des avantages supplémentaires grâce auxquels on peut définir un tableau de paramètres d'affichage:

<?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

1
n8thanael

Si vous souhaitez simplement rendre l'image avec le style d'image défini pour cette image dans l'affichage de gestion: il suffit de taper <?php print_render($content['field_image']) ?>

Si vous souhaitez afficher l'image avec un autre style d'image, vous avez SUPPOSE: 'sales_album', puis tapez:

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

$i est dans le cas où vous avez plusieurs images à afficher. Vous pouvez utiliser une boucle for comme:

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

et $imageCount est essentiellement déclaré ci-dessus pour la boucle comme

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

J'espère que cela t'aides!

0
Rajeev Yadav