category

ワークフローっぽいことを Craft CMS のマルチサイトで試してみる #craftcms

2022-08-31

CMSの機能の1つでワークフロー(承認依頼)がよくある。
フローの内容についての要望は結構クライアントによって変わることが多いイメージ。
頑張って設計とかしても結局裏道で対応するとかが多いのでは?という気もしている。
とはいえ、これは実際にちゃんと使っている会社を知らない自分の視野の狭さだけなのかもしれない。

Craft CMS のワークフロー(プラグイン)はそこまで強くない。
要望を満たせるのであれば Workflow プラグインを使う。
どうしても要望を優先したワークフローが必要な場合は、その機能があるCMSをオススメしている。
それでも要望を完全に満たせる場合があるのか、、、というのはいつも気になっている。

承認待ち&公開予約しているエントリ

先日話を聞いていて、ワークフローっぽい事を Craft CMS でやるなら、1つのCMSで

  • CMS用サイト / cms.example.com
  • Production用サイト / www.example.com

みたいなマルチサイト構成にする。

承認OKなエントリのデータを Production 用サイトでステータスを有効にすればできそうだなぁとは思った。

「承認済み = Prodサイトで有効」ということになる。

メール通知とか機能部分の自動化とかは要開発。

フィールドごとにサイト間でデータを共通にするかしないか、というのが Craft CMS では設定できる。
そのため今回の場合は基本的に各サイト間でフィールドを共通利用することになる。

「承認待ち状態」「承認依頼中」といったワークフローのステータス自体はなにかプルダウンとかで持つ必要はあったりする。

この場合だと、未来日に予約公開予定で設定されて、承認待ちの状態だったエントリが公開されてしまう、という事自体は防げる。

公開中エントリに対するワークフロー

公開中のエントリを差し替えたいといったときのワークフローを考えると、別リビジョンを作ってそこで進めていく形になる。

その中でもワークフローっぽいかんじで進めていくことはできる。
ワークフローのステータスを1つのフィールドの値として持っているため。

Craft のエントリ一覧はエントリのステータスごとの一覧と、ドラフトが別になる。

20220831 091824

そのためエントリの一覧で、「承認待ちの一覧」「差し戻しの一覧」みたいな、ワークフローのステータスごとの一覧を管理画面で見ようとしても、エントリの一覧をフィルタする際に別リビジョンでつくられたドラフトが別の一覧になってしまう。

承認待ちエントリの一覧

20220831 091455

承認待ちエントリの一覧(ドラフト)

公開中のエントリに変更して差し替え待ち状態で、承認待ちの状態。

20220831 091507

ここだけは、Custom Element Source で一覧を作ったとしてもどうにもならない。

20220831 091757

できないものは仕方ないので、ここだけは運用でカバーという悪手になってしまう。

もしくは、Workflowプラグインを使えば解消できるかもしれないが、これはこれでワークフローのステータス概念が別だとは思うので、、、

Workflow - Features | Verbb
https://verbb.io/craft-plugins...

以前調べたときはフローの種類が1つしかつくれなかったので断念したのだけど、そこは少し変わったりしているのだろうか。
今度見てみよう。

他には、フィールドを使う、エントリタイプを使う、出力のテンプレート側の制御で頑張るとか、細かい方法は色々ありそう。

とはいえ、これはあくまで Craft CMS でやるなら、という代替手段。
ワークフローの重要度が高く、CMSが提供しているワークフロー機能が、要望をしっかり満たせて、いるのであればそのCMSを使った方がよいとは思う。