フルノード表示のときに、前のノードと次のノードへのリンクを表示するためのモジュール、Custom Pagers。デフォルトだと『‹ previous 3 of 50 next ›』という表示になります(3 of 50はノードリスト総数50のうち3ページ目ということです)。これでももちろん良いのですが、前のノードと次のノードのタイトルを表示したいという方も多いと思います。今回CocoaSpaceの『Drupalニュース』と『お知らせ』セクションに、そのようなリンクを実装しました。
『‹ previous 3 of 50 next ›』というリンクではなくノードタイトルが表示されるようになりました。
いろいろ方法はあると思いますが、Title of node instead of ‹ previous ... next › | drupal.orgの#8や#9を参考に、custom_pagers_preprocess_custom_pager()に変更を加えることでノードタイトルを表示できるようになります。
しかし、custom_pagers_preprocess_custom_pager()の機能の変更は、custom_pagers.moduleファイルに直接変更を加えなくても、使用するテーマのtemplate.phpにTHEMENAME_preprocess_custom_pager()としてオーバーライドすることができるので、CocoaSpaceではその手法で変更を加えました。
上記のスレッドの#9を例にとれば、下のコードをご使用のテーマのtemplate.phpファイルに挿入することで、ノードタイトルを表示できるようになるはずです。THEMENAMEの部分はご使用のテーマ名に変更してください。
function THEMENAME_preprocess_custom_pager(&$vars) {
drupal_add_css(drupal_get_path('module', 'custom_pagers') .'/custom_pagers.css');
$node = $vars['node'];
$pager = $vars['pager'];
$nav = $vars['nav_array'];
$prev = 'prev';
if (!empty($nav['prev'])) {
$nodeObj = node_load($nav['prev']);
if ($nodeObj) {
$prev = node_page_title($nodeObj);
}
}
$next = 'next';
if (!empty($nav['next'])) {
$nodeObj = node_load($nav['next']);
if ($nodeObj) {
$next = node_page_title($nodeObj);
}
}
$vars['previous'] = !empty($nav['prev']) ? l('‹ ' . $prev, 'node/'. $nav['prev']) : '';
$vars['key'] = t('@count / @count_total', array('@count' => ($nav['current_index'] + 1), '@count_total' => count($nav['full_list'])));
$vars['next'] = !empty($nav['next']) ? l($next . ' ›', 'node/'. $nav['next']) : '';
}
admin/settings/performanceでキャッシュをクリアしてから、該当するフルノードページで変更を確認してください。成功したでしょうか?
コメントを追加