如何在Drupal中显示节点列表和单个节点的详细信息

时间:2009-04-16 15:00:11

标签: drupal drupal-6

我想要一个显示节点列表的页面(我可以使用Views模块执行此部分),然后还会显示列表下方单个节点的详细信息。理想情况下,当单击列表中的节点时,详细信息将通过Ajax更新,但重新加载页面可以正常启动。

我刚刚开始进入Drupal并且我可以做的事情的级别数量有点压倒性。例如,这应该是一个View页面,底部有一个自定义块吗?一个包含两个块的页面(一个用于项目的列表一个)?如果是这样,他们如何传达节点ID?是否已经有一个模块可以为我做这个?也许我应该写自己的模块?等等。如果对Drupal有更好的一般理解的人可以指出我正确的方向,那将是值得赞赏的。

修改 感谢到目前为止的答案,我认为他们指出我错过了原始问题中的一个重要细节。所以,更多细节:

我希望此页面能够有效地成为用户的主页。因此,我的视图仅限于显示他们已创建的节点。编辑默认节点页面会给我一个问题,即当用户登录时将哪个节点发送给用户(这可能是我猜的),这也意味着我可能无法查看节点而没有看到视图? / p>

我一直在尝试使用一些PHP来创建包含View(称为user_home)的页面节点。我还设置了View控件,为列表中的每个节点创建一个链接,并在该链接中包含节点ID,例如http://localhost/drupal-6.10/?q=node/13/12(其中13是我创建的页面的节点ID,12是列表中项目的节点ID)。

<?php
//output the user_home view
print views_embed_view('user_home', $display_id = 'default');
?>
<br/>
<hr/>
<br/>
<?php
$queryparam = $_GET["q"];
// find the second /
$index = strpos($queryparam, '/');
$index = strpos($queryparam, '/', $index + 1);
$displayNodeId = substr($queryparam, $index + 1);
$displayNodeId = (int)$displayNodeId;

if ($displayNodeId > 0)
{
  $displayNode = node_load($displayNodeId);
  print node_view($displayNode);
}
?>

现在,这有效,但我确信他们的做法更加友好/合规(并且查询字符串解析是一个讨厌的黑客攻击)。

3 个答案:

答案 0 :(得分:1)

对此的规范解决方案是在“内容顶部区域”中使用块,在内容区域中使用完整节点。

实现这一目标的最基本方法是简单地显示节点页面,并且主题具有内容顶部区域(Garland不具有,Zen经典),创建包含所需列表的视图块并放置它在那个地区。您可以使用路径作为View的参数,以便其内容可以取决于当前显示的节点。然后,定义块的可见性以仅匹配您想要的条件,可能仅显示在节点页面上,或者可能显示在特定内容类型的节点页面上。为此,请使用块的PHP可见性模式,并执行类似

的操作
// Filter args for safety
if ((arg(0) == 'node') && is_numeric(arg(1)) {
  $node = node_load(arg(1);
  return is_object($node) && ($node->type == 'the_content_type_i_want');
}
else {
  return FALSE;
}

这样,只有在您需要时才会显示该块。

如果您的主题没有此功能,则Panels提供了一种划分页面并将视图放在一个面板中并将整个节点放在另一个面板中的方法。

答案 1 :(得分:0)

我会这样做,如下。为视图块设置页面特定的可见性设置,节点列表仅显示在该节点上,Pathauto模块在​​此处也可用于管理节点路径束。

答案 2 :(得分:0)

自定义寻呼机可能适合您。 http://drupal.org/project/custom_pagers

首先为寻呼机创建视图以进行处理;这可能是某个用户或任何你想要的所有帖子 - 它和其他任何视图一样灵活。

您不需要像标准寻呼机(以及默认设置)那样提供前向链接 - 使用custom_pagers可以获得要使用的$ nav_array变量,其中包含视图中的所有节点。

有了这个,你应该能够创建一个表或链接列表。

Generating secondary menu based on node titles