แสดงผลหรือพิมพ์ภาพใน drupal 7 node.tpl?


16

ฉันพยายามที่จะจัดรูปแบบโหนดด้วย tpl และเมื่อฉันพยายามที่จะพิมพ์ภาพฉันไม่สามารถหาเส้นทางของภาพเช่นใน d6 .. ฟังก์ชั่นที่ฉันต้องเรียกภาพออกอย่างถูกต้อง .. ฉันหมายถึงสิ่งที่ชอบชุดรูปแบบ ('')?

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

                )

        )

)

คำตอบ:


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

หากคุณต้องการเปลี่ยนวิธีแสดงรูปภาพ (ขนาด, ลิงค์, ฯลฯ ) ให้ตั้งค่าในแท็บจัดการจอแสดงผลในการตั้งค่าประเภทโหนด

คุณสามารถตั้งค่าล่วงหน้าแคชภาพได้เช่นนี้:

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

แต่นั่นไม่ใช่วิธีที่แนะนำ!

ถ้าคุณต้องการสร้าง URL จาก URI

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

ขอบคุณคำตอบของคุณครอบคลุมทุกสิ่ง สิ่งนี้ควรอยู่ในเอกสาร drupal.org :)
Serjas

เป็นความคิดที่ดีที่จะใช้ LANGUAGE_NONE แทน 'und'
qasimzee

ฉันรู้ว่าฉันกำลังตีม้าที่ตายแล้ว แต่ถ้าคุณใช้วิธีที่สองคุณจะมั่นใจได้อย่างไรว่าคุณจะได้รับผลลัพธ์ที่ไม่ 404
Cameron Kilgore

3

สำหรับผู้ที่ใช้โมดูลfile_entity (อาจมีโมดูลสื่อ ) คุณอาจสงสัยว่าจะแสดงไฟล์ / รูปภาพโดยทางโปรแกรมได้อย่างไร:

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

โดยที่ "field_image" เป็นชื่อเขตข้อมูลของคุณและ "สรุป" คือโหมดมุมมองของคุณ


ใช้งานได้สำหรับฉัน แต่จำเป็นต้องตั้งค่ารูปแบบใน $ image_entity ['file'] ['# style_name'] อีกครั้ง ..
rémy

คุณไม่ควรเข้ารหัสคีย์ภาษา
AlxVallejo

1

หากคุณต้องการแสดงภาพด้วยชุดรูปแบบภาพสำหรับรูปภาพนั้นในการจัดการจอแสดงผล: เพียงพิมพ์ <?php print_render($content['field_image']) ?>

หากคุณต้องการแสดงภาพด้วยสไตล์ภาพอื่น ๆ ที่คุณมีให้: 'sales_album' แล้วพิมพ์:

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

เมื่อใช้โมดูลสนามฉันพบว่าสิ่งนี้ดีกว่า:

ในหน้า - yourcontenttype.tpl.php:

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

using field_view_field () ให้ข้อดีเพิ่มเติมโดยที่หนึ่งสามารถตั้งค่าอาร์เรย์ของการตั้งค่าการแสดงผล:

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

$iในกรณีที่คุณมีภาพหลายภาพที่จะแสดง คุณสามารถใช้สำหรับห่วงเช่น:

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

และ$imageCountมีการประกาศโดยทั่วไปสำหรับลูปเป็น

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

หวังว่านี่จะช่วยได้!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.