現在、製品カテゴリの並べ替え機能 (公開フィルター) を備えたビューと Drupal Commerce モジュールを使用した製品ページがあります。ドロップダウン リスト/選択リストを含むフォームには GET メソッドがあるため、カテゴリ ID が URL に追加されます。私の目標は、URL の末尾に追加されたカテゴリ ID だけではなく、URL に追加されたカテゴリ ID を取得し、ユーザーを特定の製品ページにリダイレクトすることです。
この問題に関する回答をグーグルで検索しましたが、どれも機能していません。そこで、hook_form_alter モジュールを実装するカスタム モジュールを作成しました。カスタム送信ハンドラーをフォームに追加して、最初のフォーム送信後に、URL からカテゴリ ID を取得するために別の送信がトリガーされ、ユーザーを特定のページにリダイレクトするようにしました。モジュールの私のコードは以下の通りです。
function custom_form_submit_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'views_exposed_form') {
$form['#submit'][] = 'my_custom_handler_submit';
}
}
function my_custom_handler_submit(&$form, &$form_state) {
if ($_GET['field_categories_tid'] == 13) {
$form_state['redirect'] = '/products/furnitures';
}
}
最初の関数は、Devel モジュールを有効にして kpr($form) を実行したときに、フォームの値を返すように機能します。2番目の機能はまったくトリガーされていないようです。私はこれに数日間立ち往生しており、たくさんの調査を行った後、実際には理解できませんでした. 私は Drupal に比較的慣れていないので、誰かがこれに光を当ててくれることを期待しています。あなたの助けは大歓迎です!