業務では、MovableType / Wordpress の利用が多いのですが、個人的に作成するサイトには Grav CMS を利用することが多くなってきました。だいぶ、魅入られています。
https://getgrav.org/
まず、Grav CMS の特徴について書いてみようと思います。
## 特徴
■ フラットファイル
サイトのページ情報は、テキストファイルとして保存されます。テキストエディッタで、ページをどんどん追加できます。
※管理画面も用意されているので、通常のCMSのようにブラウザからページ操作もできます。
※サイト階層は、フォルダー階層と一致してます。
■ Markdown が標準でサポート
Markdown で記述できます。Markdown の Paraser には、parsedown が利用されているようです。
https://github.com/erusev/parsedown
■ テーマ
デザインも結構配布されてます。Learn2 という名前のテーマは、技術系のドキュメントサイトで、たまに見かけますね。
https://getgrav.org/downloads/themes
■ プラグイン
公式サイトで、いろんな種類が用意されてます。ぱんくずとか、sitemap.xml 出力のプラグインとか、便利に使ってます。
https://getgrav.org/downloads/plugins
■ 認証機能
ログインしてないと見れないページとか、編集者を制限したりするページを作れます。
こんな特徴があるので、テキストエディッタを使って、Markdown でページを、追加していくようなコンテンツ、FAQや技術ドキュメント系のサイトで使うにはとても、相性がいいのではないかと思って使っています。
## 特に便利かもと思うところ
■ Twig がテンプレートエンジンとして利用されている
プラグインもTwig Extension として書かれているものもあるので、非常に効率よく機能が追加できます。(元々、Twig ユーザーだったので、学習コストが低かった)
ページ情報の Markdown テキスト内にも、Twig 構文が書けたりします。
※サイト単位、ページ単位で、Markdown/Twig の有効・無効も設定できるので、ユーザー使わせたくない場合は、無効にすることもできました。
■ 動的で出力されるところ
テキストファイルでコンテンツを作成しているんで、静的に出力されるのかと思ってたら、きっちり動的に出力され、ページ情報は Pagesインスタンスとして PHP (Twig) 内で参照できたりする
https://learn.getgrav.org/16/content/content-pages
■ 設定ファイルがYAML
ページだけじゃなくて、設定もYAMLで書かれてるので、これも、テキストエディッタで修正できてしまいます。
※これも、管理者画面からも編集できます。
■ インストールが超絶簡単。
ダウンロードしてきて解凍したファイルを、サーバーのドキュメントルートに置くだけ。DB使わないんで、DBの設定とかも不要。
## あれ?っと思ったところ?
■ 検索など、サイト全体に関わる操作は、データベースへのアクセスと異なり遅いかも?
検索プラグインなどはテキストファイルを、全ページ読み込みながら一致するものを探してたりするようなので、ページ数が多くなると検索が重たくなってきます。
外部の検索サービス(Open Search とか?)使うか、定期的にDBに取り込んで、検索するようなプラグイン作るかもありですかね?
■ プラグインとかテーマとか、老舗の CMS より薄いかも。
足りない?に遭遇することもあるかも?見つけられてないだけかもしれないですが。
フォームとかは、弊社の FormMailer (https://www.form-mailer.jp/) とかで作ってもらえるといいかも?
## 全体的には、お気に入り
とりあえず、情報系サイト作りたいときには、とても便利使ってます。