20

drupal (7) 内に既に存在する関数の名前を見つけるためのヘルプを探しているだけの可能性は十分にありますが、ドキュメントをナビゲートするのが少し難しい場合があります。うまくいけば、誰かが私を助けることができます。

カスタム フィールドを持つノードがあります。

私はテンプレート内で作業しているfield--mycustomcontenttype.tpl.phpので、出力する PHP 関数の名前と画像スタイルを含む画像フィールドを見つけようとしています。

mycustomcontenttype次の追加フィールドを持つ NODE です。

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

したがって、で見つかった値を取得し、実際のサーバー パスを置き換える(醜い) 手巻き関数を使用して画像を表示できます。また、正しいパスで画像をロードすることもできます。 drupal イメージ スタイル (サムネイル、カスタム スタイルなど)$item['#options']['entity']->field_imagepublic://

悲しいことに、次のように機能する関数の名前が何であるかはわかりませんunknown_function_name_drupal_image_print($item['#options']['entity']->field_image, 'thumnail');

これを見つけるのを手伝ってくれる人はいますか?

4

10 に答える 10

23

あなたは探しているimage_style_url(style_name, image_url);

例えば:

<?='<img src="'.image_style_url('fullwidth', $node->field_page_image['und'][0]['filename']).'" />'?>

編集

指摘したように、コンテンツ タイプの [表示の管理] ページで画像スタイルを設定し、render を使用して出力することもできます。

<?php print render($content['field_image']); ?>
于 2012-06-21T15:49:20.400 に答える
14

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

フィールドへのアクセスと、まさにここにあることについて書いています。

幸運を。

于 2013-04-01T13:48:15.950 に答える
12

SpaceBeers の答えは正しいです。その方法で画像を印刷できます。しかし、Drupal 側では、それは悪いことです。言語が定義されておらず、複数値フィールドの場合は最初のフィールドのみを直接使用しています。また、UI を使用した画像スタイルの変更など、Drupal の優れた機能の一部をハードコーディングしています。

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

これにより、適切な寸法 (img タグ内) と alt タグを使用して画像が印刷され、mycustomcontenttype ノード タイプの [表示の管理] タブで設定した内容が常に尊重されます。

于 2012-06-21T16:37:50.627 に答える
8

私はこれを使用します:

print theme('image_style', array('path' => [image uri from field], 'style_name' => [image style]));

クラス、alt、タイトルなどの要素を含む「属性」配列変数を含めることもできます。これは、Drupal (またはテーマ) のデフォルトの画像レンダリングを使用しながら、画像スタイルを選択できるようにするためのより良いオプションだと思います。

于 2012-06-22T01:14:57.653 に答える
3

使用する必要があります

<?='<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']).'" />'?>
于 2013-10-07T17:02:15.007 に答える
1

Ayesh K の答えは、フィールドをページに出力するための推奨される Drupal の方法だと思います。はるかに読みやすく、UI で画像に対して行った操作/プリセットを保持します。

分割することはできますが、それは狭いユースケース向けのようです。

于 2012-06-21T17:22:07.193 に答える
0

これはそのように行うことができます:

   $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)." >";
于 2015-10-05T13:53:55.447 に答える
-2

これは、検索結果ページに画像を追加するのに役立ちました。

<?php if ($result['node']-> field_image): ?>
  <?php
  $search_image_uri = $result['node']-> field_image['und'][0]['uri'];
  // assuming that the uri starts with "public://"
  $search_image_locate = explode('//', $search_image_uri);
  $search_image_filepath = '/sites/actual/path/to/public/' . $search_image_locate[1];
  ?>
  <div class="search-image">
    <img src="<?php print $search_image_filepath; ?>" />
  </div>
<?php endif; ?>
于 2014-05-23T19:07:21.267 に答える