web-dev-qa-db-ja.com

ノードフィールドをレンダリングする方法

このように_entity_metadata_wrapper_を使用してフィールドを取得できます

_$node = node_load($nid);
$node_wrapper = entity_metadata_wrapper('node', $node, array(
    'langcode' => $GLOBALS['language'],
    'bundle' => 'unit'
     )
);

$field_value = $node_wrapper->field_photo->value();
_

そして、それは私がレンダリングする方法がわからない配列を返します。私はdrupal_render()を試しましたが、うまくいかないようです。

それで、このフィールドをどのようにレンダリングできますか?

2

写真フィールドは画像フィールドですか? value()関数は、画像にリンクされた実際のファイルデータである配列を返します。レンダリングする(またはレンダリング可能なビルドを作成する)には、たとえば、<img>タグを出力するtheme_image関数を使用できます。

$node = node_load(43);
$node_wrapper = entity_metadata_wrapper('node', $node, array(
    'langcode' => $GLOBALS['language'],
    'bundle' => 'subject'
));

$field_value = $node_wrapper->field_teaser_image->value();
$build = array(
    '#theme' => 'image',
    '#path' => $field_value['uri'],
    '#alt' => $field_value['alt'],
    '#title' => $field_value['title'],
    '#width' => $field_value['width'],
    '#height' => $field_value['height'],
);

print drupal_render($build);
3
Mike Vranckx