POST_2GET・POST_2GET_Ajax

パラメータを指定してリダイレクト

パラメータをPOSTで送信する事により、パラメーターに沿ったURLを組み立ててリダイレクトする事ができます。

以下の例では、bid=1(news)cid=3(economy)を指定して http://sample.com/news/economy/ にリダイレクトします。

<!-- ボタンを押すと /news/economy/ にリダイレクトされる -->
<form action="" method="post">
  <input type="hidden" name="bid" value="1">
  <input type="hidden" name="cid" value="3">
  <input type="submit" name="ACMS_POST_2GET" value="経済ニュースに移動">
</form>

パラメータをhiddenで指定して、submitのname属性ACMS_POST_2GET または ACMS_POST_2GET_Ajax(Ver. 3.1.17以降)を指定する事により動くようになります。パラメータには acmsパス が利用できます。

POST_2GETの例

<!-- ID を指定 IDに沿ったURLが生成されます。 -->
<input type="hidden" name="bid" value="1">
<input type="hidden" name="aid" value="1">
<input type="hidden" name="uid" value="1">
<input type="hidden" name="cid" value="1">
<input type="hidden" name="eid" value="1">
<input type="hidden" name="cmid" value="1">
<input type="hidden" name="tdid" value="1">

<!-- キーワードを指定 -->
<input type="text" name="keyword" value="%{KEYWORD}">

<!-- タグを指定 -->
<input type="hidden" name="tag[]" value="aaa">
<input type="hidden" name="tag[]" value="bbb">

<!-- フィールドを指定 -->
<input type="hidden" name="hoge" value="aaa">
<input type="hidden" name="field[]" value="hoge">

<!-- 表示順を指定 -->
<input type="hidden" name="order" value="datetime-asc"> <!-- 日時 ( 昇順 ) -->
<input type="hidden" name="order" value="datetime-desc"> <!-- 日時 ( 降順 ) -->
<input type="hidden" name="order" value="code-asc"> <!-- ファイル名 ( 昇順 ) -->
<input type="hidden" name="order" value="code-desc"> <!-- ファイル名 ( 降順 ) -->
<input type="hidden" name="order" value="id-asc"> <!-- ID ( 昇順 ) -->
<input type="hidden" name="order" value="id-desc"> <!-- ID ( 降順 ) -->
<input type="hidden" name="order" value="sort-asc"> <!-- 表示順 ( 昇順 ) -->
<input type="hidden" name="order" value="sort-desc"> <!-- 表示順 ( 降順 ) -->
<input type="hidden" name="order" value="field-asc"> <!-- フィールド ( 昇順 ) -->
<input type="hidden" name="order" value="field-desc"> <!-- フィールド ( 降順 ) -->
<input type="hidden" name="order" value="intfield-asc"> <!-- 数値フィールド ( 昇順 )	 -->
<input type="hidden" name="order" value="intfield-desc"> <!-- 数値フィールド ( 降順 ) -->
<input type="hidden" name="order" value="random"> <!-- ランダム -->

<!-- テンプレートを指定 -->
<input type="hidden" name="tpl" value="/include/sample.html">

<!-- ページを指定 -->
<input type="hidden" name="page" value="3">

<!-- 表示数を指定 -->
<input type="hidden" name="limit" value="50">

<!-- 期間を指定 -->
<input type="hidden" name="start" value="2014-01-01 00:00:00">
<input type="hidden" name="span" value="span">
<input type="hidden" name="end" value="2015-12-31 23:59:59">

<!-- 日付を指定 -->
<input type="hidden" name="date" value="2015/12">
<input type="hidden" name="date[0]" value="2015"> <!-- 年を指定 -->
<input type="hidden" name="date[1]" value="12"> <!-- 月を指定 -->
<input type="hidden" name="date[2]" value="31"> <!-- 日を指定 -->


<!-- クエリストリングを指定 ?key1=aaa&key2=bbb-->
<input type="hidden" name="key1" value="aaa">
<input type="hidden" name="key2" value="bbb">
<input type="hidden" name="query[]" value="key1">
<input type="hidden" name="query[]" value="key2">

フィールドの指定にはもっと細かい指定ができますので、カスタムフィールドの検索 を参考ください。

キーワード検索(全文検索)について詳しく知りたい方はキーワード検索フォーム(全文検索フォーム)をご確認ください

POST_2GET と POST_2GET_Ajax モジュールとの違い

tpl指定した場合の挙動が異なります。「ACMS_POST_2GET」モジュールの場合、tpl指定されていても、URLにtplコンテキストが入らない場合があります。

以下の例でURLの違いを見てみます。ここで「%{CID}」は「news」カテゴリーを指定しているものとします。

<input type="text" name="keyword" value="" size="15" />
<input type="hidden" name="bid" value="%{BID}" />
<input type="hidden" name="cid" value="%{CID}" />
<input type="hidden" name="tpl" value="search.html" />

ACMS_POST_2GETの場合

https://example.com/news/search.html?keyword=xxxxxx

ACMS_POST_2GET_Ajaxの場合

https://example.com/news/tpl/search.html?keyword=xxxxxx

この場合「ACMS_POST_2GET」の場合は「themes/ご利用テーマ/news/search.html」テンプレートがないと404になりますが、「ACMS_POST_2GET_Ajax」の場合は、tpl指定されているので「themes/ご利用テーマ/search.html」があれば取得できることになります。

「ACMS_POST_2GET」の場合でも、テンプレートをカテゴリディレクトリに設置すれば解決しますが、多くのカテゴリがある場合は同じテンプレートをカテゴリー毎に設置しないといけなくなります。