2020-06-08

マルチサイトを使った Craft CMS で画像のアップ先を制限する #craftcms

Craft CMS でマルチサイトを使ったときに画像のアップロードとかをどうするのが良さそうか?を考えてみた。
考えてみて @BUN @tinybeans にも色々と教えてもらった。

マルチサイトをディレクトリ型にするか、サブドメインにするか、全然別のドメインのサイトとして管理するかで色々変わるところがあるとは思う。

ディレクトリ型についてはそこまで影響がないというか、Webrootが共通なのでそこまで問題にならなそう。


とりあえず今回の想定としては、サブドメイン型で、フォーマットは共通のパターンを利用したユーザーごとにサイト(ページ)を持てるような構成を考えてみる。

How do I dynamically define Asset Volumes' Base URLs for different Sites? - Craft CMS Stack Exchange
https://craftcms.stackexchange...

とかをみてアップロード先を動的に切り替える方法があるか、、、と思ったけどあまりいい感じの方法はなさそう。

craft3 - Multi-site - Setup remote asset volume to store assets on a per site/folder basis - Craft CMS Stack Exchange
https://craftcms.stackexchange...

をみていて、アップロード先の指定に site.handle を使うことができそう。

ただ、これはボリュームの設定では使うことができない。

ディレクトリ型同様にWebroot を共通にしておき、アップロード先を限定した上で、 site.handle 配下に上がるようにフィールドの設定をすることで、サイトごとに画像の格納先を制御できる。

もちろんユーザーごとにも制限はできる。

Webrootを共通にしているので別のサブドメインでもみようと思えば画像が見れるというのがあるが。。。。

Webroot を別にしたときに画像の変形を使うと画像のアップ先を共通にしていると画像がリンク切れしてしまってはてさて、、、という感じではあった。


ただ、ユーザーの権限設定で他人のアセットを編集できないようにすればそこまで影響はないことが多いと思う。

そもそもとして複数のサイトだとしてもマルチサイトにする必要があるかどうか?
マルチサイトじゃないとしたらコンテンツをどのように分けていくか?といったことを考えてみると良さそう。

サブドメインで増やさない場合はマルチサイトがマストにはならないだろうし。。。。
色々と判断が甘い。