web-dev-qa-db-ja.com

画像フィールドの正しいURLを取得するにはどうすればよいですか?

次のコードを使用して画像フィールドのURLを印刷しようとしています。

<img src="<?php echo $field_company_logo['und'][0]['uri']; ?>" alt="<?php echo $company[0]['#markup']; ?>" />

このコードでは、sites/default/files/company-logos/image.pngが必要なときに、public://company-logos/image.pngのようなURIが返されます。

画像パスを印刷するためにどのコードを使用する必要がありますか(つまり、sites/default/files/company-logos/image.png)?

7
Joe Taylor

drupal_realpath() 関数を使用して、URIを実際のファイルシステムパスに変換します。

_echo drupal_realpath($field_company_logo['und'][0]['uri']);
_

file_create_url() を使用して、ローカルファイルパスではなく、画像の実際のURLを取得することもできます。

そして、画像をレンダリングする正しい方法はtheme_image()を通してそれを実行することです:

_echo theme('image', array(
  'path' => file_create_url($field_company_logo['und'][0]['uri']),
  'alt' => check_plain($company[0]['#markup']),
));
_

また、フィールドデータへのアクセス方法は、推奨される方法ではありません。 field_get_items() および Rendering Drupal Fields(right way) ブログエントリの詳細な例をご覧ください。

20
Yuriy Babenko

文字通り、URIを実際のURLに変換したいだけの場合、次のように使用される file_create_url() 関数が必要です。

$url = file_create_url($uri);

しかし、Yuriy Babenkoが提案するように、テーマ関数を使用する方が簡単な場合があります。

$image_vars = array(
  'path' => $field_company_logo['und'][0]['uri'],
  'alt' => $company[0]['#markup'],
);
echo theme('image', $image_vars);

画像のサイズを変更したい場合は、代わりに theme_image_style() を使用するように簡単に調整できます。

10
Les Lim

Image URL Formatter モジュールを使用できます。 URLのみを取得するためにフィールド形式を変更できます。

Drupal field settings

おまけ:ビューでも機能します:

enter image description here

2
Jsalinas