web-dev-qa-db-ja.com

公開されたフィルタークエリを別のパネルページにあるビュー結果ページにリダイレクトする方法

私の設定:Drupal 7.2、Panels 7.x-3.0-alpha3、Views 7.x-3.0-beta3、Chaos tool suite 7.x-1.0-beta1

フルーツディレクトリのウェブサイトを作成したいとします。ビューには、分類「色」に基づいてフィルターを公開したコンテンツペイン「フルーツ」があります。 Webサイトには2つのパネルページがあるはずです。最初のパネルページには、「色」のドロップダウンと検索ボタンが付いた、公開されたフィルターボックス「果物を検索」のみが表示されます。ドロップダウンから選択して検索ボタンをクリックすると、ユーザーは、フィルター(色)に一致する果物のリストを表示するビューのコンテンツペインを含む2番目のパネルページにリダイレクトされます。

問題は、最初のページで公開されているフィルターボックスが、適用ボタンをクリックした後に結果ページにリダイレクトされないことです。これを実現するためにビューとパネルを設定するにはどうすればよいですか?

8
Andreas
function hook_form_alter(&$form, &$form_state, $form_id) {  
  if ($form_id=='views_exposed_form') {
    global $base_url;
    $form['#action'] = $base_url.'/path_that_you_want'; 
  }
}
7
118218

最も簡単な解決策は、ビューページを作成することです。[詳細]> [公開フォーム]で公開ビューを作成します。 「ブロック内の公開フォーム:はい」を設定します必要なフロントページにブロック「公開フォーム:...」を追加します。

Interlatedの上記の公式は、露出されたフィルターブロックが新しいページに結果を開いて表示するように機能することで、半分を達成しました。

ただし、その結果ページにフィルターブロックを配置することも必要でした。そこで、ヘッダーのビューエリアを介してフォーム(公開されたフィルターブロック)を添付しました。次に、両方が同じビューに表示されるときに再帰的な動作が発生しました。

解決するために、2つのディスプレイ(ページとブロック)をそれぞれのビューに分離しました-結果のフィールドを含む公開フィルターとして1つのブロックを作成し、次にページのまったく新しいビューに到達するURLを作成しました。ページビューには、空白として上書きされるフィールド(タイトル)が1つあります(主に結果が冗長になるだけでなく不正確なため-公開されたフィルターブロックのフィールドからの結果が正確に表示されることがわかりました)。私は両方のディスプレイ間で同じフィルター設定を維持し、両方のディスプレイでajaxを使用して better exposed filters を使用しました。

私はこれをD8で行いましたが、おそらく7でも同じです。

0
vrwired

「正しい」方法があるかどうかはわかりませんが、宛先を変更するために公開されたフィルターフォームのhook_form_alterを記述することでこれを実現しました。

理想的ではありませんが、必要な結果が得られました。

0
Mark Ferree

最も簡単な解決策は

  • ビューページを作成する
  • 公開されたビューを作成する
  • 詳細設定>公開されたフォーム。 「ブロック内の公開フォーム:はい」を設定します
  • 必要なフロントページにブロック「Exposed form:...」を追加します。
0
Interlated