2011-01-06 1 views
1

私はDrupalサイトを持っており、フロントページの電源を入れるための設定をしています。Drupalのサイトフロントページとしてどのように引数付きのビューを使用しますか?

私の目標は、ホームページに0〜2の引数を渡して、ビューに渡すことです。しかし、私はまだ正常なDrupalページが必要です。議論のリストは知られている。例えば

  • mysite.com/berlin/birdsその力フロントページを表示するために、二番目の引数として最初の引数と「鳥」と「ベルリン」を渡すことになります。
  • mysite.com/berlinはちょうど私がこれを達成する方法については明確ではないよ、1つの引数に
  • mysite.com/adminは、Drupalの

で通常の管理ページをロードし、「ベルリン」渡します。私が使用できるフックはありますか?私は1つを見つけたり、1つ考えることができません。ビュー自体の引数にこれを指定する方法はありますか?おそらく、URLがロードされているときに挿入し、バックグラウンドで書き直すフックを書くことができますか?

私が現在持っている解決策は、メニューシステムにこれらのパスを(私の引数が分かっているので)追加することです。これは、私が最初のページではないページを除いて、ページが(彼らはノードの詳細テーマを使用して)私が欲しいノードのテーマを使用しないので、これは動作します。

答えて

2

私はカスタムコードなしでこれを本当に行うことはできないと思います。引数には引数が必要になり、URLは引数で始まります。あなたができることは、カスタムコードでそれを偽造することです。

/** 
* Implements hook_init(). 
*/ 
function mymodule_custom_init() { 

    $item = menu_get_item(); // Matching Drupal path 

    if (!$item) { // There is no matching Drupal path. 
    $_GET['q'] = 'view_path/' . $_GET['q']; // Fake path path. 
    } // if 

} // mymodule_custom_init 

が次にビュー「をview_path」のパスを与え、それがDrupalののパスに何かを一致しないすべてに応答します。私はこのようなものを使用しました。

+0

ありがとう!これは動作します。 – Justin

0
PHPの小さなスニペットとる「引数処理コード」のためのビューのUIにおけるスポットがあり

- あなたはフロントページ上にあるかどうかを確認しそこにいくつかのコードを実行する可能性がhttp://drupal.org/node/70145

(または引数が存在しないかどうかなど)、必要な引数を挿入します。

+0

drupalインターフェイスにPHPを追加しないでください。完全に維持することはできません。彼らはこの "機能"を削除する必要があります。 – gagarine

0

もう1つの方法は、hook_views_pre_viewまたはhook_views_pre_buildを介して引数を設定することです。あなたが他のもの(他のビューブロックのようなもの)を壊さないと確信しているので、より良いです。

function MYMODULE_views_pre_view(&$view){ 
    if ($view->name == 'your_view_name' && drupal_is_front_page()) { 
     $view->set_arguments(array('you_argument','you_second_argument')); 
    } 
} 
関連する問題