
SKELETON CART ver1.2.0から導入された「在庫数設定機能」は、一定数の商品を販売する際にそれ以上の購入を受け付けない「販売上限数設定機能」です。
そのため、商品在庫が「0」になっている場合でも、商品を購入しようとカートへ追加する段階まで、在庫が不足していることを知らせる方法がありません。(「現在、残りいくつなのか」が表面上では解らない)
SKELETON CART専用 在庫数取得APIモジュール(別売り・税込10,500円)を利用するとその問題を解消できます!
ユーザビリティや在庫管理機能をより強化したい方へ多くの機能をご提供出来ますので、ぜひ導入をご検討ください!
モジュールの設置は、PHPについての知識をお持ちの「中~上級者向け」の内容となります。
設置に当たって、直接的なサポートが出来ない場合もございますのでご了承ください。
SKELETON CART単体では実現できないことも、このAPIモジュールを利用すると実現できます!
購入操作後に在庫数が自動減算されるデモを用意しています。ご自由に操作してください。
本マニュアルでは、このAPIモジュールの基本的な利用方法について、実際のコードを交えてご案内します。
工夫次第では、ここに掲載されていること以外の様々な活用法が考えられますので、ぜひご参考ください。
インストールマニュアルを参考にSKELETON CARTを設置し、正常に動作することをご確認ください。
なお、本APIモジュールを利用するには、SKELETON CARTで「在庫数設定機能」を利用していることが前提となります。
次にAPIモジュールの cartapi.php、skc_client_lib.php をサーバーへアップロードしてください。
本マニュアルでは右図のように設置してご説明差し上げます。
skc_client_lib.php は任意の場所にアップロードしてもOKですが、本マニュアルでは商品ページ(例:sample_item.php)と同じディレクトリに設置して解説しています。
APIモジュールを設置後、以下のコードを商品ページ(例:sample_item.php)の1行目に記載してください。
<?php
include('skc_client_lib.php');
skc_set_cart_info('http://example.com/cart/cartapi.php','');
?>
※商品ページの拡張子は「php」に限りませんが、PHPが動作する必要があります。
上記は商品ページとライブラリファイルが同じディレクトリに存在する事を前提に記載しています。
その設置場所が異なる場合、skc_client_lib.php までの相対パスを記載してください。
skc_set_cart_info の第1引数には cartapi.php の設置URLを記載してください。
商品ページにAPIモジュールを組み込み、商品情報(商品名・価格・商品グループID・在庫数)を表示させます。
実際にAPIモジュールを使用して取得しているitem.datの内容はこちらでご覧ください。
(ブラウザ閲覧の都合上、拡張子をtxtに変更しています。)
以下の「記載するコードの内容」を、該当箇所に記載することで、商品データからその内容を取得し表示します。
('商品ID')の箇所には、実際に出力する商品の「商品ID」を半角英数字で記載してください。
| 取得するデータ | 記載するコードの内容 | item.txtから取得した商品ID:2のデータ出力例 |
|---|---|---|
| 商品名 | <?php skc_item_name('商品ID'); ?> | 商品サンプル002 |
| 価格 | <?php skc_item_price('商品ID'); ?>円 | 2,000円 |
| グループID | <?php skc_item_group_id('商品ID'); ?> | 1 |
| 在庫数 | <?php skc_item_stock_quantity('商品ID'); ?> | 20 |
上記により、商品ページ側で各種データの内容を表示する事が可能になります。
これで商品ページに現在の在庫数をリアルタイム表示することが出来ます。
商品IDを省略する
上記表の('商品ID')部分について、以下のようにそのページ冒頭で一括指定する事も出来ます。
(skc_set_cart_info の第2引数に「商品ID」を記載します)
<?php
include('skc_client_lib.php');
skc_set_cart_info('http://example.com/cart/cartapi.php','2');
?>
この場合、各コード部分ではその商品IDを省略することが出来ます。
<?php skc_item_name(); ?>、<?php skc_item_price(); ?> など
ここでは、「在庫数が0個の場合『在庫切れ』、20個以下の場合『残り僅か』、21個以上の場合は実際の在庫数を表示」するようコードを作成します。
<?php
include('skc_client_lib.php');
skc_set_cart_info('http://example.com/cart/cartapi.php','商品ID');
?>
<?php
if(skc_get_item_stock_quantity() == 0){
echo "在庫ナシ";
}elseif(skc_get_item_stock_quantity() <= 20 ){
echo "残り僅か";
}else{
echo skc_get_item_stock_quantity()."個";
}
?>
skc_get_item_stock_quantity() は、商品在庫数を「値」として取得する関数で、これを使用してPHPでの条件分岐を行うことが出来ます。(その他利用できる関数などは後述します)
以下は、実際の商品データファイル(item.txt)から取得したものです。
| 商品IDに「1」を指定 | 商品IDに「2」を指定 | 商品IDに「3」を指定 |
|---|---|---|
| 商品名:商品サンプル001 在庫数:在庫ナシ |
商品名:商品サンプル002 在庫数:残り僅か |
商品名:商品サンプル003 在庫数:30 個 |
「在庫ナシ」「残り僅か」の部分には任意の文字を入れられるので、「在庫:×」や「在庫:△」もOKです。
具体的な在庫数を表示せず「在庫:豊富」なども可能です。
条件分岐を使用すると、在庫状態に合わせて購入ボタン部分を変更する事も可能です。
ここでは、「在庫数が0個の場合『在庫がありません』(購入ボタン非表示)、20個以下の場合『在庫残り僅か』、21個以上の場合は『商品をカートに追加する』と表示」するようコードを作成します。
<?php
include('skc_client_lib.php');
skc_set_cart_info('http://example.com/cart/cartapi.php','商品ID');
?>
<?php
if(skc_get_item_stock_quantity() == 0){
echo "在庫がありません。";
}elseif(skc_get_item_stock_quantity() <= 20 ){
echo '<input type="submit" name="submit" value="在庫残り僅か" />';
}else{
echo '<input type="submit" name="submit" value="カートに入れる" />';
}
?>
以下は実際の商品データファイル(item.txt)を利用して出力しています。
| 商品IDに「1」を指定 | 商品IDに「2」を指定 | 商品IDに「3」を指定 |
|---|---|---|
| 在庫がありません。 |
Movable Type/WordPressの専用プラグイン「SKELETON CART Connector」を使用して、一度に多くの商品を登録する場合、商品ページの出力と商品データ(item.dat)の出力までに、時間差が出てしまう場合があります。
もしもその間にユーザーが商品ページを閲覧し、「購入する」ボタンを押してしまった場合、item.dat上には商品IDが無いため「エラー」を表示してしまいます。

そのような場合、商品IDを値として取得する関数 skc_get_item_id() を使用して条件分岐を行う事により、商品データ上に商品IDが存在しない時は「購入ボタンを非表示とする」ことが出来ます。
<?php
include('skc_client_lib.php');
skc_set_cart_info('http://example.com/cart/cartapi.php','商品ID');
?>
<?php
if(skc_get_item_id()!= NULL){
if(skc_get_item_stock_quantity() == 0){
echo "在庫がありません。";
}elseif(skc_get_item_stock_quantity() <= 20 ){
echo '<input type="submit" name="submit" value="在庫残り僅か" />';
}else{
echo '<input type="submit" name="submit" value="カートに入れる" />';
}
}else{
echo '本商品はメンテナンス中です。';
}
?>
以下は実際の商品データファイル(item.txt)を利用して出力しています。
| 商品IDに「3」を指定 | 商品IDに「123456」を指定 |
|---|---|
| 本商品はメンテナンス中です。 |
実際の在庫数に合わせて、その在庫数分だけ「カートへ入れる数量」を可変表示する事が可能です。
これにより、在庫数がある一定数を下回った際に、それ以上をカートへ入れられないように制限する事が可能となります。
(これを利用しない場合は、在庫数以上をカートへ入れようとしてエラーが表示されてしまう可能性があります。)
以下は、在庫数が10以下の場合にその数に応じた数を、11以上の場合には最大10を、在庫が無い場合は「-」をセレクトメニュー内に表示するサンプルです。
<?php
include('skc_client_lib.php');
skc_set_cart_info('http://example.com/cart/cartapi.php','商品ID');
?>
<select name="cart_item_amount">
<?php
if(skc_get_item_stock_quantity() >= 1 && skc_get_item_stock_quantity() <= 10){
for($i=1;$i<=skc_get_item_stock_quantity();$i++){
echo '<option value="'.$i.'">'.$i.'</option>';
}
}elseif(skc_get_item_stock_quantity() >= 11){
echo <<<EOF
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
EOF;
}else{
echo '<option value="-">-</option>';
}
?>
</select>
以下は実際の商品データファイル(item.txt)を利用して出力しています。
| 商品IDに「1」を指定 | 商品IDに「3」を指定 | 商品IDに「4」を指定 |
|---|---|---|
| 在庫数:0
|
在庫数:30
|
在庫数:7
|
APIモジュールを使用すると、SKELETON CART本体を設置しているサーバーとは別のサーバーで運営されているサイトでも、メインサイト側のサーバーから商品情報(item.dat)を取得・表示させることが出来ます。
在庫数はメインサイトで一元管理し、ドメインが異なるサテライトサイトでもリアルタイムに在庫数を表示できます。

実際のコードは以下のように記載します。(利用できる関数・パラメータ等は後述します)
<!-- 商品情報 -->
商品名:<?php skc_dat('http://example.com/cartapi.php?cmd=gt_itm_name&itm_id=商品ID'); ?><br />
価格 :<?php echo number_format(skc_get_dat('http://example.com/cartapi.php?cmd=gt_itm_price&itm_id=商品ID')); ?>円<br />
在庫数:<?php skc_dat('http://example.com/cartapi.php?cmd=gt_itm_stock&itm_id=商品ID'); ?>点<br />
グループID:<?php skc_dat('http://example.com/cartapi.php?cmd=gt_itm_grpid&itm_id=商品ID'); ?><br />
数量 :<select name="cart_item_amount">
<option value="1" selected="selected">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<!-- 購入ボタン -->
<?php
$itemid = skc_get_dat('http://example.com/cartapi.php?cmd=gt_itm_id&itm_id=商品ID');
$stock = skc_get_dat('http://example.com/cartapi.php?cmd=gt_itm_stock&itm_id=商品ID');
if($itemid != NULL){
if($stock == 0){
echo "在庫がありません。";
}elseif($stock <= 20 ){
echo '<input type="submit" name="submit" value="在庫残り僅か" />';
}else{
echo '<input type="submit" name="submit" value="カートに入れる" />';
}
}else{
echo "本商品はメンテナンス中です。";
}?>
例えば、外部にあるサーバーの http://www.lat43n.com/skeleton-cart/data/item.txt を取得してこのページ上で表示すると以下のようになります。
| 商品ID | 「2」を指定 | 「5」を指定 | 「123456」を指定 | 「hogehoge」を指定 |
|---|---|---|---|---|
| 商品情報 |
商品名:Tシャツ02 価格 :2,600円 在庫数:20 点 グループID:2 数量 : |
商品名:T-Shirt05 価格 :2,600円 在庫数:200 点 グループID:1 数量 : |
商品名:別サーバーのデータ 価格 :10,000円 在庫数:0 点 グループID:1 数量 : |
商品名: 価格 :0円 在庫数:点 グループID: 数量 : |
| 購入ボタン | 在庫がありません。 | 本商品はメンテナンス中です。 |
このようにする事で、在庫数の一元管理が可能となり、販売上限数以上の注文を防ぐことが可能となります。
APIモジュールを活用するとURLクエリでitem.dat内のデータ(値)を取得することが出来るので、商品ページ側はさらに自由に作成する事が出来ます。
例えば、javascriptと連携したり、商品ページそのものをFlashで作成する事なども可能です。
| 【関数】 | ||
|---|---|---|
| APIファイルの読み込み | skc_set_cart_info(url,id) | スケルトンカートAPIのURLを指定。 第2引数に商品IDを指定することにより、skc_item_name(id)等の商品情報取得関数のID引数を省略可。 |
| 商品ID | skc_get_item_id | 指定された商品ID(id)を値として取得・表示。 ※主に指定したIDがitem.dat内に存在するか否かを確認する際に使用。 |
| 商品名 | skc_item_name(id) skc_get_item_name(id) |
指定された商品ID(id)に対応する商品名を表示。 あるいは値として取得(条件分岐などに使用)。 |
| 在庫数量 | skc_item_stock_quantity(id) skc_get_item_stock_quantity(id) |
指定された商品ID(id)に対応する在庫数量を表示。 あるいは値として取得(条件分岐などに使用)。 |
| グループID | skc_item_group_id(id) skc_get_item_group_id(id) |
指定された商品ID(id)に対応するグループIDを表示。 あるいは値として取得(条件分岐などに使用)。 |
| 【URLパラメータ】 | ||
|---|---|---|
| パラメータの利用 | skc_dat(url) skc_get_dat(url) |
スケルトンカートAPI(cartapi.php)のURLを指定し、パラメータを追加する事でAPI側から渡される値を取得・表示。 |
| APIのコマンド指定 | cmd | cartapi.php?cmd=***** |
| 商品ID指定用キー | itm_id | cartapi.php?cmd=***&itm_id=商品ID |
| 商品ID | gt_itm_id | cartapi.php?cmd=gt_itm_id&itm_id=商品ID |
| 商品名 | gt_itm_name | cartapi.php?cmd=gt_itm_name&itm_id=商品ID |
| 価格 | gt_itm_price | cartapi.php?cmd=gt_itm_price&itm_id=商品ID |
| 在庫数 | gt_itm_stock | cartapi.php?cmd=gt_itm_stock&itm_id=商品ID |
| グループID | gt_itm_grpid | cartapi.php?cmd=gt_itm_grpid&itm_id=商品ID |
このAPIモジュールは、SKELETON CART本体とは別売り10,500円(税込)となっております。
こちらのページよりご購入いただけます。