【发布时间】:2012-11-16 11:45:21
【问题描述】:
我正在编写一个 Drupal 7 模块来在内容中显示模块的子节点。
节点有一个字段parent_nodes(节点引用),其中一个或多个节点被选为父节点。
首先,我创建了一个带有块视图显示 subprojects 的视图 projects,使用 field_parent_project 上下文过滤器显示类型为 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 元素。
我不能使用子节点作为参考,只能使用父节点。
解决方案必须独立于主题,所以不要回答“更改主题模板”或类似的问题
如何在节点中显示子节点?我正在寻找一种方法来获得可解释的字段
【问题讨论】:
标签: php drupal drupal-7 drupal-modules drupal-views