Rendern oder Drucken von Bildern in einem Drupal 7 node.tpl?


15

Ich versuche, einen Knoten mit tpl zu thematisieren, und als ich versuchte, ein Bild zu drucken, kann ich den Bildpfad wie in d6 nicht finden. Welche Funktion muss ich aufrufen, um das Bild richtig auszugeben. Ich meine so etwas wie ein Thema ('')?

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

                )

        )

)

Antworten:


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

Wenn Sie ändern möchten, wie das Bild angezeigt wird (Abmessungen, Verknüpfung usw.), legen Sie diese auf der Registerkarte Anzeige verwalten in den Knotentypeinstellungen fest.

Sie können auch eine Imagecache-Voreinstellung wie folgt erstellen:

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

Aber das ist nicht der empfohlene Weg!

Wenn Sie URL aus URI erstellen möchten,

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

danke, deine antwort deckt alles ab. Dies sollte in der Dokumentation von drupal.org sein :)
Serjas

Es ist immer eine gute Idee, LANGUAGE_NONE anstelle von 'und' zu verwenden
qasimzee

Ich weiß, dass ich ein totes Pferd besiege, aber wenn Sie den zweiten Ansatz wählen, wie können Sie dann sicherstellen, dass Sie ein Ergebnis erzielen, das nicht 404 ist?
Cameron Kilgore

3

Wenn Sie das Modul file_entity verwenden (möglicherweise mit dem Medienmodul ), fragen Sie sich möglicherweise, wie Sie Dateien / Bilder programmgesteuert rendern können:

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

Dabei ist "field_image" Ihr Feldname und "summary" Ihr Anzeigemodus.


funktioniert für mich, musste aber den Stil für $ image_entity ['file'] ['# style_name'] erneut
festlegen

Sie sollten den Sprachschlüssel nicht fest codieren.
AlxVallejo

1

Wenn Sie das Bild einfach mit dem für dieses Bild festgelegten Bildstil in der Verwaltungsanzeige rendern möchten, geben Sie einfach Folgendes ein <?php print_render($content['field_image']) ?>

Wenn Sie ein Bild mit einem anderen Bildstil anzeigen möchten, verwenden Sie den Befehl SUPPOSE: 'sales_album'. Geben Sie dann Folgendes ein:

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;

0
$img_url = $node->field_name['und'][$i]['uri'];
print image_style_url("style_name", $img_url);

$iist für den Fall, dass Sie mehrere Bilder anzeigen möchten. Sie können eine for-Schleife wie folgt verwenden:

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

und $imageCountist im Grunde oben für Schleife als deklariert

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

Hoffe das hilft!


0

Bei der Verwendung des Feldmoduls stellte ich fest, dass dies besser war:

in page - yourcontenttype.tpl.php:

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

Die Verwendung von field_view_field () bietet zusätzliche Vorteile, wobei eine Reihe von Anzeigeeinstellungen festgelegt werden können:

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.