テーマ設定
Grav では、 Twig や PHP ファイルから、テーマ設定やブループリント(設計図)情報へ簡単にアクセスできます。
ブループリント情報へのアクセス
現在有効なテーマの blueprints.yaml
ファイルの情報は、theme
オブジェクトにあります。
具体例として、次のような blueprins.yaml
ファイルを使いましょう:
name: Antimatter
slug: antimatter
type: theme
version: 1.7.0
description: "Antimatter is the default theme included with **Grav**"
icon: empire
author:
name: Team Grav
email: devs@getgrav.org
url: https://getgrav.org
homepage: https://github.com/getgrav/grav-theme-antimatter
demo: http://demo.getgrav.org/blog-skeleton
keywords: antimatter, theme, core, modern, fast, responsive, html5, css3
bugs: https://github.com/getgrav/grav-theme-antimatter/issues
license: MIT
これらの情報には、標準的な ドット構文 を使い、 grav.theme
からアクセス可能です。
Author Email: {{ grav.theme.author.email }}
Theme License: {{ grav.theme.license }}
プラグインからは、同じ情報に PHP 構文を使ってアクセスできます:
$theme_author_email = $this->grav['theme']['author']['email'];
$theme_license = $this->grav['theme']['license'];
テーマ設定へのアクセス
テーマには、設定ファイルもあります。
テーマの設定ファイルは、 <テーマ名>.yaml
というファイルです。
デフォルトでは、このファイルは、テーマのルートフォルダ(user/themes/<テーマ名>/
)にあります。
テーマのデフォルトの YAML ファイルを変更するのは、強く 非推奨ですので、その代わり、user/config/themes
フォルダの設定で上書きしてください。
これにより、テーマのオリジナルの設定が残り、変更部分に素早く対応できたり、必要な場合はもとに戻すこともできます。
たとえば、 Antimatter テーマについて検討してみましょう。
デフォルトでは、 antimatter.yaml
ファイルが、テーマのルートフォルダにあります。
この設定ファイルは、次のようになっています:
enabled: true
color: blue
これは、シンプルなファイルですが、同時に、テーマで設定できるものが何なのか知ることができます。
これらの設定を、新しいものに上書きしてみましょう。
user/config/themes/antimatter.yaml
に、ファイルを作成して下さい。そして次のように入力してください。
enabled
は、ここでは繰り返さないことに注意してください。設定ファイルが、単純に置き換えられるのではなく、マージされるとすれば、それは明示されていたほうが良いです。
color: red
info: Grav is awesome!
そして、テーマテンプレート中、grav.theme.config
オブジェクトを使って、これらの変数にアクセスできます:
<h1 style="color:{{ grav.theme.config.color|e }}">{{ grav.theme.config.info|e }}</h1>
これは、次のようにレンダリングされます:
Grav is awesome!
PHP では、現在のテーマの設定は、次のようにアクセス可能です:
$color = $this->grav['theme']->config()['color'];
$info = $this->grav['theme']->config()['info'];
シンプルですね!
テーマの設定は無限です。
好きなように使ってください! :)
その他の注意事項
次のような別名(エイリアス)も動きます:
Theme Color Option: {{ config.theme.color_option|e }}
or
Theme Color Option: {{ theme_var(color_option)|e }}
or
Theme Color Option: {{ grav.themes.antimatter.color_option|e }} [AVOID!]
上記のような grav.themes.<テーマ名>
は、サポートされてはいるものの、適切に継承できなくなるので、使わないほうが良いです