logo

Palette - Make it Colorful🎨

Palette - Visual Page Builder, no design degree required.

Live Demo Download Palette

Scroll

Paletteページの一括検索と置換

Paletteで構築したコンテンツは、各ページのコンポーネントツリー内に存在します。タイトル、リッチテキスト、ボタンのラベル、リンク先、メディア参照はすべて、ページに保存された inputs内に収められています。そのため、サイト全体の変更は面倒です。同じ製品名やロゴが何十ものページに表示されることがあり、編集できる単一のフィールドは存在しません。

Palette Pro の新しいコマンドがまさにそれを解決します。各コマンドはすべてのPaletteページを走査し、一致する箇所だけを書き換え、実際に変更があったページのみを保存します。また、 --dry-run でデータベースに触れる前にすべてをプレビューできます。

🏷️

製品名を変更する

ページ本文やボタンに表示される製品名・機能名を、すべての箇所で変更します。

🏢

会社をリブランドする

古い会社名を新しい会社名に、サイト全体で一度に置き換えます。

🔗

リンクの向き先を変更する

すべてのリンクを、古いURLやページから新しい宛先へ移動します(内部・外部を問わず)。

🖼️

ロゴを置き換える

古い画像・ロゴへのすべての参照を、新しいメディア項目に向け直します(サイト全体)。

出発点

デモページには、4つの要素が1つのビューにまとまっています。ヘッダーの ロゴ“Download Palette” という製品ボタン、ナビゲーションと行動喚起の リンク、そしてヒーロー内の メディア画像 です。

Canvas demo page before any changes: purple P logo, Download Palette button, Make it colorful hero and colourful wheel image.
“Palette” のデモページ(初期状態)。製品名、ロゴ、リンク、ヒーロー画像はすべて、Paletteコンポーネントの入力からレンダリングされています。

① テキストと名前 — ppr:string

サイト全体で製品名や会社名を変更する

製品「Palette」を「Prism」に改名するとします。まずドライランを実行して、何が変更されるかを正確に確認します。この時点ではまだ何も書き込まれません:

drush — ドライラン
$ drush ppr:string "Palette" "Prism" --dry-run
 ---------------- -------------
  Canvas page ID   Occurrences
 ---------------- -------------
  13               7
  22               1
 ---------------- -------------
 [OK] [dry-run] Would replace "Palette" -> "Prism": 8 occurrence(s) across 2 page(s).

ページごとのテーブルに一致箇所が表示されます。問題なければ、 --dry-run を外して適用します:

drush — 適用
$ drush ppr:string "Palette" "Prism"
 [OK] Replaced "Palette" -> "Prism": 8 occurrence(s) across 2 page(s).

製品ボタンは即座に更新されます。ページ本文・見出し・リッチテキスト内の他のすべての「Palette」も同様です:

変更前

Header showing the Download Palette button.

変更後

Header showing the Download Prism button.

マッチングは単純な部分文字列の置換で、文字列値・リッチテキストHTML・各ページのタイトルと説明に適用されます。大文字と小文字を区別するため、 Palettepalette は別々に扱われます。

② リンク — ppr:link

すべてのリンクを新しいページに向ける

ランディングページが移動したら、リンクされているすべての箇所で宛先を更新します。linkコマンドはリンクURIを 完全一致でマッチするため、 /about が誤って /about-usを書き換えることはありません。絶対URLでもDrupal内部URL(internal:/…)でも同様に機能します。

drush — ドライラン
$ drush ppr:link "https://www.drupal.org/project/canvas_palette" \
        "https://prism.example.com/download" --dry-run
 ---------------- -------------
  Canvas page ID   Occurrences
 ---------------- -------------
  13               4
 ---------------- -------------
 [OK] [dry-run] Would replace
   https://www.drupal.org/project/canvas_palette
   -> https://prism.example.com/download: 4 occurrence(s) across 1 page(s).

古いアドレスを指していたすべての行動喚起・ナビゲーション項目・インラインボタンが、1つのコマンドで新しいアドレスに解決されます。ページごとの編集は不要です。

内部リンクも同様

サイトページ間の向き先変更も同じように機能します: drush ppr:link "internal:/old-page" "internal:/new-page".

③ メディアとロゴ — ppr:media

ロゴや画像をすべての箇所で入れ替える

メディア参照は識別子によって入れ替えられます。各引数は数値の メディアID または UUID, and both are validated to exist before anything changes. Here we replace the old header logo (media 24) with a new one (media 9):

drush — ドライランと適用
$ drush ppr:media 24 9 --dry-run
 ---------------- -------------
  Canvas page ID   Occurrences
 ---------------- -------------
  13               1
 ---------------- -------------
 [OK] [dry-run] Would replace media 24 -> media 9: 1 occurrence(s) across 1 page(s).

$ drush ppr:media 24 9
 [OK] Replaced media 24 -> media 9: 1 occurrence(s) across 1 page(s).

ヘッダーはそれを使用するすべてのページに表示されるため、1回の実行でロゴをサイト全体でリブランドできます。このコマンドは、コンポーネントの画像・動画参照に加えて、ページ自身の画像フィールドも対象とします。

変更前 — 旧ロゴ

Header with the original solid purple P logo.

変更後 — 新ロゴ

Header with the new colourful wheel logo and Download Prism button.

リブランド全体を並べて比較

3つの短いコマンド(名前・リンク・ロゴ)でページが一変し、まったく同じ編集がサイト内の他のすべてのCanvasページにも適用されます。

変更前

Original demo page.

変更後

Rebranded demo page with new name and logo.

実サイトで安全に使える設計

  • まずプレビュー。 すべてのコマンドは --dry-runを受け付け、何も書き込まずにページごとの正確な件数を出力します。
  • 変更があったものだけが保存される。 一致しないページはそのまま残され、リビジョン履歴がクリーンに保たれます。
  • 正確なマッチング。 リンクは完全一致のURIで、メディアは検証済みのID/UUIDでマッチし、巻き添えの編集はありません。
  • 堅牢な実行。 あるページに、Canvasが再保存できないレガシーなコンポーネントデータが含まれている場合、そのページはバッチ全体を中止せず、明確な警告とともにスキップされます。
drush — 保存できないページはスキップされ、致命的エラーにはならない
$ drush ppr:string "About us" "Our Story"
 ! [WARNING] 1 page(s) matched but could not be saved
             (pre-existing invalid component data) and were skipped:
 ---------------- ------------------------------------------------------------
  Canvas page ID   Save error
 ---------------- ------------------------------------------------------------
  9                inputs.baf00a36…flex_direction: The property flex_direction
                   is required.
 ---------------- ------------------------------------------------------------

実行は続行され、正常なページはすべて更新されます。スキップされたページはIDで報告されるため、個別に修正できます。

コマンドリファレンス

コマンドエイリアス置換対象
palette-pro:replace-string "<search>" "<replace>"ppr:string文字列値・リッチテキストHTML・ページのタイトル/説明内の任意の部分文字列。
palette-pro:replace-link "<old-uri>" "<new-uri>"ppr:link完全一致のリンクURI(および素のリンク文字列)。絶対または internal:/….
palette-pro:replace-media <old> <new>ppr:mediaあらゆる箇所のメディア参照(コンポーネントの画像/動画+ページの画像フィールド)。引数はメディアIDまたはUUID。

任意のコマンドに --dry-run を追加するとプレビューできます。それぞれ、いくつの箇所を変更したかをページごとのテーブルで出力します。