Grav-テーマの基本
テーマは、Gravサイトの外観を制御します。Gravのテーマは、強力なTwigテンプレートエンジンで構築されています。
コンテンツページと小枝テンプレート
作成するページは、名前で、またはページのテンプレートヘッダー変数を設定することにより、特定のテンプレートファイルを参照します。メンテナンスを簡単にするために、ページ名を使用することをお勧めします。
Grav Baseパッケージをインストールすると、 defauld.mduser / pages /01.homeフォルダー内のファイル。ファイルの名前、つまりdefault このページは小枝テンプレートでレンダリングする必要があることをGravに通知します default.html.twig 内部に配置 themes/<mytheme>/templates フォルダ。
たとえば、というファイルがある場合 contact.md、それは小枝テンプレートでレンダリングされます themes/<mytheme>/templates/contact.html.twig。
テーマ構成
次のセクションでは、テーマの構成、つまり、その定義、構成などについて説明します。
定義と構成
テーマに関する情報はで定義されます user/themes/antimatter/blueprints.yaml管理パネルで使用されるファイルとフォームの定義は、オプションで提供されます。次のコンテンツが表示されますuser/themes/antimatter/blueprints.yaml のファイル Antimatter theme。
name: Antimatter
version: 1.6.0
description: "Antimatter is the default theme included with **Grav**"
icon: empire
author:
name: Team Grav
email: [email protected]
url: http://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
form:
validation: loose
fields:
dropdown.enabled:
type: toggle
label: Dropdown in navbar
highlight: 1
default: 1
options:
1: Enabled
0: Disabled
validate:
type: bool
テーマ構成オプションを使用するには、というファイルでデフォルト設定を提供する必要があります。 user/themes/<mytheme>/<mytheme>.yaml。
Example
enable: true
テーマとプラグインのイベント
プラグインアーキテクチャを介してGravと対話するテーマの機能は、Gravのもう1つの強力な機能です。これを実現するには、単に作成しますuser/themes/<mytheme>/<mytheme>.php (例えば、 antimatter.php デフォルトの反物質テーマの場合)ファイルを作成し、次の形式を使用します。
<?php
namespace Grav\Theme;
use Grav\Common\Theme;
class MyTheme extends Theme {
public static function getSubscribedEvents() {
return [
'onThemeInitialized' => ['onThemeInitialized', 0]
];
}
public function onThemeInitialized() {
if ($this->isAdmin()) {
$this->active = false;
return;
}
$this->enable([
'onTwigSiteVariables' => ['onTwigSiteVariables', 0]
]);
}
public function onTwigSiteVariables() {
$this->grav['assets']
->addCss('plugin://css/mytheme-core.css')
->addCss('plugin://css/mytheme-custom.css');
$this->grav['assets']
->add('jquery', 101)
->addJs('theme://js/jquery.myscript.min.js');
}
}
テンプレート
Gravテーマの構造には、すべてのページタイプのコンテンツのtemplates /フォルダーに関連付けられた小枝テンプレートが必要であることを除いて、設定されたルールはありません。
ページコンテンツと小枝テンプレートの間のこの緊密な結合により、ダウンロードページで利用可能なスケルトンパッケージに基づいて一般的なテーマを作成することをお勧めします。
テーマでモジュラーテンプレートをサポートしたい場合は、作成する必要があります modular/小枝テンプレートファイルをフォルダに保存し、その中に保存します。フォームをサポートしたい場合は、作成する必要がありますform/ フォルダを作成し、フォームテンプレートをその中に保存します。
設計図
すべての単一テンプレートファイルのオプションと構成のフォームを定義するには blueprints/フォルダが使用されます。これらは、を介して編集することはできませんAdministrator Panelオプションで使用されます。テーマはなくても完全に機能しますblueprints フォルダ。
SCSS / LESS / CSS
SASSまたはLESSを使用してサイトを開発する場合は、でサブフォルダーを作成する必要があります。 user/themes/<mytheme>/scss/、または less/ css /フォルダーと一緒にLESSが必要な場合。
SASSまたはLESSからコンパイルされた自動生成ファイルの場合、 css-compiled/フォルダが使用されます。反物質のテーマでは、scss SASSのバリアントが使用されます。
次の手順に従って、マシンにSASSをインストールします。
テーマのルートで、以下のコマンドを入力してscssシェルスクリプトを実行します。
$ ./scss.sh
- 次のコマンドを入力して直接実行します。
$ scss --sourcemap --watch scss:css-compiled
ザ・ css-compiled/ コンパイルされたすべてのscssファイルが含まれ、cssファイルがテーマ内に生成されます。
その他のフォルダ
個別に作成することをお勧めします images/, fonts/ そして js/ あなたのフォルダ user/themes/<mytheme>/ テーマで使用される画像、フォント、JavaScriptファイルのフォルダー。
テーマの例
の全体的なフォルダ構造 Antimatter これまで議論してきたテーマを以下に示します。