PHP製のCMS「pico」の紹介

投稿日:2019-01-15

picoとは

PHP製のCMSで、DBなど利用せずファイルだけでWEBページが作成できます。
公式サイト

ページにはMarkdownを使えるので、Markdownでメモなどを取ることが多い人には
使いやすいCMSなのではないかと思います。

Wordpressと比べてどうか

ページの書きやすさ

Markdownに慣れている人にとっては書きやすいと思いますが
慣れていないライターさんなどを雇っている場合などは向かないと思います。

また、表現がMarkdownの域に絞られるので、直接HTMLを書けたWordpressの方が
描画は自由にできるかもしれません。

構築のしやすさ

基礎構築だけならソースコードを持ってきて終わりなので楽です。
ただし、プラグインを追加するにはテーマファイルに手を入れる必要があったりするので
単純に「インストール」をクリックするだけのWordpressに比べればそこが手間です。

あと、日本語の情報が少ないのも構築する上ではネックになるかもしれません。

管理のしやすさ

『管理画面』が無いので設定は全てソースコード上で行ないます。
なので、非エンジニアが運用するには難しいかと思います。

ですが、DBがないのでバックアップ管理などは楽です。
GitHubのprivateリポジトリが無料で作れるようになったので
全てそこで管理してしまえば良いと思います。

また、管理画面が無いのでセキュリティ的にも強いと思います。

機能面

Wordpressでデフォルトで用意されているタグやカテゴリがpicoには無いので
若干の不便さはあります。

また、Wordpressではプラグインやテーマが多数ありますが
picoにはあまり数がありません。

picoの導入

プロジェクト作成

まず、composerでプロジェクトを作成します。
※composerが分からない人はこちら

composer create-project picocms/pico-composer pico

生成されたpicoディレクトリをそのままWEBサーバー上に配置すれば
もう既にデフォルトのページが表示されます
デフォルトページにはコンテンツの配置方法などが記載されているので
確認しておくと良いと思います。

URLリライト設定

picoはURLリライトを利用します。
(必須ではないが無いとURLの見た目がカッコ悪いし、SEO的にも良くなさそう)

URLリライトについてはpico内の.htaccessに記載されています。
.htaccessはApacheでなければ作動しないので、Nginxの場合は別途設定が必要です。
公式のリライト設定手順

設定ファイル作成

pico/config/config.yml.templateをコピー or リネームして
pico/config/config.ymlを作成してください。

とりあえず初期段階で書き換えるのは以下くらいかと思います。

設定項目 設定内容
site_title サイトのタイトルに書き換え
timezone 日本ならAsia/Tokyo

※注意
timezoneはデフォルトがUTCなのでJSTに変更すればいいと思わせつつ
ここはAsia/Tokyoでないといけません。

config.ymlを配置した時点でデフォルトページは表示されなくなります
後はpico/content配下にmdファイルを作成していけばページが生成されます
主に以下のようにページを作成します

pico/content/index.md
いわゆるインデックスページ
https://your-pico-site.com/ にアクセスした時に表示される

pico/content/404.md
いわゆる404ページ
(作らなくてもデフォルトのページが表示される。カスタマイズしたいなら作る)

pico/content/hogehoge.md (hogehogeは任意)
https://your-pico-site.com/hogehoge にアクセスした時に表示される
デフォルトテーマでは、右上のページ一覧にも表示される

pico/content/fooooo/hogehoge.md (foooooとhogehogeは任意)
https://your-pico-site.com/fooooo/hogehoge にアクセスした時に表示される
デフォルトテーマでは、右上のページ一覧には表示されない

各ページのmdファイル構成は『YAMLヘッダー+コンテンツ』のようにします
例えば以下のようになります

---
Title: サンプルページ
Description: これはサンプルページですよ
Date: 2019-01-07
Template: index
---

これはサンプルページですよー

YAMLヘッダーについての詳細は公式ページを参照してください。
公式ページのYAMLヘッダー説明

上記のTemplateには現在のテーマに用意してあるTwigファイル名を指定します
(デフォルトテーマはpico/themes/default)
例えば、上記例であれば利用するテンプレートはindex.twigです。

ブログ化する場合はpicoでブログ構築に続きます。

関連する記事