web-dev-qa-db-ja.com

ブックナビゲーションに子ページの概要も表示するにはどうすればよいですか?

現在、Bookモジュールは、それぞれの子ページへのリンクのナビゲーションを作成します。そのナビゲーションには、子ページのティーザーまたは要約も含める必要があります。

これはDrupal 7.の場合です。

3
user651

---最善の解決策ではない可能性があります-----

私はこれを試していませんが、api.drupal.orgを確認しています。オーバーライドを確認する必要があると思います template_preprocess_book_navigation この前処理で処理される変数は、book-navigation.tpl.phpで使用されます(uはデフォルトで順序付けられていないリストである$ treeの出力を変更することに興味があります)私は、book_navigationの前処理をオーバーライドし、_ book_children の代わりに$variables['tree']の別のコールバックを使用できると思います。新しいコールバックはbook_childrenに基づいていますが、それらの子ページのティーザーをさらにロードします。

私自身、このcozのより良い解決策を見たいと思うことがあります。コアデザインの決定が必要なものではないことがあります。テーマエンジンをオーバーライドしてコア関数の呼び出しをカスタムのものに置き換える以外に、より良い解決策があるかどうかを知りたいです(この場合book_children)より良い解決策が見つかるか、またはこれが機能するかどうかを知らせてください。

言うまでもなく、これは、book-navigation.tpl.phpが使用されているすべてのブックページの出力に影響します。

乾杯

1
Dipen

Custom_pagersモジュールを使用してこれを行うこともできると思いますが、ナビゲーションに関してbookモジュールがどのように機能するかは100%わかりません。ページャーリンクを表示するc_pテーマ関数をオーバーライドして、ティーザーを実装できます。

ここに例があります-現在のページのどちらかの側に各ページのnode_loadが含まれているため、かなり高価であることに注意してください(ページの左側/右側)。

function phptemplate_custom_pager($nav_array, $node, $pager) { if (is_numeric($nav_array['prev'])) { $prev = node_load($nav_array['prev']); } if (is_numeric($nav_array['next'])) { $next = node_load($nav_array['next']); }

$prevlink = '' . (($prev) ? l(t('â~@¹ ' . $prev->title), 'node/' . $prev->nid) : ' ') . ''; $nextlink = '' . (($next) ? l(t($next->title . ' â~@º'), 'node/' . $next->nid) : ' ') . ''; return '' . $prevlink . $nextlink . ''; }

コードが正しく整列したくないようです...!

1
NikLP