次のコードを使用して画像フィールドの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)?
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) ブログエントリの詳細な例をご覧ください。
文字通り、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() を使用するように簡単に調整できます。
Image URL Formatter モジュールを使用できます。 URLのみを取得するためにフィールド形式を変更できます。
おまけ:ビューでも機能します: