【EC-cube】規格選択部分に在庫数を表示するカスタマイズ
EC-cubeでECサイトを制作する際に、様々なカスタマイズが必要とされる場合があります。わからないカスタマイズはGoogle先生に聞くのが一番なんですが、自分が探しているカスタマイズがなかなか出てこないこともありますよね。
なので、検索しても出てこなかったカスタマイズを少しずつ紹介していこうかなと思います。あくまで自分が検索した時に出てこなかっただけなので、もしかすると他の方がすでに紹介しているかもしれませんがご了承ください。
規格選択部分に商品の在庫数を表示したい
EC-cubeではデフォルトで規格が2つまで選択できるようになっていますが、これらを選択する際に規格別の在庫数を表示したい場合のカスタマイズです。変更するファイルは一つだけでいたって簡単なカスタマイズとなります。変更するファイル
□階層 /data/class □ファイル SC_Product.php変更前
SC_Product.phpの290行目付近$arrClassCats2['classcategory_id2'] = $classcategory_id2; $arrClassCats2['name'] = $arrProductsClass['classcategory_name2'] . ($stock_find_class ? '' : ' (品切れ中)'); $arrClassCats2['stock_find'] = $stock_find_class; if ($stock_find_class) { $this->stock_find[$productId] = true; } if (!in_array($classcat_id1, $classCats1)) { $classCats1[$classcategory_id1] = $arrProductsClass['classcategory_name1'] . ($classcategory_id2 == 0 && !$stock_find_class ? ' (品切れ中)' : ''); }
変更後
//ここから追加 $cat_stock = '(残り' . $arrProductsClass['stock'] . '個)'; if (empty($arrProductsClass['stock'])) { $cat_stock = false; } //ここまで追加 $arrClassCats2['classcategory_id2'] = $classcategory_id2; $arrClassCats2['name'] = $arrProductsClass['classcategory_name2'] . $cat_stock . ($stock_find_class ? '' : ' (品切れ中)'); $arrClassCats2['stock_find'] = $stock_find_class; if ($stock_find_class) { $this->stock_find[$productId] = true; } if (!in_array($classcat_id1, $classCats1)) { $classCats1[$classcategory_id1] = $arrProductsClass['classcategory_name1'] . $cat_stock . ($classcategory_id2 == 0 && !$stock_find_class ? ' (品切れ中)' : ''); }
解説
まず、cat_stockという変数を用意してここに在庫数を代入します。これが以下の部分です。//ここから追加 $cat_stock = '(残り' . $arrProductsClass['stock'] . '個)'; if (empty($arrProductsClass['stock'])) { $cat_stock = false; } //ここまで追加「残り」や「個」という文字はお好みで添削してください。また、必ず$arrClassCats2['classcategory_id2'] = $classcategory_id2;より上に追加してください。 あとはこの$cat_stockを規格プルダウンの中に表示されるよう追加します。規格1と規格2でそれぞれ追加する箇所がありますのでご注意ください。
$arrClassCats2['classcategory_id2'] = $classcategory_id2; $arrClassCats2['name'] = $arrProductsClass['classcategory_name2'] . $cat_stock . ($stock_find_class ? '' : ' (品切れ中)'); $arrClassCats2['stock_find'] = $stock_find_class; if ($stock_find_class) { $this->stock_find[$productId] = true; } if (!in_array($classcat_id1, $classCats1)) { $classCats1[$classcategory_id1] = $arrProductsClass['classcategory_name1'] . $cat_stock . ($classcategory_id2 == 0 && !$stock_find_class ? ' (品切れ中)' : ''); }このように表示されます。