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


8

私のセットアップ: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番目のパネルページにリダイレクトされます。

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

回答:


7
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'; 
  }
}

これは正常に動作しますが、$ base_urlを使用する代わりに、おそらくを使用する必要がありますurl('path_that_you_want')
John Fiala 2013

1
成功せずに試してみましたが、実際には「action」属性に別の宛先が表示されていますが、どうすれば修正できますか?
ソクラチス2015

ねえ、このコードをどこに追加すればいいか教えてくださいね。ありがとう
React Developer

0

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

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


どうやってやったの?コードを投稿していただけませんか?
Michiel、2011年

0

最も簡単な解決策は

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

0

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

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

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

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

私はこれをD8で行いましたが、7でも同じでしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.