2009-08-11 12 views
2

"News"のコンテンツタイプと、Newsノードのリストをメニューアイテムとして表示するViewがあります。Viewのメニュー項目の下に表示するノードを取得します

ニュースノードを表示しているときにメニューツリーでニュースビューを強調表示する方法はありますか?

なぜこれがうまくいかず、なぜこれがハッキリかもしれないが、「デフォルト」のメニュー項目やノードが表示されるようにする方法があるはずです。私の上記のコメントへの回答を想定し

+0

私が正しくあなたの質問を理解する(典型的なDrupalの用語でそれを置くしようとしている)ようにするため、特定のタイプのノード(ビュー)を表示しているときに、特定のブロック(ニュースビューブロック)に特殊なスタイルクラスを適用しようとしていますか? – anschauung

答えて

1

実際には、上記のtemplate.phpの答えは、デフォルトのメニュー項目をコンテンツタイプで割り当てることができるため、基本的にモジュールが見つかりました。

Menu Trailsと呼ばれています。ここでは、そのプロジェクトページからの抜粋です:

... Drupalののメニューシステムに

  • メニューの軌跡を、いくつかの常識的な使いやすさを追加すると、「アクティブ」現在のメニュー証跡を維持プライマリ/セカンダリのリンクを実装強調表示されます。あなたのtemplate.phpに入る準備ができたスニペットが含まれています。
  • このモジュールは、既知のメニュー項目の「下に」落ちるようにノードを(種類または分類法によって)広く分類する手段を提供します。これらのノードはメニューツリーに追加されず(メニュー管理システムは維持されます)、表示されたときにユーザーのナビゲーション状態を保持しながら、上記の機能を起動します。
  • 6.0の新機能:メニュートレイルは、ノードのブレッドクラムを設定して、トレールとの同期を保つこともできます。
  • 6.0の新機能:メニュートレイルはオーガニックグループに対応しています。したがって、ノードが属している最初のグループノードの「下」になるように指定することができます。
  • 6.0の新機能:トークンはpathauto(および他のトークン対応モジュール)に公開されているため、メニューパスを自動パスエイリアスの作成に使用できます。
0

は、「はい、」これはあなたが最終的な解決策は、あなたの設定に依存しますあなたのテーマフォルダ内のtemplate.phpファイルを介して

を達成することができるものですが、一般のほとんどですアクションは、これはあなたで動作するようにbody.news_pageスタイルクラスを与えるだろう、とあなたはあなたが好きなように見えるようにあなたのニュースのメニューブロックのスタイルでそれを組み合わせることができますphptemplate_preprocess_page

// Simplified, and untested in this form 
    function phptemplate_preprocess_page(&$vars) {       
     if (isset($vars['node'])) { // if we're looking at a node 
     $body_classes[] = (($vars['node']->type == 'News') || (arg(0) == 'News')) ? 'news_page' : '';    // Page is news page 
     } 
     else if (arg(0) == 'taxonomy') { 
     // ... Special handling for news taxonomy pages, if you want 
     } else { 
     $body_classes[] = "page-type-" . arg(0); 
     } 
     $body_classes = array_filter($body_classes); // Out! Out! Damn empty elements! 
     $vars['body_classes'] = implode(' ', $body_classes); 
    } 

内部で発生します。

0

Menutrailsが動作しない場合は(私のためにそれはしなかった)あなたのようなもので、それを自分で行うことができます。

$somenode = menu_get_item('node/5');

menu_set_item($somenode);

0

は、あなたが持っている私を発見しましたhook_nodeapi()でこのようなことをすると、より多くの制御が可能になります。

あなたはコアモジュールよりも重くなるためにあなたのカスタムモジュールの重量を設定する必要があるかもしれません
// this code worked for me 
$somenode = menu_get_item(); 
$somenode['href'] = 'node/5'; 
menu_set_item(NULL, $somenode); 

:少なくとも1

関連する問題