パスの書き換え


本CMSでは、/themes/テーマ/ドキュメントルート相当として扱われます。
そのため、静的サイトをそのまま themes 内に置いても動作するよう、テンプレート内のパスを自動で書き換える機能があります。

書き換え対象

パスの書き換えには、次の2種類があります。

1. ファイル指定の書き換え

対象となるのは以下の要素や属性です。

  • {{ include('xxx') }} インクルードパス

  • img / input / script / frame / iframe 要素の src属性

  • srcset属性

  • link 要素

  • object / applet 要素

  • background属性

書き換え仕様(ファイル指定)

  1. スキーマ(http:// 等)から始まる場合 → 書き換えない

  2. / のみの場合 → 書き換えない

  3. / から始まり、ドキュメントルートから探索して見つかった場合 → 書き換えない

  4. / から始まり、a-blog cms設置ディレクトリから探索して見つかった場合 → 書き換える

  5. / から始まらない場合で、テンプレートからの相対パスとして探索して見つかった場合 → 書き換える

  6. 上記に当てはまらず、継承テーマから探索して見つかった場合 → 書き換える

2. アンカー類の書き換え

対象となるのは以下の属性です。

  • a 要素の href属性

  • form 要素の action属性

書き換え仕様(アンカー類)

  1. 空の場合 → 書き換えない

  2. スキーマ(http:// 等)から始まる場合 → 書き換えない

  3. # から始まる場合 → 書き換えない

  4. / から始まらない場合 → 書き換えない

  5. a-blog cms設置ディレクトリのパスから始まっている場合 → 書き換えない

  6. 上記に当てはまらない場合 → ブログコードからのパスに書き換える

書き換えを行わない設定

このパス書き換えは便利ですが、全ブログで共通するリンクやグローバルナビなどでは、書き換えを行いたくない場合があります。

<a href="/">HOME</a>

このコードが子ブログ内にあると、
http://ドメイン/子ブログコード/ のトップページへのリンクに書き換わってしまいます。

書き換えを防ぐ方法

アンカー類のパス書き換えを行いたくない場合は、要素に acms_no_rewrite 属性を付与します。

<a href="/" class="acms_no_rewrite">HOME</a>
  • class以外にも、独自データ属性などで指定可能です。

  • 識別子 acms_no_rewrite は、config.system.yaml で変更できます。

acms_no_rewrite: custom_identifier