Drupal节点2页内容拆分

时间:2012-11-13 17:34:07

标签: php drupal drupal-7

我的雇主要求网站上的某些页面有两页功能。 这意味着一些默认内容正常显示在node_view页面上,但第二部分应该在点击链接时显示。

如果我可以跨多个节点执行此操作,这将很容易,但要求所有数据都存储在一个节点中,但显示在两个页面上。

我将以下代码混为一谈:

function mymodule_node_view($node, $view_mode, $langcode){

$path = current_path();
$path_alias = drupal_lookup_path('alias',$path);

$links = array( 'test' => array('title'=>'my_link', 'query'=>'', 'href'=>"{$path_alias}/nextpage") );

$node->content['my_module'] = array(
    '#theme' => 'links__node__mymodule',
    '#links' => $links,
    '#attributes' => array('class' => array('links', 'inline')),
);
}

在我的内容区域顶部创建一个名为 my_link 的超链接 - 非常棒。

单击超链接时会出现问题。假设我在 http://example.org/homepage 并点击超链接,我希望将其重定向到 http://example.org/homepage/nextpage 。此外,我仍然希望维护视图并编辑我所在的实际节点的选项卡。但是,Drupal正确地给了我一个“找不到页面”的错误。

有趣的是,如果我使用 http://example.org/node/1 并访问 http://example.org/node/1/nextpage ,我不会遇到上述问题,但网址是描述性较差。

要解决这个问题,我确信我必须扩展 hook_menu ,但我不知道如何解释导致实际节点标题的任何数量的分类术语。所以,我无法预测在节点标题之前需要多少,然后我的 / nextpage 。但是,我希望 / nextpage 仍然可以查看和编辑其父页面的标签。

这对我来说都是未开发的领域。

更新

我找到了以下函数,该函数可以很好地返回整个节点路径并完成分类:

$path = current_path();
$path_alias = drupal_lookup_path('alias',$path);

我不知道如何利用 hook_menu 为我的节点动态创建 / nextpage

请记住,我并不希望 / nextpage 完全独立于原始和实际的Drupal节点。当打开/下一页时,我希望能够访问视图,编辑节点的等选项卡。

因此, / nextpage 实际上只是Drupal节点页面的扩展。

2 个答案:

答案 0 :(得分:1)

我会检查node_menu()函数以获得有关它如何实现的参考。

不确定您的分类要求所以这可能不够,但我会按照我的理解去做。

但是,除了我的头脑,我会去寻找类似的东西:

function mymodule_menu() {
  $items['node/%node/nextpage'] = array(
    'title' => 'Next page',
    'type' => MENU_LOCAL_TASK, // Makes it a tab on node/%node-pages
    'page callback' => 'mymodule_node_page_view', // Your page display function
    'page arguments' => array(1), // First will be a node object, second will be whatever value is passed in the  url
    // You should rip access callback and access arguments from node_menu()
  );

  return $items;
}

这应该像你要求的那样。

使用Panels / Pages(参见混沌工具)或者可以说是视图也可以,更容易和明确地推荐这样做,因为他们完全能够胜任所有这些,并且通常是使用Drupal优于自定义代码的更好方式。

<强>更新

为了澄清我简化了菜单钩子,你应该可以使用下面的页面查看功能。我仍然相信你会使用Panels并覆盖node_view等更好的解决方案。

菜单挂钩中的MENU_LOCAL_TASK部分应将其与“查看和编辑”一起转换为另一个选项卡。

function mymodule_node_page_view($node) {
    die("It works: ".$node->title);
}

希望更有帮助。

答案 1 :(得分:1)

有一种快速的方法可以做到这一点。使用views module

在“字段”部分中,选择要查看的字段。在参数中添加nid

然后将链接添加到您已创建的节点视图中。

最终结果http://mysite/views-page/[nid]

希望这有帮助......穆罕默德。