Grav 概要

grav

WordpressからJoomlaに、その後は最近までDrupalを使ってサイト運営

やっぱり結局、軽いのがいいとの結論から探してみて見つけました
ChatGPTを元に加筆修正


Gravの主な特徴

  • まずはデータベース不要(フラットファイル構造)なので高速・軽量
  • Markdownでノート作成できる
  • Twigテンプレートエンジンを使っている
    • ただしテーマ毎にファイルが違うのでカスタマイズするとバージョン変わるごとに修正が必要
  • YAMLによる設定管理
  • CLIツールとWeb管理パネル(Admin Plugin)が使いやすい

私の場合

  • 静的サイトジェネレーターのような運用がしたいけど、ある程度CMSの機能もほしい。程度で良い
  • サイト規模がそこまで大きくない(中小規模)、個人的なサイト

ディレクトリ構成

~/var/www/grav <-DocmentsRoot

/grav
├── user/
│ ├── pages/ ← ページコンテンツ(.mdファイル)
│ ├── themes/ ← 使用テーマ
│ ├── plugins/ ← プラグイン
│ └── config/ ← サイト設定(.yamlファイル)
├── system/ ← コアファイル
├── vendor/ ← Composer依存
├── cache/ ← キャッシュ
└── index.php ← エントリーポイント


よく使うプラグイン

私の場合は、最初Grav本体のみインストールしたのよいが、管理画面どこ??

となるので、パッケージになったものを導入するのが常識的です。私はあわてて後からインストール

  • admin:Web管理パネルを提供
  • form:フォーム作成
  • email:メール送信処理
  • login:ユーザーログイン管理
  • language-selector: 多言語切り替え
    など

テンプレート

具体的にどのテンプレートにTwigコードを埋め込むかは、表示したい場所や目的によりますが、以下のようなページやファイルでテンプレートが使われます

ページテンプレート

ページのレイアウトを指定するために使うTwigテンプレートです。ページごとに特定のテンプレートを使用することができます。

例:

  • ページのfrontmatter(ページのメタ情報)で指定したtemplateフィールドに対応するテンプレートファイルです。

title: 'Sample Page'
template: default

上記の例では、defaultというテンプレートが使用されます。この場合、user/themes/your-theme/templates/default.html.twigというテンプレートが使用されます。

もし、特定のタクソノミーリストを表示したいページにこのコードを埋め込みたい場合、そのページのテンプレート(default.html.twigblog.html.twigなど)を編集が必要

テーマのテンプレートファイル

Gravのテーマディレクトリ(user/themes/your-theme/)内にあるテンプレートファイルが、ページ表示に使われます。例えば、default.html.twigblog.html.twigarticle.html.twigなどがテーマに含まれていることが一般的です。

例えば、default.html.twig にタクソノミーリストを表示させたい場合、そのテンプレートに直接Twigコードを埋め込みます。

{# user/themes/your-theme/templates/default.html.twig #}
{% block content %}
<h1>{{ page.title }}</h1>
<p>{{ page.content }}</p>

{# Taxonomy List の表示 #}
{% for taxonomy, items in taxonomylist %}
<h2>{{ taxonomy }}</h2>
<ul>
{% for item in items %}
<li><a href="{{ item.url }}">{{ item.title }}</a></li>
{% endfor %}
</ul>
{% endfor %}
{% endblock %}

このコードは、ページコンテンツの下にtaxonomylistを表示します。taxonomylistは、設定したタクソノミー(カテゴリーやタグ)に基づいて、関連するページをリスト化します。

特定のページにカスタムテンプレートを使う場合

特定のページだけにカスタムテンプレートを適用したい場合、そのページのfrontmattertemplateを設定します。例えば、taxonomy.html.twigという特別なテンプレートを作成し、それを使いたい場合は、次のようにページのfrontmatterで指定します。

title: 'Taxonomy List Page'
template: taxonomy

この設定を行った場合、user/themes/your-theme/templates/taxonomy.html.twigというテンプレートが使用されます。このテンプレートにtaxonomylistを表示するTwigコードを追加することができます。

管理パネルから表示するページ

もし管理パネル(Admin Plugin)を使っている場合、ページごとにどのテンプレートを使うかを選択できます。管理パネルでページを編集する際に、Templateフィールドでどのテンプレートを使用するか選べます。これによって、特定のページで異なるテンプレートを使ってタクソノミーリストを表示できます。


まとめ

  • ページにリストを表示する場所は、そのページに対応するテンプレートファイルです

  • default.html.twigblog.html.twigなど。

  • もし特定のページでタクソノミーリストを表示したい場合、そのページに適用されるテンプレートファイルにTwigコードを埋め込む必要がある

  • 特定のテンプレートを使いたい場合、ページのfrontmattertemplateを指定できます。

前の記事 次の記事