membuat atau mencetak gambar dalam drupal 7 node.tpl?

16

Saya mencoba untuk tema simpul dengan tpl dan ketika saya mencoba untuk mencetak gambar, saya tidak dapat menemukan jalur gambar seperti di d6 .. yang berfungsi saya harus memanggil untuk menghasilkan gambar dengan benar .. Maksud saya sesuatu seperti 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
                        (
                        )

                )

        )

)
Serja
sumber

Jawaban:

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

Jika Anda ingin mengubah cara gambar ditampilkan (dimensi, tautan, dll), atur di tab Kelola Tampilan di pengaturan jenis simpul.

Anda juga dapat melakukan preset imagecache seperti ini:

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

Tapi itu bukan cara yang disarankan!

jika Anda ingin membuat URL dari URI,

<img src="<?php print file_create_url($node->field_image[LANGUAGE_NONE][0]['uri']); ?>" />
AyeshK
sumber
terima kasih, jawaban Anda mencakup semua hal. Ini harus dalam dokumentasi drupal.org :)
Serjas
Itu selalu merupakan ide yang baik untuk menggunakan LANGUAGE_NONE alih-alih 'und'
qasimzee
Saya tahu saya mengalahkan kuda mati, tetapi jika Anda mengambil pendekatan kedua, bagaimana Anda bisa meyakinkan Anda mendapatkan hasil yang tidak 404?
Cameron Kilgore
3

Bagi mereka yang menggunakan modul file_entity (mungkin dengan modul media ), Anda mungkin bertanya-tanya bagaimana cara membuat file / gambar secara program:

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

Di mana "field_image" adalah nama bidang Anda, dan "ringkasan" adalah mode tampilan Anda.

alexkb
sumber
tidak bekerja untuk saya, tetapi diperlukan untuk mengatur gaya pada $ image_entity ['file'] ['# style_name'] lagi ..
rémy
Anda tidak boleh meng-hardcode kunci bahasa.
AlxVallejo
1

Jika Anda ingin merender gambar dengan gaya gambar yang diatur untuk gambar itu di layar kelola: Cukup ketik <?php print_render($content['field_image']) ?>

Jika Anda ingin menampilkan gambar dengan gaya gambar lain yang Anda miliki SUPPOSE: 'sales_album', ketikkan:

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
sumber
1

Saat menggunakan modul lapangan , saya menemukan ini lebih baik:

di halaman - yourcontenttype.tpl.php:

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

menggunakan field_view_field () memberikan keuntungan tambahan dimana seseorang dapat mengatur larik pengaturan tampilan:

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

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

$ijika Anda memiliki beberapa gambar untuk ditampilkan. Anda dapat menggunakan for for seperti:

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

dan $imageCountpada dasarnya dinyatakan di atas untuk loop sebagai

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

Semoga ini membantu!

Rajeev Yadav
sumber