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

モジュールユニット

モジュールユニットとは

モジュールユニットとはエントリーのユニットとしてエントリーサマリーなどのモジュールを挿入することができるユニットです。テーマフォルダの決められた階層にHTMLのファイルを設置することで、選択したモジュールに対して好きなレイアウトやデザインを適応することも可能です。

モジュールユニットのテンプレートではTouchモジュールは動作しないので、お気をつけください。

管理画面の設定

編集設定



管理画面 > コンフィグ > 編集設定 のユニット追加ボタンにて、下の図のようにモジュールユニットを選択できるようにモードよりモジュールを選択し、そのユニットに対するラベルを記述します。
そうすることで下記の図のようにエントリーの編集画面にてモジュールユニットを選択できるようになります。



各モジュールIDの設定

モジュールIDをモジュールユニットで使用可能にするにはモジュールIDの編集画面にて下の図のように「レイアウトモジュール、モジュールユニットで使用」という項目にチェックを入れる必要があります。



テンプレートの設定

モジュールユニットで選択したモジュールIDをどのように表示するかをテンプレート側で記述することができます。これはレイアウト機能用モジュールのテンプレート作成方法と同じになりますので、テンプレートの作成方法は、レイアウト機能のページよりご確認ください。

モジュールユニットの使い方

エントリーの編集画面にてモジュールを選択します。すると下の図のようにモジュールと書かれたボタンが表示されますので、それをクリックします。



ボタンをクリックすることで下の図のようなモーダルウィンドウが出現します。 左のモジュール一覧から任意のモジュールをクリックすることで、モーダルの右側のプレビューより選択したモジュールがどのように表示されるか確認することができます。 プレビューより表示したい内容が確認できたら、選択するボタンを押すことで、モジュールの選択は完了です。



選択したモジュールは下の図のようにエントリーの編集画面においても確認可能です。


facebookのogpキャッシュをクリアするボタンを作ってみよう


2017年12月5日現在、Facebookの仕様変更によりOAuth認証が必要となったため、この記事のプログラムは動作しません。

代替案としてこちらのページにリンクするためのボタンなどを設置して遷移先で手動でキャッシュをクリアするようにしてください。https://developers.facebook.com/tools/debug/

記事を更新した時、facebookのOGP画像が以前の画像のままで困った事はないでしょうか? ここでは、facebook側でキャッシュを行っている為、キャッシュを削除してあげる必要があります。

方法の一つとして、Facebook Batch Invalidator にアクセスして削除したいURLを入力して、Debugボタンを押せばキャッシュを削除する事ができます。

ただキャッシュを削除したい場合に毎回このサイトにアクセスするのは手間がかかります。そこで今回は、a-blog cmsのサイトから記事を更新したらすぐキャッシュをクリアできるようにしたいと思います。