Php Drupal节点2页内容拆分
我的雇主要求网站上的某些页面具有两页功能。 这意味着一些默认内容会像正常情况一样显示在node_view页面上,但第二部分应该在单击链接时显示 如果我可以跨多个节点执行此操作,这将很容易,但要求所有数据都存储在一个节点中,但显示在两个页面上 我拼凑了以下代码:Php Drupal节点2页内容拆分,php,drupal,drupal-7,Php,Drupal,Drupal 7,我的雇主要求网站上的某些页面具有两页功能。 这意味着一些默认内容会像正常情况一样显示在node_view页面上,但第二部分应该在单击链接时显示 如果我可以跨多个节点执行此操作,这将很容易,但要求所有数据都存储在一个节点中,但显示在两个页面上 我拼凑了以下代码: function mymodule_node_view($node, $view_mode, $langcode){ $path = current_path(); $path_alias = drupal_lookup_path('a
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')),
);
}
这会在我的内容区域顶部创建一个名为“我的链接”的超链接,这很好
当我单击超链接时,问题开始出现。假设我在上并单击超链接,我希望被重定向到。此外,我仍然希望维护我所在的实际节点的“查看”和“编辑”选项卡。但是,Drupal正确地给了我一个“未找到页面”错误
有趣的是,如果我使用了并访问了,我不会得到上面所述的问题,但url的描述性较差
为了解决这个问题,我确信我必须扩展hook_菜单,但我不知道如何解释导致实际节点标题的任何分类术语。因此,我无法预测在节点标题之前需要多少%,然后是我的/nextpage。但是,我希望/nextpage仍保留其父页面的查看和编辑选项卡
对我来说,这都是未经探索的领域
更新
我发现了以下函数,它可以很好地返回完整的节点路径和分类法:
$path = current_path();
$path_alias = drupal_lookup_path('alias',$path);
我不知道的是如何利用hook_菜单中的这一点为我的节点动态创建/nextpage
请记住,我并不希望/nextpage完全独立于原始和实际的Drupal节点。打开/nextpage时,我希望能够访问节点的视图、编辑等选项卡
因此,/nextpage实际上只是Drupal节点页面的一个扩展。我会检查node\u 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;
}
这应该能满足你的要求
使用面板/页面(另请参见Chaos工具)或视图也可以做到这一点,因为它们完全可以做到这一点,而且通常比使用自定义代码更好地利用Drupal的优势
已更新
为了澄清,我已经简化了菜单挂钩,您应该能够使用下面的页面查看功能。我仍然相信,使用面板和覆盖node_视图等,您会做出更好的解决方案
菜单钩子中的菜单本地任务部分应将其与查看和编辑一起转换为另一个选项卡
function mymodule_node_page_view($node) {
die("It works: ".$node->title);
}
希望这更有帮助。有一个快速的方法可以做到这一点。使用 在字段部分,选择要查看的字段。在参数中添加
nid
然后将链接添加到已创建的节点视图
最终结果http://mysite/views-page/[nid]
希望这有助于。。。穆罕默德。第二页的内容来自哪里?它是一个节点/字段/其他内容吗?第二页的内容可以来自“cck”字段,也可以是网络表单节点的一部分,请回答。我在我的原始帖子中添加了一个drupal函数,它返回完整的节点路径,并带有分类法。你介意根据我更新的帖子修改你的代码吗?更新我的帖子,希望能澄清它是如何满足你的需求的。我不是100%确定它如何与路径别名交互,这是您的附加问题。试试看,这是我的建议。作为一种礼貌,我更新了你的答案,我发现我将分类法等纳入我的“下一页”解决方案的计划根本不起作用。我最终决定在edit、devel等选项卡中有一个提示,不使用完整的分类法+内容标题URL,而只使用node/nid/edit类型解决方案:-)