【EC-cube】規格選択部分に在庫数を表示するカスタマイズ

EC-cubeでECサイトを制作する際に、様々なカスタマイズが必要とされる場合があります。わからないカスタマイズはGoogle先生に聞くのが一番なんですが、自分が探しているカスタマイズがなかなか出てこないこともありますよね。
なので、検索しても出てこなかったカスタマイズを少しずつ紹介していこうかなと思います。あくまで自分が検索した時に出てこなかっただけなので、もしかすると他の方がすでに紹介しているかもしれませんがご了承ください。

規格選択部分に商品の在庫数を表示したい

EC-cubeではデフォルトで規格が2つまで選択できるようになっていますが、これらを選択する際に規格別の在庫数を表示したい場合のカスタマイズです。変更するファイルは一つだけでいたって簡単なカスタマイズとなります。

eccube

変更するファイル

□階層 /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 ? ' (品切れ中)' : '');
}

このように表示されます。

規格に在庫数表示

まとめ

在庫数の表示があると、残り少ない商品の駆け込み購入を誘うことができるかもしれません。
必要になった際にお役に立てれば幸いです。ではでは。

※カスタマイズの際は、必ずバックアップを取ってからお試しください。と、最近バックアップを残しておらずご迷惑をおかけしてしまった僕です。。。また、カスタマイズによって動作に問題が生じた場合、当方では責任を負いかねますのでご了承ください。
まだまだ勉強中の身ですのでカスタマイズ方法が正しくない場合があるかもしれません。もしご指摘を頂ければすぐに修正させて頂きます。今後ともご指導・ご鞭撻の程、よろしくお願い致します。