Grav ルーティング、MarkdownからHTMLへのコンパイル、Twigのテンプレート化、キャッシュといった基本的なことを行うのに十分な機能を提供しますが、Grav 自体は非常に軽量です。
ただ、必要なときに強力な機能を提供できるように、システム全体にイベントフックを構築し、プラグインですべてを拡張できるように設計されています。
Grav の主要オブジェクトは、強力なDIコンテナを通してアクセス可能です。Gravのライフサイクル全体を通じたイベントフックにより、Gravが知るあらゆるものにアクセスし、操作できます。このシステムにより、必要な機能を必要なだけ追加することができます。
プラグインはとても書きやすく、柔軟で強力です。サイトマップの表示、パンくずリスト、ブログアーカイブの表示、シンプルな検索エンジン、そしてJavaScriptを使ったショッピングカートまで、あらゆる機能を備えた 300 以上のプラグインが自由にダウンロードできます。
プラグインで何ができるかを知る最良の方法は、いくつかのプラグインをダウンロードし、それらが何をしているのか、どのように行っているのかを見ることです。次の章では、簡単なプラグインを一から作ってみます。
すべてのプラグインは、user/plugins フォルダに配置されます。最初は、errorと problems の2つのプラグインだけが提供されています。
error プラグインは、404 Page Not FoundのようなHTTPエラーを処理するために使用されます。
problems プラグインは、Grav を新規にインストールをサポートします。ホスティング設定に問題がないか、フォルダが見つからないか、Grav の問題を引き起こす可能性のあるパーミッションがないかなどを検出します。エラープラグインだけが、適切な操作のために本当に必要です。
user/plugins フォルダにあるすべてのプラグインには一意の名前を付ける必要があり、その名前はプラグインの機能を厳密に定義するものでなければなりません。プラグイン名には、スペース、アンダースコア、大文字を使用しないでください。
Twig 経由で(つまり Theme 内で)プラグインのコンフィギュレーション設定にアクセスする一般的な書式は以下の通りです。
config.plugins.pluginname.pluginproperty
プラグイン名にダッシュが含まれている場合は、配列を使用してそのプロパティを参照する必要があります。
config.plugins['plugin-name'].pluginproperty