我的雇主要求网站上的某些页面有两页功能。 这意味着一些默认内容正常显示在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节点页面的扩展。
答案 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]
希望这有帮助......穆罕默德。