組み込み Twig 関数 acms_link / acms_path


組み込み 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 になります。

キー

説明

bid

ブログ ID

cid

カテゴリー ID

eid

エントリー ID

uid

ユーザー ID

keyword

キーワード

tag

タグ

field

フィールドによる絞り込み

order

並び順

tpl

テンプレート

page

ページ番号

limit

表示件数

admin

管理ページ名

fragment

URL のフラグメント(# 以降)

第 2 引数(オプション)

オプションは連想配列で指定します。値は true / false の真偽値だけを受け付けます。

acms_link() で指定できるオプションです。

オプション

既定値

説明

inherit

true

現在の URL コンテキストを引き継ぐかどうか

explicitTpl

false

URL コンテキストの tpl を必ず生成するかどうか。false のときは、tpl を指定していても不要な場合は生成しない

ignoreTplIfAjax

true

Ajax リクエストのときに tpl を付けないかどうか

{# 現在のページの状態を引き継がず、指定した内容だけで URL を作る #}
{{ acms_link({ bid: 1 }, { inherit: false }) }}

PHP 関数の旧い呼び出し形式(真偽値の第 2 引数や位置引数)は使えません。未対応のオプション名や、真偽値以外の値を指定すると InvalidArgumentException になります。

acms_path()

acms_path() は、ドメインを含まない URL のパス部分を返します。

{{ acms_path({ bid: 1, eid: 10 }) }}

acms_path() で指定できるオプションです。

オプション

既定値

説明

admin

false

管理画面向けに、ID を指定した形式(bid/1/cid/5/ のようなパス)で生成するかどうか

baseId

false

ID を指定した形式(bid/1/cid/5/ のようなパス)で生成するかどうか

explicitTpl

false

URL コンテキストの tpl を必ず生成するかどうか

管理画面へのリンク

管理画面のページへのリンク(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 以降)。

変数

内容

%{BID_SEGMENT}

ブログ ID のセグメント名

%{CID_SEGMENT}

カテゴリー ID のセグメント名

%{EID_SEGMENT}

エントリー ID のセグメント名

%{ADMIN_SEGMENT}

管理ページのセグメント名

%{TPL_SEGMENT}

テンプレートのセグメント名

<a href="/%{BID_SEGMENT}/%{BID}/%{ADMIN_SEGMENT}/entry_editor/">エントリー一覧</a>

ログイン中のユーザーが所属するブログの URL は、%{SESSION_USER_BLOG_URL} で出力できます(未ログイン時とプレビュー時は空です)。会員向けページのプロフィール更新リンクのように、現在のブログと無関係に表示するリンクでは、%{BLOG_URL} ではなくこちらを使ってください。

Twig のテンプレートでは、セグメント名を直接書かずに acms_link() / acms_path() を使います。