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トークン確認(新規インストール時デフォルト)

関連記事

この記事のハッシュタグ から関連する記事を表示しています。

a-blog cms & htmx blog

htmx sample

htmx modal sample

a-blog cms template

hx-trigger hands-on

hx-post hands-on

hx-get hands-on

a-blog cms htmx setup