bir drupal 7 node.tpl görüntü render veya yazdırmak?


16

Ben tpl ile bir düğüm tema çalışıyorum ve görüntü yazdırmaya çalıştığımda, ben d6 gibi görüntü yolunu bulamıyorum .. düzgün görüntü çıktısı için çağırmak zorunda hangi fonksiyon .. tema ('') gibi bir şey demek?

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

                )

        )

)

Yanıtlar:


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

Görüntünün nasıl görüntüleneceğini değiştirmek istiyorsanız (boyutlar, bağlantı vb.), Düğüm tipi ayarlarındaki Görüntüyü Yönet sekmesinde ayarlayın.

Bunun gibi bir imagecache hazır ayarı da yapabilirsiniz:

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

Ama önerilen yol bu değil!

URI'den URL oluşturmak istiyorsanız,

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

teşekkürler, cevabınız her şeyi kapsar. Bu drupal.org belgelerinde olmalıdır :)
Serjas

'Und' yerine LANGUAGE_NONE kullanmak her zaman iyi bir fikirdir
qasimzee

Ölü bir atı dövdüğümü biliyorum, ama ikinci yaklaşımı uygularsan, 404 olmayan bir sonuç almanı nasıl sağlayabilirsin?
Cameron Kilgore

3

File_entity modülünü kullananlar için (belki de medya modülüyle birlikte), dosyaları / görüntüleri programlı olarak nasıl oluşturacağınızı merak ediyor olabilirsiniz:

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

"Field_image" alan adınız, "özet" ise görüntüleme modunuzdur.


benim için çalışıyor, ancak stili tekrar $ image_entity ['file'] ['# style_name'] üzerinde ayarlamanız gerekiyor ..
rémy

Dil anahtarını sabit kodlamamalısınız.
AlxVallejo

1

Görüntüyü, yönetilen görüntüde o görüntü için ayarlanan görüntü stili ile oluşturmak istiyorsanız: Sadece yazın <?php print_render($content['field_image']) ?>

Görüntüyü başka bir görüntü stiliyle görüntülemek istiyorsanız SUPPOSE: 'sales_album' yazın ve şunu yazın:

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

Alan modülünü kullanırken, bunun daha iyi olduğunu gördüm:

sayfada - yourcontenttype.tpl.php:

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

field_view_field () kullanılması, bir dizi görüntü ayarı ayarlanabileceği ek avantajlar sağlar:

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

$igörüntülenecek birden fazla görüntünüz olması durumunda. Şunun için bir for döngüsü kullanabilirsiniz:

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

ve $imageCounttemelde döngü için yukarıda

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

Bu yardımcı olur umarım!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.