テンプレート:条件指定のサンプル

どのページにどのテンプレートをあてるのか、その判断条件となるのが『条件指定』です。
1つのURLに1つのテンプレートをあてたいだけであれば簡単ですが、
これがもし『同じページなのにURLが2つ以上ある』場合や、
『同じテンプレートを2ページ以上にあてたい』という場合は、
記述が少しややこしくなります。
ここでは、こういったURLの時にどう指定すれば良いのか、サンプルをあげて説明します。


例1
http://xxx.jp/index.html

条件:完全一致
/index.html

これは一番わかりやすい条件指定です。
URLが"/index.html"の時のみテンプレートがあてられます。

ですが、サイトによってはindexの有無に関わらずトップページを表示することができます。
そのどちらにもテンプレートをあてたい場合はどうすればよいのか。
それが例2の記述方法です。


例2
http://xxx.jp/
または
http://xxx.jp/index.html

条件:正規表現
/^\/(index.html)?$/

正規表現を使うことで"index.html"がある時、ない時どちらにもテンプレートをあてることができます。

では、次の場合はどうでしょうか。


例3
http://xxx.jp/
http://xxx.jp/index.html
http://xxx.jp/index/index.html

条件:正規表現
/^\/((index\/)?index.html)?$/

こう記述すると、上記3つのURL全てにテンプレートがあたるようになります。


では、これが全く違うアドレスにあてなければいけない場合はどうしたらよいのでしょうか。
その場合は正規表現ではなく、Javascriptを使って記述します。


例4
http://xxx.jp/login.html
http://xxx.jp/logout.html

条件:Javascript
return location.pathname.match("^\/login.html?$") || (location.pathname.match("^\/logout.html?$")

こう記述すると、上記どちらのURLにも同じテンプレートをあてることができます。
ちなみに、3つ以上のURLをあてたい場合は同じように繋げていくと判定できます。

では、URLが5つも6つもある場合、しかも違いはURL内の数字だけといった場合。
この場合はもっと簡単に記述できる方法があります。


例5
http://xxx.jp/item-00.html
http://xxx.jp/item-01.html

http://xxx.jp/item-99.html

条件:正規表現
/^\/item-[0-9]{2}.html$/

[0-9]{2}で2桁の数字全てが判定されます。
これでitem-**というアドレスを全て同じテンプレートにあてることができます。


ここで紹介したのはあくまで一例です。
ぜひサイトにあった、見分けやすい記述をお使いください。

他にご質問がございましたら、リクエストを送信してください
Powered by Zendesk