プラグイン一覧 / 商品スペック検索
商品スペック検索プラグイン
商品に規格の項目を持たせ、商品一覧で絞り込めるようにします。鋼種や巾のように、型番では探せない商材向けです。
単体で動きます。他のプラグインは要りません。
何のためのプラグインか
鋼材、電子部品、生地。型番を知らないと探せない商材があります。買う側が持っているのは 型番ではなく条件です。「SUS304 の、巾 1000 以下の板」から入ります。
EC-CUBE の検索はキーワードとカテゴリだけです。商品名に「SUS304」と書いておけば キーワードで引っかかりますが、「巾 1000 以下」は書きようがありません。数値の範囲で 絞る仕組みが無いためです。
このプラグインは、商品に規格の項目を持たせて、商品一覧で絞り込めるようにします。
主な機能
| 機能 | 内容 |
|---|---|
| スペックの定義 | 「鋼種」「巾」といった項目を管理画面で作ります |
| 選択肢 | 決まった値から選ばせます。SUS304、SUS316 など |
| 数値と単位 | 寸法や耐圧を数値で持ち、範囲で絞り込みます。 単位も出ます |
| 商品への入力 | 商品登録・編集の画面にそのまま欄が出ます |
| 一覧での絞り込み | カテゴリやキーワードで絞ったまま、さらにスペックで絞れます |
| 商品ページの表 | 商品詳細にスペックの一覧を出します |
画面は1枚も増えません。 管理画面にスペック設定が加わり、フロントは本体の商品一覧と 商品詳細に差し込まれます。
絞り込みは AND と OR を使い分けます
同じ項目の選択肢どうしは OR、別の項目どうしは AND です。
鋼種: [SUS304] [SUS316] ← どちらかに当てはまる
巾: 〜1000 ← かつ、この範囲に入る
「SUS304 か SUS316 で、かつ 巾が 1000 以下」と読みます。買う側の頭の中と同じ形です。
数値は片方だけの指定も通ります。 「1000 以下」だけを知りたいときは、上の欄を空に したまま下の欄に 1000 と入れます。両方空なら条件にしません。

画面
スペックを作る
管理画面のスペック設定 → スペック一覧から項目を作ります。

| 入力 | 内容 |
|---|---|
| 項目名 | 「鋼種」「巾」など。絞り込みの見出しになります |
| 型 | 選択肢か数値。あとから変えると、入っている値は絞り込みに出なくなります |
| 単位 | 「mm」「kg」など。数値のときに値の後ろに出ます |
| 商品一覧の絞り込みに出す | 外すと、商品ページのスペック表にだけ出ます |
| 選択肢 | 選択肢の型のときに並べます。上から順に並びます |
商品に値を入れる
商品登録・編集の画面に「スペック」の欄が出ます。空欄にすると、その項目はその商品に 付きません。

商品ページ
値を入れた商品には、商品詳細にスペックの表が出ます。

出す場所を変える
スペックの表は、既定では商品ページに自動で出ます。設定は要りません。
場所を決めたいときは、テーマのテンプレート
(app/template/<テーマ>/Product/detail.twig)に書いてください。
{{ plg_product_spec() }}
置いた場所にそのまま出て、書いたら自動表示は降ります(二重に出ません)。 テーマを触らない店はこれまでどおりです。
選択肢は行で持ちます
商品側に文字列を持たせていません。文字列だと表記ゆれ(SUS304 と sus304)が そのまま別の値になり、絞り込みの候補が増え続けます。行で持てば、店が名前を直したときに 紐づいた商品すべてに反映されます。
数値は小数3桁まで持てます。板厚 0.315mm のような値が実際にあるためです。
URL を書き換えられても壊れません
絞り込みは GET なので URL に出ます。手で書き換えられる前提で組んであります。
| 送られてきたもの | どうするか |
|---|---|
| 定義に無いスペックの id | 捨てます。残すと、常に0件になる結果を作られます |
| 他のスペックに属する選択肢の id | 捨てます。「鋼種で色を選ぶ」条件を作らせません |
| 数値でない文字列 | 条件にしません |
絞り込みは閉じた状態で出ます
商品一覧の絞り込みは、既定では閉じています。 開いたままだと絞り込みが場所を取り、 商品一覧が下へ押し出されるためです。スペックの数だけ縦に伸びるので、項目が増えるほど 商品が見えなくなります。
絞り込み中は開いた状態で出ます。 いま何で絞っているかが見えないと、外し方が 分かりません。「条件をクリア」も中にあります。
スペックは商品の情報です。受注には残りません
スペックは商品マスタの属性で、注文のたびに決まる値ではありません。受注にも受注CSVにも 入りません。
受注CSVには商品ID・商品コード・商品名が最初から入っている(いずれも既定で「出力する」側) ので、受け取る側は商品コードで商品マスタと突き合わせれば材質も寸法も引けます。
仕様が変わった商品は、スペックを書き換えず新しい商品として登録してください。 書き換えると、過去の受注も新しいスペックで読めるようになります。 SS400 で売った商品の 材質を S45C に直すと、以前の注文まで S45C の品だったことになります。鋼材や部品では 「何を出荷したか」が後から問われるので、型番が変わるなら商品も別にしてください。
知っておいてほしい仕様
| 項目 | 内容 |
|---|---|
| 値は商品に持たせます | 商品規格ではありません。鋼種やメーカーは商品で決まり、サイズや色では変わらないためです |
| 1商品1項目につき1つ | 「鋼種は SUS304 と SUS316 の両方」という持ち方はできません。両方に当てはまる商材は、選択肢を「SUS304/316」として1つ作るほうが絞り込みの結果が読みやすくなります |
| 本体の検索フォームには項目を足していません | Product/list.twig は検索フォームの子要素を1つずつ hidden として描くので、複合の項目を足すと配列を文字列にしようとして商品一覧が落ちます。絞り込みの値はクエリから直接読んでいます |
| 型はあとから変えないでください | 選択肢から数値へ変えると、入っている値が絞り込みに出なくなります |
件数が水増しされません
値のテーブルを JOIN していません。EXISTS で書いています。繋ぐと、1商品が複数の スペックを持つぶんだけ行が増え、件数が水増しされてページ送りの総数も狂います。 DISTINCT で消せますが、本体の商品一覧は販売価格や新着で並べるので相性がよくありません。
動作要件
| 項目 | 内容 |
|---|---|
| EC-CUBE | 4.4 系 |
| PHP | 8.2 / 8.3 |
| データベース | MySQL 8 / PostgreSQL 13 以上 |
| 依存プラグイン | なし |
製品比較を入れていると、比較表にここで作ったスペックの行が 並びます。必須ではありません。
差し替えられるところ
主要な処理はインターフェースとして切ってあります。実装を差し替えれば動きが変わります。 自社の商習慣に合わない部分があれば、まず差し替えで済むかを確かめてください。
AI に書かせられます。このプラグインには CLAUDE.md と docs/extension-samples.md が 同梱されていて、差し替え口ごとにそのまま使えるサンプルが載っています。 やりたいことを日本語で伝えれば、AI コーディングツールが実装を書きます (くわしく)。
| インターフェース | できること |
|---|---|
SearchableSpecProviderInterface | 絞り込み欄に出すスペックを差し替える(カテゴリごとに出す項目を変える、会員グループによっては見せない、など) |
入手する
オーナーズストアで購入
買い切りです。月額はかかりません。予定価格 税抜 50,000 円。
予定価格です。オーナーズストアでの販売開始時に変わる場合があります。
この条件で回るか、確かめてから決めてください
締め日、支払サイト、請求書の様式、会計ソフトへの受け渡し。合うかどうかは商習慣によって変わります。やりたいことを書いて送ってください。