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

しかし、それは推奨される方法ではありません!

URIからURLを構築する場合、

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

ありがとう、あなたの答えはすべてのものをカバーしています。これはdrupal.orgのドキュメントにあるはずです:)
Serjas

'und'の代わりにLANGUAGE_NONEを使用することは常に良い考えです
qasimzee 14

私は死んだ馬を打ち負かしていることを知っていますが、2番目のアプローチを取る場合、404ではない結果を得ることができますか?
キャメロンキルゴア14

3

使用する人のためにfile_entityの(おそらくでモジュールをメディアモジュール)、あなたはどのようにプログラムで、ファイル/画像をレンダリングするために疑問に思うことがあります。

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

ここで、「field_image」はフィールド名で、「summary」は表示モードです。


私のための作業を行いますが、$ image_entityにスタイルを設定するために必要な[「ファイル」] [「#のstyle_nameに」]再び...
レミー

言語キーをハードコーディングしないでください。
AlxVallejo

1

管理表示でその画像に設定された画像スタイルで画像を単にレンダリングしたい場合:入力するだけ <?php print_render($content['field_image']) ?>

SUPPOSEがある他の画像スタイルで画像を表示する場合: '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);?>
?>

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ループを使用できます。

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.