a-blog cms / post include
a-blog cms には 10年以上前から hx-post のように Ajax で HTML を取得する機能が提供されており post_include 機能と呼ばれています。
<form action="" method="POST" class="js-post_include" target="#result"> <input type="hidden" name="tpl" value="/include/sample.html"> <input type="submit" name="ACMS_POST_2GET_Ajax" value="検索"> </form> <div id="result">検索結果が表示されるエリア</div>
a-blog cms での実装としては hx-post の代わりに class="js-post_include" という Class を設定し、target="#result" が hx-target の代わりになります。
Ver. 3.1.16 まで
これまでは post_include や htmx を利用する際には、以下のような URL に tpl を許可する設定や、不完全なHTML( <html> <head> <body> などの無いHTML)を表示可能にするような設定をして運用しておりました。
https://d9hqioo2.ablogcms.io/tpl/include/sample.html
現在は、上記のリンクは、投稿者以上の権限でログインしている時しか表示されません。
config.system.yaml
forbid_tpl_url_context: off html_format_validate: off
少しセキュリティレベルを落とすことになりますが tpl を指定する事で tpl の後のパス+ファイル名のテンプレートに置き換えることができるようになります。これで、必要な部分的な HTML が取得可能になります。
Ver. 3.1.17 から( 2024/6/10 リリース )
上記のように tpl を指定した URL にアクセスを許可する設定をする必要がなく Ajaxによる部分テンプレートアクセス時に CSRFトークンによる認証が追加 され動作させることができるようになりました。
config.system.yaml
ajax_security_level: 2 # ajaxリクエストのセキュリティレベルを設定します。 # 0 : チェックなし # 1 : RefererとHttpヘッダーを確認(アップデート時デフォルト) # 2 : CSRFトークン確認(新規インストール時デフォルト)