パスの書き換え
a-blog cmsでは /themes/テーマ/ が ドキュメントルート的な扱いになります。 しかし、このままではパスがおかしくなるので、パスの書き換えを行っています。 a-blog cmsでは、この機能により静的なサイトをそのまま themes に入れても動くようになっております。
書き換えるもの
パスの書き換えには2種類あります。 ファイル指定するものと、アンカー類です。
ファイル指定するもの
- <!-- include file="" -->
- src属性をもつHTML要素 ( img|input|script|frame|iframe )
- srcset属性
- link要素
- object, applet要素
- background属性
パス書き換え仕様(ファイル指定)
- 何らかのスキーマ(http://等)から始まっているものは書き換えない
- "/"のみの場合は書き換えない
- "/"から始まるパスはドキュメントルートから探索しみつかった場合は書き換えない
- "/"から始まるパスでa-blog cms設置ディレクトリから探索しみつかった場合は書き換え
- "/”から始まらない場合はそのテンプレートからの相対パスで検索しみつかった場合は書き換え
- 上記のどれにも当てはまらない場合は継承テーマから探索しみつかった場合は書き換え
上から優先度が高くなります
アンカー類
- a要素のhref属性
- form要素のaction属性
パス書き換え仕様(アンカー類)
- 空の場合は書き換えない
- 何らかのスキーマ(http://等)から始まっているものは書き換えない
- "#"から始まるパスは書き換えない
- "/"から始まらないパスは書き換えない
- ディレクトリをほってa-blog cmsが設置してある場合、そのディレクトリのパスから始まっている場合は書き換えない
- 上記のどれにも当てはまらない場合は、ブログコードからのパスに書き換える
上から優先度が高くなります
書き換えをしたくない場合
このパスの書き換えは便利な機能なのですが、時に書き換えを行ってほしくない場合があります。 例えば、すべてのブログで共通するグローバルナビゲーションなどです。
注意 このオプションはアンカー類のパス書き換えのみになります。
<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 : 変更後識別子
として頂ければ変更できるようになっています。