EC-CUBE で B2B
構築を相談する

プラグイン一覧 / 会員限定サイト

会員限定サイトプラグイン

サイト全体を会員限定にします。未ログインの人はログインページへ誘導され、許可したページだけが開きます。

単体で動きます。他のプラグインは要りません。

会員グループ管理は必須ではありません。入れている場合だけ機能が増えます。

何のためのプラグインか

EC-CUBE は商品も価格も、誰にでも見えるのが既定です。次のような店では困ります。

商品ごとに閲覧制限を掛けていくこともできますが、商品が増えるたびに設定が要ります。 このプラグインはサイト全体を閉じ、開けたいページだけを許可する形にします。

未ログインでアクセスしたとき

会員グループ管理との違い

同じ「見せない」でも、向きが逆です。

会員限定サイト 会員グループ管理
既定 全部閉じて、開けたいページを許可する 全部開けて、隠したい商品にグループを割り当てる
ログイン後 全部見えます 属しているグループのものだけ見えます
向く店 一般客に何も見せない卸売サイト BtoC と併用し、卸商材だけ隠す店

併用できます。 サイト全体を閉じたうえで、ログインした会員にはグループごとに 出し分ける、という組み方です。

できること

機能 内容
サイト全体の会員限定化 未ログインユーザーをログインページへ誘導します
許可URLの設定 未ログインでも閲覧できるページを指定します
許可カテゴリの設定 特定カテゴリの商品一覧だけを未ログインに公開します
許可カテゴリの一括登録 許可カテゴリを CSV でまとめて登録します
商品価格の非表示 未ログインユーザーには価格を見せません
ログインメッセージ ログインページに出す案内文を編集できます

見えるかどうかの決まり方

上から順に見て、最初に一致した規則を使います。

順 対象 未ログインの人
1 許可URLに登録したパスとその配下 閲覧できます
2 許可カテゴリの商品一覧 閲覧できます
3 それ以外すべて ログインページへ

画面

許可URL設定

許可URL設定

有効化した時点で、会員登録(/entry)・ヘルプ(/help)・パスワード再発行 (/forgot)・お問い合わせ(/contact)の4つが登録されます。これらを消すと、 誰も入会や問い合わせができなくなります。

URL は / で始めてください。登録すると既存の一覧はすべて置き換わります。 ログインページと管理画面は、設定に関係なく常に開きます。

基本設定

基本設定

価格非表示を有効にすると、未ログインの人が商品ページを開いたときだけ、価格を 0 として出力したうえで価格表示とカートボタンを取り除きます。表示のときだけ 差し替えるので、登録済みの価格が書き換わることはありません。

設定の反映にはキャッシュクリアが要ります

アクセス制御は、プラグインの設定を読んでサイト全体の規則として組み立てています。 管理画面から保存した時点でキャッシュは消えますが、DB を直接書き換えた場合は bin/console cache:clear を実行するまで反映されません。 ログインメッセージの 変更も同じです。設定を変えたのに表示が変わらないときは、まずキャッシュを疑って ください。

許可カテゴリ設定

許可カテゴリ設定

使い方

やりたいこと 設定
サイト全体を閉じる 有効化するだけです
品揃えだけ見せる 許可カテゴリにカテゴリを登録します。一覧は開き、詳細は閉じたままです
価格だけ隠す 基本設定の「未ログイン時、商品価格非表示」を入れます
会員ごとに出し分ける 会員グループ管理を併用します

外部のクローラーが読む URL は許可しておく

サイト全体がログイン必須になるため、クローラーが読む URL も塞がります。 クローラーは会員になれないので、そのままでは読めません。エラーにはならず、 リダイレクトされるだけなので気づきにくいです。使っているなら許可URLに足してください。

URL 何のため
/pfe/feed 商品フィード管理プラグインが出す Google・Facebook 向けフィード
/sitemap サイトマップ

ログインした会員にも価格を隠したいとき

基本設定の価格非表示が効くのは未ログインの人にだけです。「承認が下りるまで卸価格は 伏せる」「卸グループの会員にだけ価格を出す」は会員ごとの線引きなので、設定では書けません。 判定を足します。

class ApprovedCustomerOnly implements PriceVisibilityInterface
{
    public function isVisible(Customer $Customer, ProductClass $ProductClass): bool
    {
        // 本会員以外(仮会員・退会)には価格を見せない
        return $Customer->getStatus()?->getId() === CustomerStatus::REGULAR;
    }
}

足した判定はすべて呼ばれ、1つでも「見せない」と答えたら隠します。 足せるのは隠す 方向だけで、true を返しても未ログインへの非表示は覆せません。基本設定の価格非表示を 切っている店では、この判定そのものが呼ばれません。

隠れるのは金額だけで、カートボタンは残ります。 価格表示とカートボタンを取り除く処理は 未ログインのときにしか動かないので、会員の画面には ¥0 とカートボタンがそのまま出ます。 0 円の注文が通らないよう、テンプレート(app/template/<テーマ>/Product/detail.twig ほか)を 上書きして価格とカートボタンを出さないようにするか、 購入資格などで購入そのものを止めてください。

できないこと

項目 内容
会員ごと・グループごとの出し分け できません。ログインすればすべて閲覧できます。必要なら会員グループ管理を併用してください
ログインメッセージの保存先 プラグイン内のファイルに保存するため、更新すると初期値に戻ります。変更後はキャッシュを削除するまでフロントに反映されません
許可カテゴリにしたカテゴリの削除 先に許可カテゴリから外してください。そのまま削除しようとするとエラーになります
CSV 取込の巻き戻し 存在しないカテゴリIDが混ざっていると、その行を飛ばして残りで確定します。既存の許可カテゴリは消えたままになるので、取込前に確認してください。ヘッダーや列数が不正な場合は取り込まず、既存の許可カテゴリを残します
会員グループ価格管理と重なります 会員グループ価格管理も同じ場所で価格を差し替えます。こちらが 0 を入れたあとに会員グループ価格が上書きするので、隠したはずの価格が出ます。 会員に価格を隠す判定を足すなら、対象が会員グループ価格の対象と重ならないようにしてください
許可URL・許可カテゴリの判定は差し替えられません アクセス制御はキャッシュを作るときにサイト全体の規則として組み上がり、リクエスト中はプラグインのコードが1行も走りません。「この会員だけこのURLを開く」「時間帯で開く」は、Symfony の規則を自分で足すか、投票(Voter)を書いて作ります
商品詳細の開放と価格非表示の併用 商品詳細も未ログインに公開するには許可URLに /products を足すことになりますが、この構成での価格非表示との併用は検証していません

動作要件

項目 内容
EC-CUBE 4.4 系
PHP 8.2 / 8.3
データベース MySQL 8 / PostgreSQL 13 以上
依存プラグイン なし(単体で動きます)

4.2 / 4.3 系と 4.1 系は別のブランチがあります。EC-CUBE 4.4 は Symfony 7 / Doctrine ORM 3 へ上がっており、互換性がありません。

差し替えられるところ

主要な処理はインターフェースとして切ってあります。実装を差し替えれば動きが変わります。 自社の商習慣に合わない部分があれば、まず差し替えで済むかを確かめてください。

AI に書かせられます。このプラグインには CLAUDE.md と docs/extension-samples.md が 同梱されていて、差し替え口ごとにそのまま使えるサンプルが載っています。 やりたいことを日本語で伝えれば、AI コーディングツールが実装を書きます (くわしく)。

インターフェースできること
PriceVisibilityInterfaceログイン済みの会員にも価格を隠す(承認が下りるまで卸価格を伏せる、卸グループにだけ出す、など)。隠す方向にだけ働く

入手する

オーナーズストアで購入

買い切りです。月額はかかりません。予定価格 税抜 50,000 円。

予定価格です。オーナーズストアでの販売開始時に変わる場合があります。

販売ページの準備ができ次第、ここに載せます。

導入を任せる

サーバーの用意から EC-CUBE の設置、プラグインの導入と設定まで請け負います。 商習慣に合わせた作り足しもご相談ください。

この条件で回るか、確かめてから決めてください

締め日、支払サイト、請求書の様式、会計ソフトへの受け渡し。合うかどうかは商習慣によって変わります。やりたいことを書いて送ってください。