モジュールの子ノードをコンテンツに表示する Drupal 7 モジュールを作成しています。parent_nodes
ノードには、 1 つ以上のノードが親として選択されるフィールド(ノード参照) があります。
まず、projects
ブロック ビュー display を使用してビューを作成し、コンテキスト フィルターを使用してsubprojects
タイプのノードを表示します。project
field_parent_project
これは私のモジュールです:
<?php
function projects_preprocess_node(&$variables) {
if ($variables['type'] == 'project') {
if (isset($variables['view_mode']) && $variables['view_mode'] == 'full') {
_projects_add_subprojects($variables);
}
}
}
function _projects_add_subprojects(&$variables) {
$nid = $variables['nid'];
$view = views_get_view('projects');
$preview = $view->preview('subprojects', array($nid));
$subprojects = array(
'#title' => t('Subprojects'),
'#label_display' => 'above',
'#weight' => 10,
//'#theme' => 'field',
'#markup' => $preview,
);
if (!isset($variables['content']['subprojects'])) {
$variables['content']['subprojects'] = array();
}
$variables['content']['subprojects'][] = $subprojects;
dpm($variables['content']);
}
これは機能しており、ビュー表示出力をノードのコンテンツに追加しています。
いくつかのことだけが機能していません:
- タイトル(ラベル)
- weight は、他のコンテンツでレンダリングされたときに表示位置を変更しません (常に body の上にある最初の位置です)。
行のコメントを外すと'#theme' => 'field'
、タイトルはラベルとして表示されますが、何もレンダリングされません。#items
これは、フィールドのテーマが使用されているためであり、要素が必要であり、使用されていないと思います#markup
。
子ノードを参照として使用することはできませんが、親ノードのみを使用できます。
解決策はテーマに依存しない必要があるため、「テーマ テンプレートを変更する」などの回答は避けてください。
ノードに子ノードを表示するにはどうすればよいですか? それがどのようにフィールドであったかを解釈できるものを取得する方法を探しています