我的雇主要求网站上的某些页面具有两页功能。这意味着一些默认内容正常显示在 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,我没有得到我上面描述的问题,但 url 的描述性较差。
为了解决这个问题,我确信我必须扩展hook_menu但我不知道如何解释导致实际节点标题的任何数量的分类术语。所以,我无法预测在节点标题和/nextpage之前需要多少%。但是,我希望/nextpage仍然具有其父页面的查看和编辑选项卡。
这对我来说都是未开发的领域。
更新
我发现以下函数可以很好地返回包含分类法的整个节点路径:
$path = current_path();
$path_alias = drupal_lookup_path('alias',$path);
我不知道如何在hook_menu中利用这一点为我的节点动态创建/ nextpage 。
请记住,我真的不希望/nextpage完全独立于原始的和实际的 Drupal 节点。在 /nextpage 上时,我希望能够访问节点的视图、编辑等选项卡。
因此,/nextpage实际上只是 Drupal 节点页面的扩展。