カスタマイズガイド

🌐 言語: 🇻🇳 Tiếng Việt · 🇬🇧 English · 🇯🇵 日本語(現在)

Multi-Store — パート3: カスタマイズ

はじめに

このドキュメントでは、アップデートできる状態を壊さずに 各ストアに独自の個性を持たせる方法 を説明します。ストアごとのデザインとトップページのレイアウトの変更、表示テキストの変更、スタッフの権限の整理、そしてマルチストアのシステムで動作するプラグインを書く開発者向けの原則です。Web サイトの管理者と開発者の方を対象としています。読み終えると、どこを変更してよいか、どのように変更するか、どこには絶対に触れるべきでないかがわかります。

一貫した原則は プラグインのフォルダ内のファイルを編集しないこと です。そこでの変更は、バージョンアップ時にすべて失われます。

カスタマイズの4つのレベル

レベル できること 必要なもの
1. ストアごとのブランド デザイン、ロゴ、ブランドカラー、メンテナンスページ 管理画面だけ
2. トップページのレイアウト ストアごとに表示ブロックを配置 管理画面だけ
3. 表示テキストと権限 画面のラベル、言語、誰が何をできるか 管理画面だけ
4. コードによる拡張 マルチストアのシステムで正しく動作するプラグインを書く 開発者

レベル1 — ストアごとのブランド

変更したいストアの「マルチストア」→「ストア一覧」→「設定」を開きます。ここで、そのストア専用に次の項目を設定します。

  • テンプレート — ストアごとに、システムにインストール済みのテンプレートを1つ選びます。
  • ロゴ、アイコン(favicon)、SNS 共有用の画像。
  • 言語ごとの 名前、説明、SEO キーワード。
  • 連絡先情報: 電話番号、ホットライン、メールアドレス、営業時間、住所、事務所、倉庫。
  • 言語ごとの メンテナンスページの内容 — ストアを一時停止したときに顧客に表示されるページです。
  • ストアの 既定の言語と通貨。

⚠️ 注意: テンプレートの変更は重い操作で、確認が必要です。 システムはそのストアの古いテンプレートのデータを削除してから、新しいテンプレートのデータを構築します。具体的には、ストアのレイアウトブロックの配置が失われ、新しいテンプレートに合わせてやり直す必要があります。商品、注文、顧客には影響しません。

(ロゴを変えるだけでなく)完全に独自のデザインにしたい場合は、新しいテンプレートを作成してストアに割り当てます: テンプレート作成ガイド を参照してください。

レベル2 — ストアごとのトップページのレイアウト

レイアウトブロック(layout block)は、トップページに並ぶコンテンツのブロックです: 大きなバナー、おすすめ商品、カテゴリ、ニュースなど。

(複数のストアに属することができる)商品やバナーとは異なり、レイアウトブロックはストアごとに完全に独立 しています。各ストアは、他のストアに影響を与えずに、自分のトップページに何をどの順番で表示するかを決められます。管理画面の「レイアウトブロック」を開き、正しいストアを選んでから配置します。

これは、2つのストアが同じテンプレートを使いながら、見た目をはっきり変えるための最も手軽な方法です。

レベル3 — 表示テキストと権限

表示テキストを変更する

プラグインの画面のラベルはすべて データベースに保存された言語文字列 で、ファイルを編集せずに 管理画面で直接変更できます。

  1. 「ローカライズ」→「言語管理」を開きます。
  2. グループ = multi_store で絞り込み、言語を選び、コードまたは画面に表示されている文字で検索します。
  3. 編集して「保存」します — すぐに反映され、プラグインをアップデートしても保持されます。

既定に戻したい場合: その行を削除してから 「ストア一覧」画面を開き直します — プラグインが元の文字列を自動で再登録します。多言語システムの仕組みの詳細: 多言語システム。

スタッフの権限設定

マルチストアの画面は S-Cart 共通の権限システムに含まれています。「ユーザー権限」→「ロール」/「権限」を開き、画面のパス ごとに権限を付与します。権限のないスタッフには、該当するメニュー項目が表示されません。

Pro 版では、ストアを他の人に任せるための 2つのサンプルロール があらかじめ用意されています。

サンプルロール 範囲
Store Admin 1つのストアのすべての業務。そのストアの設定とレポートを含む
Store Member 日々の運用: 商品、注文、顧客、コンテンツ

この2つのサンプルの代わりに、独自のロールを作成することもできます。ただし、ストアの境界は権限設定によるものではありません。どのようなロールや権限を与えても、ストア管理者はシステムレベルの操作と他のストアのデータから常にシステムによってブロックされます — 詳しくは パート2 — 運用 を参照してください。

RBAC の基本: 権限(権限・ロール・ユーザー)。

レベル4 — 開発者向け

マルチストアのシステムで正しく動作するプラグインを書く。 プラグインに、ストアごとに異なる値を設定する必要がある設定(送料、決済ゲートウェイのキー、プロモーションのしきい値など)がある場合は、マニフェスト gp247.json で ストア単位で動作する ことを宣言します。

"storeScope": "store"

こうすると、プラグイン管理画面で管理者が ストアごとに有効/無効と設定を行える ようになり、プラグインは表示中のストアの値を正しく読み取ります — この仕組みを自分で書く必要はありません。GP247 の決済、配送、プロモーション、ニュース、商品レビューのプラグインは、すべてこのように宣言しています。

マルチストアのシステムでコードを書くときに覚えておきたいこと:

  • データを読み書きする前に、必ず「どのストア?」を確認してください。 ストアで絞り込まないクエリは、すべてのストアのデータを返します — 集計レポートを作る場合は正しいですが、それ以外のほぼすべての場面では誤りです。
  • ストアが1つしかないと仮定しないでください。 ドメインのハードコードや、本来ストアごとの処理にシステム全体の設定を使うことが、最もよくある2つの誤りです。
  • ルートストアが常に表示中のストアだと仮定しないでください — ユーザーは別のストアのドメインにいるかもしれません。
  • インストール済みのプラグインのフォルダ(app/GP247/Plugins/...)内のファイルを編集しないでください — 変更はアップデート時にすべて失われます。言語文字列、テンプレートのビュー、公式の拡張ポイントを使ってください。
  • 手動でファイルを置き換えたあとは、php artisan gp247:cache-rebuild を実行し、プラグインの管理画面を一度開き直してください。

関連ドキュメント: プラグイン作成ガイド(v2 標準) と テンプレート作成ガイド。

条件と制約(操作の前に確認)

ストアのテンプレートを変更するとき

  • 実行前に確認が必要です — そのストアの古いテンプレートのデータを破棄する操作です。
  • ストアのレイアウトブロックの配置は失われ、新しいテンプレートに合わせてやり直す必要があります。
  • そのストアにのみ影響します — 他のストアはそれぞれのテンプレートを保持します。

言語文字列を編集するとき

  • 管理画面で編集すればアップデート後も保持されますが、プラグインのフォルダ内のファイルを編集した場合は保持されません。
  • 文字列の行を削除すると既定に戻ります が、プラグインが再登録できるよう「ストア一覧」画面を開き直す必要があります — そうしないと、画面に文字ではなく生のキーが表示されます。

権限を設定するとき

  • 権限は、メニュー名ではなく画面のパスごとに付与されます。
  • 権限設定でストア管理者の範囲を広げることはできません — ストアの境界はシステムが守っており、権限を追加しても越えられません。

プラグインを書くとき

  • storeScope を宣言していないプラグインの設定は、システム全体で共通です — すべてのストアが同じ値を使います。設定をストアごとに分ける必要がある場合は宣言してください。
  • Multi-Store プラグインをアンインストールしても、作成したストアのデータは削除されません が、Web サイトはドメインによるストアの識別を行わなくなります — 本番サイトでアンインストールする前によく検討してください。

よくある質問(Q&A)

Q1: 2つのストアで同じテンプレートを使っています。見た目を変えるにはどうすればよいですか?

→ ロゴや色を変え、ストアごとにトップページのレイアウトブロックを配置 します — レイアウトブロックはもともとストアごとのデータです。まったく違うものにしたい場合は、専用のテンプレートを作成してストアに割り当てます。

Q2: ストアのテンプレートを変更すると、商品や注文は消えますか?

→ いいえ。再構築されるのはそのテンプレート自体のデータだけで、主なものはストアのレイアウトブロックの配置です。

Q3: ストアごとに違う言語を使えますか?

→ はい。ストアごとに既定の言語があり、内容(名前、説明、メンテナンスページ)は言語ごとに設定します。

Q4: スタッフには1つのストアだけを管理させたいのですが、どうすればよいですか?

→ Pro 版の場合:「ストア管理者」画面でそのアカウントにストアを割り当て、サンプルロール Store Admin または Store Member を選びます。スタッフはそのストアのドメインでログインし、自分の担当範囲だけを見られます。

Q5: 自作のプラグインはマルチストアのシステムで動きますか?

→ 動きます。ただし、設定をストアごとに変える必要がある場合は gp247.json に "storeScope": "store" を宣言し、常に表示中のストアでデータを絞り込んでください。

Q6: 画面に文字ではなく生のキー(multi_store.something のような)が表示されます。

→ 言語文字列がまだ登録されていません。「ストア一覧」画面を一度開き直すか、プラグインを無効にしてから再度有効にしてください。


⬅️ パート2 — 運用 · 目次


📅 最終更新: 2026-10-22 · ✍️ 作成者 (Author): GP247