2017-01-20 5 views
1

フィールドコレクション内のイメージURLにアクセスしようとしていますが、アクセス方法はわかりません。私は私がターゲットにしていますフィールドコレクションにアクセスするための「field_get_items」メソッドを持っているので、私は困惑していますフィールドコレクション内のアイテムへのアクセス方法(Drupal 7)

['field_text_and_image'][0]['entity']['field_collection_item'][2474]['field_about_accreditation_image'][0]['#item']['uri'] 

:私はdevelのモジュールに見れば、私は、配列内の最初の画像のURIの場所は次のようになります見ることができますそうですね...

$text_and_image_field = field_get_items('node', $node, 'field_text_and_image'); 

...この変数を印刷/レンダリングすると、ページに印刷された配列が表示されますが、何も作成されません。しかし、私は '$ text_and_image_field'フィールドコレクションが存在するかどうかをチェックし、要素を作成するかどうかを確認する条件を作成し、フィールドが存在することを示す要素を作成します。私はちょうどそのコンテンツにアクセスできないようです。

フィールドコレクションの印刷が何もないのですが、 'field_about_accreditation'配列をループしてイメージURIをすべて印刷するにはどうすればよいですか?私は問題ではさらにいくつかのスタブを取られ、私はどの今、しますprint_rを使用している必要があるとき、私は「$のtext_and_image_field」の値をレンダリングしようとしているのミスを犯したことに気づきました

EDIT *

:値は、フィールドのコレクションに割り当てられている他のすべての時間を何が起こったのか、フィールドのコレクションにアクセスしている古いコードに基づいて

Array ([0] => Array ([value] => 2474 [revision_id] => 174439)) 

は、次の文を書くことです。そうすることは私にこの配列の値を与えます

$value = field_view_value('node', $node, '$field_text_and_image', $text_and_image_field[$i]); 
$field_collection = $value['entity']['field_collection_item'][key($value['entity']['field_collection_item'])]; 

しかし、$ value(私は '2474'になると予想されます)を印刷しようとすると何も表示されません。

答えて

0

フィールドのコレクションは別々のエンティティとして格納されるため、データを取得するためにエンティティの読み込みが必要になります。

$text_and_image_field = entity_load('field_collection_item', array($entity_id)); 

この場合、エンティティIDは2474であるので、必要に応じて配列を操作できます。あなたの終了コードは、可能性が

そうのようなもの:

$imageuri = entity_load('field_collection_item', array(2474))[2474]->field_about_accreditation_image['und'][0]['uri']; 
+0

また、コンテキストフィルタで表示することもできます。 – GHaddon

0

」あなたは$nodeをロードしているし、その中にあなたがフィールドコレクションのフィールドfield_imagesを持っているとしましょう。

$collection_entity_id = $node->field_photo['und'][0]['value']; 

は今、あなたは、エンティティIDを持っていて、完全なエンティティをロードする必要があります:として、あなたはそれの最初の要素を取得することができます

$full_entity = field_collection_item_load($collection_entity_id); 

そしてホエーあなたはエンティティが通常の方法をフィールドにアクセスできるエンティティをロードします:

$title = $full_box->title; 
$image_path =- $full_entity->field_image_path['und'][0]['value']; 

はい、私は値を取得する最もクリーンな方法ではないことを知っています、私の顔にそれをこするしないでください。

関連する問題