web-dev-qa-db-ja.com

DSフィールドグループをプログラムでノードテンプレートにレンダリングする方法は?

テンプレートの提案myLayout-node-myNode-full.tpl.phpを使用して、ノードのDisplay Suiteビューモードをオーバーライドしています。

node_build_content関数を使用して$ node-> contentを取得しています。次に、アクセスして、次のコマンドを使用してすべてのノード表示フィールドをレンダリングします。

drupal_render($node->content['field_myField'])

しかし、配列パラメーターが必要なため、drupal_render関数を使用してfieldgroupsをレンダリングできませんですが、私のフィールドグループはstdClassとしてアクセスできるオブジェクトです。

$node->content['#groups']['group_myGroup']

$ node変数を出力すると、フィールドグループへのその他の参照が得られません。 $ node-> content ['group_myGroup']は存在しません。

Drupal 7?のテンプレートファイルでフィールドグループをレンダリングする方法に関する提案はありますか?

1
Maria Ioannidou

_node_build_content_ はおそらくユースケースに適していない。ただし、とにかく_node_view_を呼び出す代わりに _node_build_content_ を使用する必要がありますが、処理して実際のレンダリング可能な配列を返します。

例えば:

_function mytheme_preprocess_node(&$vars) {
  if (!empty($vars['node'])) {
    $node = $vars['node'];

    if ($node->type == 'my_content_type') {
      $vars['content'] = node_view($node); //optionally supply view_mode as a second argument
    }
  }
}
_

これで、ノードテンプレートからdrupal_render($content)を実行できます。

1
Beebee