drupal(7)内に既に存在する関数の名前を見つけるための助けを探しているだけかもしれませんが、ドキュメントをナビゲートするのが少し難しい場合があります。私。
カスタムフィールドを持つノードがあります。
私はテンプレート_field--mycustomcontenttype.tpl.php
_内で作業しているので、画像スタイルの出力と画像フィールドを持つPHP関数の名前を見つけようとしています。
mycustomcontenttype
は、次の追加フィールドを持つノードです。
_[field_image] => Array
(
[und] => Array
(
[0] => Array
(
[fid] => 51
[alt] => ImageAltText
[title] =>
[width] => 150
[height] => 150
[uid] => 29
[filename] => myimagename.jpg
[uri] => public://myimagename.jpg
[filemime] => image/jpeg
[filesize] => 8812
[status] => 1
[timestamp] => 1339445372
[uuid] => a088ea8f-ddf9-47d1-b013-19c8f8cada07
[metatags] => Array
(
)
)
_
したがって、could _$item['#options']['entity']->field_image
_で見つかった値を取り、実際のサーバーパスの_public://
_の置換を行う(ugい)ハンドロール関数を使用してイメージを表示します。また、正しいdrupal画像スタイル(サムネイル、カスタムスタイルなど)で画像をロードすることもできます。
悲しいことに、私はただunknown_function_name_drupal_image_print($item['#options']['entity']->field_image, 'thumnail');
のような機能をする関数の名前が何なのかわかりません。
これを見つけるのを手伝ってくれる人はいますか?
あなたが探している image_style_url(style_name, image_url);
例えば:
<?='<img src="'.image_style_url('fullwidth', $node->field_page_image['und'][0]['filename']).'" />'?>
[〜#〜] edit [〜#〜]
指摘したように、コンテンツタイプの[表示の管理]ページで画像スタイルを設定し、レンダリングを使用して出力することもできます。
<?php print render($content['field_image']); ?>
field_get_items と field_view_value の組み合わせを使用してこれを行います。
例えば:
<?php
// In some preprocessor...
$images = field_get_items('node', $node, 'field_image');
if(!empty($images)) {
$image = field_view_value('node', $node, 'field_image', $images[0], array(
'type' => 'image',
'settings' => array(
'image_style' => 'custom_image_style' // could be 'thumbnail'
)
)
);
}
$variables['image'] = $image;
// Now, in your .tpl.php
<?php print render($image); ?>
私は、フィールドアクセスと、まさにこのことについて書いています here 。
幸運を。
SpaceBeersの答えは正しいです-あなたはそのように画像を印刷することができます。しかし、Drupal側では、悪い。言語が未定義で、複数値フィールドの場合は最初のフィールドのみを直接使用している。また、DrupalのニースなものUIを使用して画像スタイルを変更します。
<?php print render($content['field_image']); ?>
これにより、イメージが適切なサイズ(imgタグ内)、altタグで印刷され、mycustomcontenttypeノードタイプの[表示の管理]タブで設定した内容が常に尊重されます。
私はこれを使用します:
print theme('image_style', array('path' => [image uri from field], 'style_name' => [image style]));
また、クラス、alt、タイトルの要素を含む「attributes」配列変数を含めることもできます。これは、Drupal(またはテーマ)のデフォルトの画像レンダリングを使用しながら、画像スタイルの選択を可能にするためのより良いオプションだと思います。
あなたが使用する必要があります
<?='<img src="'.image_style_url('fullwidth', $node->field_page_image['und'][0]['uri']).'" />'?>
の代わりに
<?='<img src="'.image_style_url('fullwidth', $node->field_page_image['und'][0]['filename']).'" />'?>
Ayesh Kの答えは、フィールドをページに印刷するのに好ましいDrupalの方法です。はるかに読みやすく、UIで画像に対して行った操作/プリセットを保持します。
あなたはそれを分割することができますが、それは狭いユースケースのためになるようです。
<?php
global $base_url;
$nid=6;//node id
$node=node_load($nid);
echo '<div style="margin-right:350px;">';
echo "<Marquee>";
foreach($node->field_image_gallery['und'] as $v){
$image=$v['uri'];
$image_path=explode("public://",$image);
$url_path=$base_url.'/sites/default/files/'.$image_path[1];
echo '<img src="'.$url_path.'" width="100" height="100"> ';
}
echo "</Marquee>";
echo "</div>";
?>
$field_image = field_view_field('node', $promoNode, 'field_image');
$variables['promo_image'] = render($field_image);
レンダリング:
<div class="field field--name-field-image field--type-image field--label-above">
<div class="field__label">Image: </div>
<div class="field__items">
<div class="field__item even">
<img typeof="foaf:Image"
src="http://domain/sites/domain/files/promo1.png"
width="360"
height="301"
alt="Promotional Image"
title="Promotional Image Title">
</div>
</div>
</div>
注:Labelをに設定することで、フィールドのコンテンツタイプのManage-Display設定でlabel-aboveクラスを削除できますが、現在は機能しないため、CSSを使用して単にを非表示にします。 field__labelクラス。
これはそのようにすることができます:
$style='full_width';
$path=$node->my_img_field['und']['0']['uri'];
$style_url = image_style_url($style, $path);
print "<img src=".file_create_url($style_url)." >";