render o stampare l'immagine in un drupal 7 node.tpl?


16

Sto provando a tema un nodo con tpl e quando ho provato a stampare l'immagine, non riesco a trovare il percorso dell'immagine come in d6 .. quale funzione devo chiamare per generare correttamente l'immagine .. Intendo qualcosa come tema ('')?

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

                )

        )

)

Risposte:


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

Se si desidera modificare la modalità di visualizzazione dell'immagine (dimensioni, collegamento, ecc.), Impostarli nella scheda Gestisci display nelle impostazioni del tipo di nodo.

Puoi anche fare un preset di imagecache come questo:

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

Ma questo non è il modo consigliato!

se desideri creare un URL dall'URI,

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

grazie, la tua risposta copre tutto. Questo dovrebbe essere nella documentazione di drupal.org :)
— Serjas,

È sempre una buona idea usare LANGUAGE_NONE invece di "und"
— qasimzee,

So che sto battendo un cavallo morto, ma se segui il secondo approccio, come puoi assicurarti di ottenere un risultato che non ha 404?
— Cameron Kilgore,

3

Per coloro che utilizzano il modulo file_entity (forse con il modulo multimediale ), ci si potrebbe chiedere come eseguire il rendering programmatico di file / immagini:

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

Dove "field_image" è il nome del campo e "summary" è la modalità di visualizzazione.


funziona per me, ma avevo bisogno di impostare di nuovo lo stile su $ image_entity ['file'] ['# style_name'] ..
— rémy

Non dovresti hardcode la chiave della lingua.
— AlxVallejo,

1

Se vuoi semplicemente renderizzare l'immagine con lo stile di immagine impostato per quell'immagine nella schermata di gestione: digita <?php print_render($content['field_image']) ?>

Se vuoi visualizzare l'immagine con qualsiasi altro stile di immagine hai SUPPOSE: 'sales_album' quindi digita:

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

Quando si utilizza il ho modulo di campo , ho scoperto che era meglio:

nella pagina - yourcontenttype.tpl.php:

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

l'utilizzo di field_view_field () offre ulteriori vantaggi in base ai quali è possibile impostare una serie di impostazioni di visualizzazione:

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


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

$inel caso abbiate più immagini da visualizzare. Puoi usare un ciclo for come:

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

ed $imageCountè sostanzialmente dichiarato sopra per loop as

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

Spero che sia di aiuto!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.