私の雇用主は、ウェブサイトの特定のページに 2 ページ機能があることを要求しています。これが意味することは、一部のデフォルト コンテンツは通常どおり node_view ページに表示されますが、リンクがクリックされると 2 番目の部分が表示されるはずです。
これを複数のノードで実行できれば簡単ですが、すべてのデータを 1 つのノードに保存し、2 つのページにまたがって表示する必要があります。
次のコードを一緒にハックしました。
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 ノード ページの拡張にすぎません。