アクセス時に検索項目のみ表示させ、検索実行後にレコードリストを表示させる方法を紹介します。
イメージ
未検索
上記のように未検索の場合は一覧ではなくメッセージを表示することが可能です。
検索後
検索ボタンを押すと条件の入力・未入力に関わらず、レコードリストブロックが表示されます。
仕組み
レコード検索ブロックで検索するとURLに検索のパラメーターが付与されます。
パラメーターはrlb0XXXXの形式で付与されるため、rlbのパラメーターの有無で検索前か後かを判別します。
イメージ:https://XXXX/listnolist
↓
https://XXXX/listnolist?rlb0XXXX_q_f0●=&action=search
パラメーターはrlb0XXXXの形式で付与されるため、rlbのパラメーターの有無で検索前か後かを判別します。
イメージ:https://XXXX/listnolist
↓
https://XXXX/listnolist?rlb0XXXX_q_f0●=&action=search
設定ソース
PHP
一覧を表示するページの PHP タブにコードを貼り付けてください。
検索前なら 0 、検索後なら 1 の値を返ってくることを利用してThymeleafで
レコードリストブロックを出し分けます。
<? //初期値(検索が行われていない場合) $set = 0; //URLのパラメーター部分取得 $parameter = $_SERVER['QUERY_STRING']; //パラメーターのなかに'rlb'が含まれている場合は1をセット(検索が行われており初回ではない場合) if(strpos($parameter,'rlb') !== false){ $set = 1; } //結果を格納 $SPIRAL->setTHValue("list",$set); ?>
検索前なら 0 、検索後なら 1 の値を返ってくることを利用してThymeleafで
レコードリストブロックを出し分けます。
body
<!-- レコード検索ブロック --> <sp:block name="rsb0●●●●"></sp:block> <!-- 値が1の場合(検索済)はレコードリストブロックを表示 --> <th:block th:if="${cp.result.value['list']} eq 1"> <sp:block name="rlb0●●●●"></sp:block> </th:block> <!-- 値が0の場合(未検索)はフリーコンテンツブロックを表示 --> <th:block th:if="${cp.result.value['list']} eq 0"> <sp:block name="fcb0●●●●"></sp:block> </th:block>
※ sp:blockの name はそれぞれのブロックと差し替えてください。
th:if="${cp.result.value['list']} eq X"
上記の指定でPHPの結果が X だった時にだけこのタグ内のブロックを表示する指定になります。
初回表示時に見せたい方の X を 0、検索後に表示させたい方の X を1で指定してください。
今回は初回表示時に見せたい内容をフリーコンテンツブロックで作成していますが、
ブロックではなくHTMLやメッセージを直接記載することも可能です。
最後に
設定後は動作確認を必ず行い、動作に問題がないか確認をしてください。
不具合やほかのやり方が知りたい等あれば、下記の「コンテンツに関しての要望はこちら」からご連絡ください。
不具合やほかのやり方が知りたい等あれば、下記の「コンテンツに関しての要望はこちら」からご連絡ください。