2019-12-27

Craft CMS で本番のデータを使いながらテンプレート開発する #craftcms

Craft CMS は1つインストールするとサブディレクトリ、別ドメイン問わず複数サイトを作ることができる。

もちろん同一サーバー内ということにはなるが、プロジェクトによっては1つのサーバーで十分という場合もあるだろう。

その際に本番用のサイト、開発用のサイトを分けて管理することもできる。
(アクセスするためのサーバー周りの設定は必要になる)

サイトの設定

このような感じで開発用のサイトを追加する。

DNS周りの設定などはサーバーにあわせて設定する。

テンプレート周りのファイルは

templates/
    default/ 
    testdevelop/

のような構成で置いていくことになる。

default はない場合、templates 直下のテンプレートが使われる。

テンプレートの複製とグローバルでのデータ

元々のトップページのテンプレートを testdevelop/index.html として設置するとこのように表示される。

マルチサイトの設定をした時点で、グローバルの設定内容は自動で反映される。

そのため、ピックアップ下のテキストなどは反映される。

元々のトップページはこのような感じ。

グローバルのなかでもマトリックスフィールド周りは保存し直す事で反映される。

保存後

開発用のテンプレートを調整

テンプレートが別なので、開発用は開発用で修正が可能。

とりあえず順番を入れ替える、とか。

before

after

マルチサイトでセクションのデータを利用する

セクションの設定にもサイトごとの設定が必要になる。

元々の設定はそのサイトのみ対象となっている。

有効にした上で他のサイトにも保存されるようにする。

セクション内の各フィールドにはそれぞれの言語で翻訳するかどうか?という設定があるのでそちらも確認する。

本番用のデータを開発用のサイトで利用するのであれば翻訳不可の状態で問題ない。

ただし、開発用のサイトでデータを変更すると本番用にも反映されるので、そこはあくまでテンプレートレベルでの調整を想定している場合、という前提になる。

開発環境でやりたいことによっては一旦セクションのエントリなどを複製しておくけど、各サイトごとにデータを調整したいといった場合は、そのような翻訳設定を考えておけばよさそう。

このようにセクションの設定も変更しておくことで、サイトでもセクション・エントリが管理できる。

開発用のページの表示としても利用できる。

こんなかんじで、テンプレートなどの開発・調整を本番用ではないところでやるのはやりやすいと思う。

MTでやるとしたら別のウェブサイトを用意してテンプレート(テーマ)を当てて、元々のウェブサイトのidを指定してデータを取り出すとかやる感じかなー。

他のCMSでもできないことはない話ではある。