logo

Palette - Make it Colorful🎨

Palette - Visual Page Builder, no design degree required.

Live Demo Download Palette

Scroll

Palette Proでサイト間のPaletteページを同期する(チャンネル+プル)

Palette Pro channelを使うと、あるサイトが別サイトのCanvasページをHTTP経由で読み取れます。ソース サイトが自身のページを公開し、デスティネーションがそれをリモートとして登録し、必要なページをプルします。ページごとにNew / Needs update / Syncedというステータスが付くので、どれが古くなっているかが常に分かります。これにより、ステージング本番の間でページを同期できます。

このチュートリアルでは、ソースはステージング(stg.drupalbook.org)、デスティネーションは本番(drupalbook.org)です。ここでは、Rowコンポーネントのレイアウト構造を示すページを同期します。

ステージング
stg.drupalbook.org
ソース · チャンネル
HTTP →/palette-pro/channel
本番
drupalbook.org
デスティネーション · リモート+プル

同期するページ

ステージングのページには複数のRowレイアウトが積み重ねられています。均等な列、オフセットの1/3 + 2/3、4列の行、複数行のfull + 2、そしてサイドバー配置などです。各セルにラベルが付いており、構造が一目で分かります。

The Row examples page on staging, showing several column structures.
Rowの例ページ(stg.drupalbook.org、ソース)。
始める前に 両方のサイトに同じモジュール(canvascanvas_palettepalette_pro)と、コンポーネントプロバイダーの同じバージョンが必要です。これにより、ページが同一にレンダリングされます。また、デスティネーションはHTTP経由でソースに到達できる必要があります。

ステップ1 ソースでチャンネルを公開する

ステージングで、Configuration → Web services → Palette Sync channelを開き、チャンネルの保護方法を選択します:

  • 認証なし — オープン。信頼されたネットワーク/内部利用のみ。
  • HTTP Basic認証 — ソース上で「Access the Palette Pro channel」権限を持つDrupalユーザー。
  • アクセストークンX-Palette-Sync-Tokenヘッダーで送信されるシークレット(「Generate」ボタンがあります)。
Palette Sync channel settings on staging with three authentication options.
ソースのチャンネル設定。エンドポイントは/palette-pro/channel/pages/palette-pro/channel/page/{uuid}です。
公開インターネットでは認証を使用する 同じインフラ上の信頼できるステージング→本番リンクであれば「認証なし」で問題ありません。公開されてアクセス可能な場合は、トークンまたはBasic認証を選び、ステップ2でリモートに対応する認証情報を使用してください。

ステップ2 デスティネーションにリモートを追加する

本番で、Configuration → Web services → Palette Sync remotesを開いて「Add sync remote」を実行します:

  • ラベル — 例:「Staging」。
  • ソースサイトURL — ソースのベースURL、https://stg.drupalbook.org(チャンネルパスは付けない)。
  • 認証 — ソースの設定に合わせる(ここではなし)。
Palette Sync remotes list on production showing the Staging remote.
本番のリモート一覧。Stagingリモートがソースを指しています。

ステップ3 ページをプルする

リモートの「Pull pages」操作を使用します。ソースのページがページネーション付きで一覧表示され、それぞれにステータスバッジが付きます:

バッジ意味
NewこのUUIDを持つページがデスティネーションにまだ存在しません。
Needs updateコピーは存在しますが、最後に同期して以降ソースが変更されています。
Syncedデスティネーションのコピーはソースと最新の状態です。

RowページはNewと表示されます。まだ本番にありません。チェックを入れて「Sync selected pages」を押します。

Pull pages listing with the Row page marked New.
Stagingからページをプル — RowページはNew、他のページは既に存在しますがNeed updateです。

Palette Proはチャンネル経由でページのバンドルを取得してインポートします。メディア、ファイル、固定されたコンポーネントバージョンも含め、UUIDで照合されます。ページはSyncedに切り替わります。

Pull pages listing after syncing, showing Synced 1 page and a green Synced badge.
「Synced 1 page.」 — RowページはソースとSyncedになりました。

ステップ4 本番で確認する

キャッシュを再構築し(drush cr)、エイリアス(/row-examples)でページを開きます。すべてのRow構造が、ステージングと同じように本番でレンダリングされます。コンポーネントツリー、固定バージョン、メディアはすべてチャンネル経由で引き継がれます。

The synced Row examples page rendered on production.
同期されたページがdrupalbook.org(本番)で公開されています。ソースと同一です。
完了 ステージングで作成したページが、2クリックでチャンネル経由でプルされ、本番に反映されました。ダウンロード・コピー・アップロードするエクスポートファイルは不要です。

ステータスと再同期の仕組み

デスティネーションは、各ソースページの最終変更時刻を、そのページを最後に同期したときに記録した値と比較します。つまり:

  • ページをステージングで編集する → 次の一覧では本番でNeeds updateと表示されます。
  • 再度プルする → 同じページをその場で更新し(UUIDで照合、重複は作成しない)、Syncedに戻ります。

コマンドラインが好みですか? 同じバンドルはDrush経由でも利用できます。ソースでエクスポートし、デスティネーションでインポートします:

# on staging
drush palette-sync:export 5 --out=row.json
# on production
drush palette-sync:import row.json

チャンネルは、これをHTTP経由で自動化し、上にステータス一覧を表示するだけです。

注意点と落とし穴

  • バージョンを揃える。 本番がステージングと異なるバージョンのコンポーネントを実行している場合、ページはインポートされますがピクセル単位で同一に見えないことがあります。モジュールのバージョンを揃えてください。
  • UUIDによる冪等性。 再プルはその場で更新し、重複を作成しません。
  • 到達可能性。 デスティネーションのPHPは、HTTP(S)経由でソースのチャンネルURLに到達できる必要があります。公開チャンネルはトークンまたはBasic認証で保護してください。
  • 複数のソース。 デスティネーションは複数のリモートを登録し、それぞれからプルできます。

スクリーンショットは、実際の同期中にライブのstg.drupalbook.org(ソース)とdrupalbook.org(デスティネーション)から取得したものです。