組み込み Twig 関数 acms_link() / acms_path()
acms_link() と acms_path() は、Twig テンプレートから a-blog cms の URL を生成するための組み込み関数です。ブログ・カテゴリー・エントリーなどの URL コンテキストを連想配列で指定すると、対応する URL(またはそのパス部分)を返します。PHP 関数の acmsLink() / acmsPath() に相当します。
この関数は a-blog cms のすべての Twig 環境に組み込まれています。管理画面の差し込みだけでなく、公開側テーマの Twig でも使えます(公開側はテーマが Twig で描画される場合)。
対応バージョン: Ver. 3.2.39 以降で利用できます。
基本
acms_link() は、プロトコルとドメインを含む URL を返します。
{# ブログ ID 1 のカテゴリー ID 5 の一覧ページ #}
<a href="{{ acms_link({ bid: 1, cid: 5 }) }}">カテゴリー</a>
{# ブログ ID 1 のエントリー ID 10 の詳細ページ #}
<a href="{{ acms_link({ bid: 1, eid: 10 }) }}">詳細</a>
引数に指定しなかった項目は、現在の URL コンテキスト(現在のページの bid・eid など)を引き継ぎます。引き継ぎたくない場合は、オプションで inherit: false を指定します。
第 1 引数(クエリ)
URL コンテキストを連想配列で指定します。配列以外を渡すと InvalidArgumentException になります。
第 2 引数(オプション)
オプションは連想配列で指定します。値は true / false の真偽値だけを受け付けます。
acms_link() で指定できるオプションです。
{# 現在のページの状態を引き継がず、指定した内容だけで URL を作る #}
{{ acms_link({ bid: 1 }, { inherit: false }) }}
PHP 関数の旧い呼び出し形式(真偽値の第 2 引数や位置引数)は使えません。未対応のオプション名や、真偽値以外の値を指定すると InvalidArgumentException になります。
acms_path()
acms_path() は、ドメインを含まない URL のパス部分を返します。
{{ acms_path({ bid: 1, eid: 10 }) }}
acms_path() で指定できるオプションです。
管理画面へのリンク
管理画面のページへのリンク(bid/1/admin/... の形式)は、クエリに admin(管理ページ名)を指定すると生成できます。管理画面にログインしている状態では、ブログ・カテゴリー・エントリーの ID を指定した形式のパス(/bid/1/cid/5/admin/... のような形)になります。オプションの追加は要りません。
{# カテゴリーの編集画面へのリンク #}
<a href="{{ acms_link({ bid: BID, cid: cid, admin: 'category_edit' }, { inherit: false }) }}">カテゴリーを編集</a>
パス部分だけが必要なときは、acms_path() に admin: true を指定します。
{{ acms_path({ bid: BID, cid: cid, admin: 'category_edit' }, { admin: true }) }}
URL を生成できないとき
どちらの関数も、URL を生成できないとき(ブログ ID が決まらないときなど)は空文字を返します。
従来記法(.html テンプレート)でのセグメント名の出力
従来記法のテンプレートからは acms_link() / acms_path() を呼べません。管理画面や、公開側に出す管理用リンク(編集ボタンなど)で bid/ や admin/ を直接書くと、URL のセグメント名を変更した環境で動かなくなります。そのため、URL のセグメント名をグローバル変数として出力できます(Ver. 3.2.39 以降)。
<a href="/%{BID_SEGMENT}/%{BID}/%{ADMIN_SEGMENT}/entry_editor/">エントリー一覧</a>
ログイン中のユーザーが所属するブログの URL は、%{SESSION_USER_BLOG_URL} で出力できます(未ログイン時とプレビュー時は空です)。会員向けページのプロフィール更新リンクのように、現在のブログと無関係に表示するリンクでは、%{BLOG_URL} ではなくこちらを使ってください。
Twig のテンプレートでは、セグメント名を直接書かずに acms_link() / acms_path() を使います。