我正在编写一个 Drupal 7 模块来在内容中显示模块的子节点。节点有一个字段parent_nodes
(节点引用),其中一个或多个节点被选为父节点。
首先,我创建了一个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']);
}
这是可行的,将视图显示输出添加到节点的内容中。
只有一些事情不起作用:
- 标题(标签)
- 当与其他内容一起渲染时,重量不会改变显示位置(它始终是第一个,在正文之上)。
如果我取消注释该'#theme' => 'field'
行,标题将显示为标签,但不会呈现任何内容。这是因为使用了字段主题,我猜它需要#items
并且不使用该#markup
元素。
我不能使用子节点作为参考,而只能使用父节点。
解决方案必须独立于主题,所以不要回答“更改主题模板”或类似的问题
如何在节点中显示子节点?我正在寻找一种方法来获得可解释的东西,它是一个领域