アクセス時に検索項目のみ表示させ、検索実行後にレコードリストを表示させる方法を紹介します。
イメージ
未検索
上記のように未検索の場合は一覧ではなくメッセージを表示することが可能です。
検索後
検索ボタンを押すと条件の入力・未入力に関わらず、レコードリストブロックが表示されます。
仕組み
レコード検索ブロックで検索すると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やメッセージを直接記載することも可能です。
最後に
設定後は動作確認を必ず行い、動作に問題がないか確認をしてください。
不具合やほかのやり方が知りたい等あれば、下記の「コンテンツに関しての要望はこちら」からご連絡ください。
不具合やほかのやり方が知りたい等あれば、下記の「コンテンツに関しての要望はこちら」からご連絡ください。