Grav-theme-variables
Grav-テーマ変数
この章では、Gravの*テーマ変数*を理解しましょう。 テーマの設計中にオブジェクトと変数はTwigテンプレートからアクセスされ、これらのオブジェクトと変数はTwigテンプレートフレームワークによって読み取られ、操作されます。
コアオブジェクト
Twigテンプレートには多くの*コアオブジェクトがあります; *各オブジェクトには*変数*と*関数*のセットがあります。
次の表に、簡単な説明とともに変数を示します。
Sr.No. | Variable & Description |
---|---|
1 |
\{\{ base_dir }} この変数を使用して、Gravインストールのベースファイルディレクトリを取得できます。 |
2 |
\{\{ base_url }} この変数を使用して、GravサイトのベースURLにアクセスできます。 |
3 |
\{\{ base_url_relative }} ベースURLの相対パスをGravサイトに返します。 |
4 |
\{\{ base_url_absolute }} 基本URLの絶対パスをGravサイトに返します。 |
5 |
\{\{ theme_dir }} 現在のテーマのファイルディレクトリフォルダを返すために使用されます。 |
6 |
\{\{ theme_url }} 現在のテーマの相対URLを返すために使用されます。 |
構成オブジェクト
*configuration.yaml* ファイルでは、Grav構成設定にアクセスするように構成オブジェクトが設定されます。
{{ config.pages.theme }}
現在設定されているテーマを返します。
サイトオブジェクト
*site.yaml* ファイルに設定された構成を表す *config.site* オブジェクトのエイリアスを提供します。
スタイルシートオブジェクト
これらのオブジェクトは、CSSスタイルシートアセットを格納するための配列を提供します。これをループして、テンプレートにCSSを追加できます。
スクリプトオブジェクト
これらのオブジェクトは、JavaScriptアセットで構成される配列を提供します。これはループされ、JavaScriptがテンプレートに追加されます。
ページオブジェクト
Gravの構造は pages/ フォルダーで定義されているため、* pageオブジェクト*は各ページを表す役割を果たします。 *ページオブジェクト*には、現在作業しているページに関するすべての情報が含まれています。
次の表に、ページオブジェクトのメソッドを示します。
Sr.No. | Method & Description | Example |
---|---|---|
1 |
summary([size]) パラメーターとして指定されたサイズのページコンテンツの要点を示します。 サイズが指定されていない場合、値は system/config/site.yaml ファイルの summary.size 変数から取得されます。 コンテンツ内で区切り文字 === を使用することもできます。 区切り文字の前のコンテンツが要約に使用されます。 |
Or
|
2 |
content() ページのHTMLコンテンツ全体を取得するために使用されます。 |
|
3 |
headers() ページのYAMLフロントマターで定義されたページヘッダーを返します。 |
上記のヘッダーには次のようにアクセスできます。
|
4 |
media() 画像、ビデオ、その他のファイルなど、すべてのメディアファイルにアクセスするために使用されます。 ページに関連付けられたすべてのメディアを含む配列を返します。 |
|
first %} {% set my_pdf = page.media['myfile.pdf'] %} {% for image in page.media.images %} テンプレート:Imagel {% endfor %} ---- | 5 |
title() ページのYAMLヘッダーで定義されているページのタイトルを返すように設定されています。 |
|
6 |
menu() ページのYAMLヘッダーで指定されている menu 変数の値が返されます。 title 変数が設定されていない場合、デフォルトで title になります。 |
|
7 |
visible() ページの可視性を設定するために使用されます。 通常、数値の後にピリオド(つまり、01.foldername)が続くページがメニューに表示され、数値を含まないフォルダー名(つまり、foldername)は表示されません。 ページヘッダーでオーバーライドできます。 |
|
8 |
routable() これを使用することで、ページが「ルーティング可能」か「ルーティング不可」かを判断できます。つまり、ブラウザにページを向けながらコンテンツを受信できるかどうかを判断できます。 ルーティングできないページはプラグイン、テンプレートなどで使用でき、これらのページには直接アクセスできません。 これはページヘッダーで設定されます。 |
|
9 |
slug() この変数を使用することにより、ページのURLに表示される直接名を取得できます。 |
|
10 |
url([include_host = false]) ページのURLを返すために使用されます |
Or
|
11 |
route() ページの内部ルーティングを返すために使用されます。 |
12 |
home() この変数を使用すると、ページが home ページとして構成されているかどうかを判断できます。 これは、ページがホームページとして構成されている場合はtrueを返し、構成されていない場合はfalseを返します。 この設定は system.yaml ファイルにあります。 | |
13 |
root() 現在のページが階層のルートページであるかどうかを決定します。 ルートページの場合は true を返し、ルートページでない場合は false を返します。 | |
14 |
active() この変数を使用して、ブラウザが現在のページにアクセスしているかどうかを判断できます。 ブラウザがこのページにアクセスしている場合は true 、そうでない場合は false を返します。 | |
15 |
modular() この変数を使用することで、このページがモジュール式かどうかを判断できます。 これがモジュラーページである場合、 true および false を返します(そうでない場合)。 | |
16 |
activeChild() この変数は、このURIのURLにアクティブページのURLがあるかどうかを判断できます。または、このページのURLを現在のURLに簡単に記述します。 これは、ナビゲーションに取り組んでいて、ページが同じ親ページを繰り返し処理しているかどうかを知りたい場合に非常に便利です。 | |
17 |
find(url) ルートURLで指定されているように、ページオブジェクトはこの変数によって返されます。 | |
|
18 |
collection() この変数は、コレクションページヘッダーによって決定されるコンテキストのページのグループを返すために使用されます。 |
|
19 |
isFirst() 現在のページがその兄弟ページの最初である場合、 true を返します。それ以外の場合は false を返します。 |
20 |
isLast() 現在のページが兄弟ページの最後である場合、 true を返します。それ以外の場合は false を返します。 | |
21 |
nextSibling() 現在の位置を参照して、配列から次の兄弟ページを返します。 | |
22 |
prevSibling() 現在の位置を参照して、配列から前の兄弟ページを返します。 | |
23 |
children() ページのコンテンツ構造で定義されているように、子ページの配列はこの変数によって返されます。 | |
24 |
orderBy() ソートされた子の注文タイプは、このメソッドによって返されます。 含めることができる値は default 、 title 、 date および folder であり、これらの値はページヘッダーで構成されます。 | |
25 |
orderDir() ソートされた子ページの注文方向は、このメソッドによって返されます。 また、値は asc (昇順)または* desc(降順)*のいずれかです。 通常、これらの値はページヘッダーで構成されます。 | |
26 |
orderManual() このメソッドは、手動のページ順序付けで構成される配列を返します。この順序付けは、ページのすべての子に対して行われます。 この値は通常、ページヘッダーで設定されます。 | |
27 |
maxCount() この変数は、返されることが許可されている子ページの最大数を示します。 通常、値はページヘッダーで指定されます。 | |
28 |
children.count() この変数は、ページに存在する子ページの数を返します。 | |
29 |
children.current() この変数は、現在の子アイテムを返します。 | |
30 |
children.next() これは、子ページの配列から次の子アイテムを返します。 | |
31 |
children.prev() これは、子ページの配列から前の子アイテムを返します。 | |
32 |
children.nth(position) これは、子の配列内の子の位置を返します。 | |
33 |
parent() ネストされたツリー構造で親ページに戻る場合、この変数を使用できます。 現在のページの親ページオブジェクトを返します。 | |
34 |
isPage() この変数を使用すると、このページに実際の .md ファイルがあるか、ルーティング用の単なるフォルダーであるかを判断できます。 | |
35 |
isDir() この変数を使用することにより、現在のページがルーティング用のフォルダーのみであるかどうかを判断できます。 それに基づいて true または false を返します。 | |
36 |
id() これにより、ページの一意のIDが返されます。 | |
37 |
modified() ページが最後に変更されたときのタイムスタンプを返します。 | |
38 |
date() ページの日付タイムスタンプは、このメソッドによって返されます。 通常、これはページまたは投稿の日付を表すヘッダーで構成されます。 デフォルトで値が提供されない場合、変更されたタイムスタンプが使用されます。 | |
39 |
filePath() これを使用すると、ページの完全なファイルパスを取得できます。 | |
|
40 |
filePathClean() これは相対パスを返します。 |
|
41 |
path() これは、現在のページが存在するディレクトリへのフルパスを返します。 |
|
42 |
folder() これにより、ページのフォルダー名が返されます。 |
43 |
taxonomy() これにより、ページに関連付けられている分類法の配列が返されます。 |
ページオブジェクト
Pagesオブジェクトは、ページオブジェクトのネストされたツリーとして表されます。 このネストされたツリーは、ナビゲーション、サイトマップ、または*特定のページの検索*を作成するときに非常に便利です。
子メソッド
これは、子ページで構成されるページオブジェクトの配列を返します。 ツリー構造のようなページオブジェクトは、フォルダー内のすべてのページで反復できます。
メニューのトップレベルページを取得するには、次のコードを使用します。
<ul class = "navigation">
{% for page in pages.children %}
{% if page.visible %}
<li><a href = "{{ page.url }}">{{ page.menu }}</a></li>
{% endif %}
{% endfor %}
</ul>
uriオブジェクト
現在のURIの一部には、Uriオブジェクトのいくつかのメソッドを使用してアクセスできます。
http://mysite.com/Grav/section/category/page.json/param1:foo/param2:bar/?query1 = baz&query2 = qux:
次の表は、Uriオブジェクトのメソッドを示しています。
Sr.No. | Method & Description | Example |
---|---|---|
1 |
path() 現在のURLの一部には、このメソッドを使用してアクセスできます。 |
|
2 |
paths() この要素を使用すると、パス要素の配列が返されます。 |
|
3 |
route([absolute = false][, domain = false]) このメソッドは、絶対URLまたは相対URLでルートを返します。 |
Or,
|
4 |
params() これにより、URLのパラメーター部分が返されます。 |
|
5 |
param(id) これは、paramの値を返します。 |
|
6 |
query() このメソッドを使用して、URLのクエリ部分にアクセスできます。 |
|
7 |
query(id) これを使用して、特定のクエリアイテムにアクセスできます。 |
|
8 |
url([include_host = true]) これは、ホストを含む場合と含まない場合がある完全なURLを返します。 |
|
9 |
extension() これは拡張子を返すか、指定されていない場合、htmlを返します。 |
|
10 |
host() これにより、URLのホストが返されます。 |
|
11 |
base() これにより、URLのベース部分が返されます。 |
|
12 |
rootUrl([include_host = true]) これにより、GravインスタンスのルートURLが返されます。 |
|
13 |
referrer() このメソッドは、ページのリファラー情報を返します。 |
ヘッダーオブジェクト
元のページの* page.header()*の代替です。 子ページをループしているときは、元のページヘッダーを使用する方が適切です。
コンテンツオブジェクト
元のページの* page.content()*の代替です。
分類オブジェクト
サイトのすべての分類情報は、グローバル分類オブジェクトに含まれています。
ブラウザオブジェクト
Gravは、組み込みサポートを使用して、プラットフォーム、ブラウザー、およびユーザーのバージョンをプログラムで決定します。
{{ browser.platform}} # windows
{{ browser.browser}} # chrome
{{ browser.version}} # 24
カスタム変数の追加
カスタム変数はいくつかの方法で追加されます。 サイト全体の変数を使用している場合は、 user/config/site.yaml ファイルに配置すると、以下に示すようにアクセスできます。
{{ site.my_variable }}
変数が特定のページ専用である場合、YAMLフロントマテリアルに追加して、 page.header オブジェクトを使用してアクセスできます。
例-
title: My Page
author: John
著者名は次のようにアクセスできます-
The author of this page is: {{ page.header.author }}
カスタムオブジェクトの追加
プラグインを使用すると、カスタムオブジェクトをTwigオブジェクトに追加できます。 これは高度なトピックであり、リンク:/grav/grav_event_hooks [プラグインの章]に詳細が表示されます。