2019-12-20

Craft CMS でのマルチサイト:マルチサイトでのセクションとフィールドの設定について #craftcms

このエントリは Craft CMS Advent Calendar 2019 20日目のエントリです。
昨日は「Craft CMS でのマルチサイト:マルチサイトの基本とセクションの設定」でした。


マルチサイトでのサイト・セクション・エントリがどのように作成されるかを先日確認した。

エントリには色々なデータを持つことになるのでセクション(入力タイプ)にフィールドを設定していく。

フィールドの設定には多言語の話も関係してくるところがあるが、そのうちの一部をみていく。

フィールドの作成と翻訳方法

フィールドを作成する場合、フィールドごとにこのように翻訳方法を設定する。

翻訳と書いてあるので多言語向けのイメージもあるが、 Craft CMS の場合サイトごとに言語を指定する。
先日の例ではマルチサイトではあるがどちらも日本語のサイトとして作成してある。

なのでそれぞれのサイトごとにデータをどう管理するか?と考えるとわかりやすい。

「翻訳不可」であれば言語・サイト関係なく共通のデータとなる。

「各サイトに対して翻訳」「各サイトグループに対して翻訳」はサイトごとにデータを持つことになる。

「各言語に対して翻訳」はサイトの言語をみることになるので、後ほどの多言語の時にする。

フィールドを作成してデータの状況を確認する

「翻訳不可」「各サイトに対して翻訳」の2つのフィールドを作成する。

リッチエディタで「翻訳不可」のフィールド。

リッチエディタで「各サイトに対して翻訳」のフィールド。

この状態でエントリを「マルチサイト:製品」にサイト「AAA」に作成してみる。

エントリを作成するとサイト「BBB」にもできている(というのは先日の内容)。

このエントリをサイト「BBB」で編集してみる。

この状態でAAAを確認してみる。

「翻訳不可」に指定したフィールドについてはサイトをまたいで共通のデータとなるため、サイト「BBB」で編集した内容がサイト「AAA」にも反映される。

「各サイトに対して翻訳」に指定したフィールドについてはサイト「BBB」で変更した内容はサイト「AAA」には反映されず、「AAA」と「BBB」の内容は別のものとなる。

フィールドの翻訳設定まとめ

多言語で各言語ごとに翻訳するような場合はフィールドの設定として「各サイトに対して翻訳」「各言語に対して翻訳」を選択すると良いだろう。

今回日本語のサイトで共通で利用するようなセクションとして管理している「マルチサイト:製品」についてはフィールドの設定としては「翻訳不可」を選んでおくのが無難だろう。


話がそれるが、フィールド自体は別のセクションでも使うことができる。

マルチサイトとフィールドの翻訳設定が絡んでくると再利用したりするとわけがわからなくなることもあるので、フィールドを別のセクションでも使ったりする場合は気をつけたほうがよさそう。