0

我想要一个显示节点列表的页面(我可以使用 Views 模块完成此部分),然后还在列表下方显示单个节点的详细信息。理想情况下,当单击列表中的节点时,详细信息将通过 Ajax 更新,但重新加载页面就可以开始了。

我刚开始接触 Drupal,我可以做的事情的级别数量有点压倒性。例如,这应该是底部带有自定义块的视图页面吗?一个有两个块的页面(一个用于列表,一个用于项目)?如果是这样,他们将如何传达节点 ID?是否已经有一个模块可以为我做到这一点?也许我应该编写自己的模块?等等。如果对 Drupal 有更好的一般理解的人可以指出我正确的方向,我将不胜感激。

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

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

我一直在尝试另一种方法,即使用一些 PHP 创建包含视图(称为 user_home)的页面节点。我还设置了视图控件为列表中的每个节点创建一个链接,并在该链接中包含节点 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);
}
?>

现在,这可行,但我确信他们是一种更友好/兼容的做事方式(并且查询字符串解析是一个讨厌的黑客)。

4

3 回答 3

1

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

实现这一点的最基本方法是简单地正常显示节点页面,并使用具有内容顶部区域的主题(Garland 没有,Zen classic 有),创建一个包含您想要的列表的 Views 块并将其放置在其中地区。您可以使用路径作为 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;
}

这样,该块将仅在您需要时显示。

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

于 2009-04-17T08:07:57.793 回答
0

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

您首先为寻呼机创建一个视图;这可以是某个用户的所有帖子或您想要的任何内容——它与任何其他视图一样灵活。

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

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

根据节点标题生成二级菜单

于 2010-11-03T09:02:36.063 回答
0

我会这样做如下。为您的视图块设置页面特定的可见性设置,节点列表仅显示在该节点上,Pathauto模块在这里也可以帮助管理一堆节点路径。

于 2009-04-16T15:25:07.547 回答