バージョン選択

フォーラム

メニュー

オンライン状況

67 人のユーザが現在オンラインです。 (55 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 67
もっと...

サイト内検索

質問 > フロント機能 > スマートフォンの一覧表示のもっと見るでjsonにおいて在庫数量も取得したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
shore
投稿日時: 2017/3/27 21:40
対応状況: −−−
新米
登録日: 2017/3/27
居住地:
投稿: 5
スマートフォンの一覧表示のもっと見るでjsonにおいて在庫数量も取得したい
▼テンプレート
[EC-CUBE] 2.13.5
[レンタルサーバ] HETEML
[OS] Linux users30
[PHP] PHP Version 5.3.28
[データベース] MySQL 5.6.13-log
[WEBサーバ] Apache

スマートフォンの一覧表示で在庫の表記を行ったのですが、もっと見るでjsonにおいて情報取得を行っているのは理解したのですが、在庫をjsonで取得するコードが分からなく困っております。

在庫の数量表示を行うところまでは出来ております。
JSONでの取得が数量が無いため反映できていない様です。

販売価格のセットとコメントのセットの間で取得しようと思いつくコードを書いたのですが取得できず、諸先輩方にご教授頂きたいと思いまして投稿させて頂きました。
宜しくお願い致します。
h_tanaka
投稿日時: 2017/3/28 9:12
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1610
Re: スマートフォンの一覧表示のもっと見るでjsonにおいて在庫数量も取得したい
どのファイルをどのようにカスタマイズされたのかソースを教えてもらえますでしょうか。
468
投稿日時: 2017/3/28 19:27
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: スマートフォンの一覧表示のもっと見るでjsonにおいて在庫数量も取得したい
/data/class/pages/products/LC_Page_Products_List.php function doJson()の中で、$this->arrProductsをjson形式に変換して、サーバから返却していると思いますが、
stock_min, stock_maxは返却されるjsonに含まれていませんでしたでしょうか?


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

shore
投稿日時: 2017/3/28 22:06
対応状況: −−−
新米
登録日: 2017/3/27
居住地:
投稿: 5
Re: スマートフォンの一覧表示のもっと見るでjsonにおいて在庫数量も取得したい
お返事ありがとうございます。

スマートフォンテンプレート内部のlist.tplに

在庫部分を追加しました。

<!--▲商品ステータス-->
</div>
<!--★商品名★-->
<h3><a rel="external" href="<!--{$smarty.const.P_DETAIL_URLPATH}--><!--{$arrProduct.product_id|u}-->" name="product<!--{$arrProduct.product_id}-->" class="productName"><!--{$arrProduct.name|h}--></a></h3>

<!--★商品価格★-->
<p>
<span class="pricebox sale_price"><span class="mini"><!--{$smarty.const.SALE_PRICE_TITLE|h}-->(税込):</span></span>
<span class="price">
<span id="price02_default_<!--{$id}-->">
<!--{if $arrProduct.price02_min_inctax == $arrProduct.price02_max_inctax}-->
<!--{$arrProduct.price02_min_inctax|n2s}-->
<!--{else}-->
<!--{$arrProduct.price02_min_inctax|n2s}-->~<!--{$arrProduct.price02_max_inctax|n2s}-->
<!--{/if}-->
</span><span id="price02_dynamic_<!--{$id}-->">
</span>円
</span>
</p>
<!--★商品在庫★-->
<p class="stock">在庫:
<!--{if $arrProduct.stock_unlimited_min == 1}--><!--{*無制限*}-->
あり
<!--{else}-->
<!--{if $arrProduct.stock_min != $arrProduct.stock_max}-->
<!--{$arrProduct.stock_min|escape}-->~<!--{$arrProduct.stock_max|escape}-->
<!--{else}-->
<!--{$arrProduct.stock_min|escape}-->
<!--{/if}-->個
<!--{/if}-->
</p>

<!--★商品コメント★-->
<p class="listcomment"><!--{$arrProduct.main_list_comment|h|nl2br}--></p>
</div>
</div>

PCページでは問題なく 在庫を取得できているのですが・・・
スマートンのもっと見るで jsonで取得する部分に在庫読み込みを反映する部分が無いからだと思われます。


$($(".list_area a.productName").get(maxCnt)).text(product.name);
$($(".list_area a.productName").get(maxCnt)).attr("href", url + product.product_id);

//販売価格をセット
var price = $($(".list_area span.price").get(maxCnt));
//販売価格をクリア
price.empty();
var priceVale = "";

//販売価格が範囲か判定
if (product.price02_min == product.price02_max) {
priceVale = product.price02_min_inctax_format + '円';
} else {
priceVale = product.price02_min_inctax_format + '~' + product.price02_max_inctax_format + '円';
}
price.append(priceVale);

ここの部分に数量を取得する文面が必要なはずなのですが・・・


//コメントをセット
$($(".list_area .listcomment").get(maxCnt)).text(product.main_list_comment);
}
pageNo++;

//全ての商品を表示したか判定
if (parseInt($("#productscount").text()) <= $(".list_area").length) {
$("#btn_more_product").hide();
}
eccube.hideLoading();
}
});
}
</script>

間違っておりますでしょうか・・・
shore
投稿日時: 2017/3/28 22:10
対応状況: −−−
新米
登録日: 2017/3/27
居住地:
投稿: 5
Re: スマートフォンの一覧表示のもっと見るでjsonにおいて在庫数量も取得したい
お返事ありがとうございます。
スマートフォンテンプレートのlist.tpl内部の スクリプト部分にstokを呼び出す部分の記載が無いように思います。

<script>
var pageNo = 2;
var url = "<!--{$smarty.const.P_DETAIL_URLPATH}-->";
var imagePath = "<!--{$smarty.const.IMAGE_SAVE_URLPATH}-->";
var statusImagePath = "<!--{$TPL_URLPATH}-->";

function getProducts(limit) {
eccube.showLoading();
var i = limit;
//送信データを準備
var postData = {};
$('#form1').find(':input').each(function(){
postData[$(this).attr('name')] = $(this).val();
});
postData["mode"] = "json";
postData["pageno"] = pageNo;

$.ajax({
type: "POST",
data: postData,
url: "<!--{$smarty.const.ROOT_URLPATH}-->products/list.php",
cache: false,
dataType: "json",
error: function(XMLHttpRequest, textStatus, errorThrown){
alert(textStatus);
eccube.hideLoading();
},
success: function(result){
var productStatus = result.productStatus;
for (var product_id in result) {
if (isNaN(product_id)) continue;
var product = result[product_id];
var productHtml = "";
var maxCnt = $(".list_area").length - 1;
var productEl = $(".list_area").get(maxCnt);
productEl = $(productEl).clone(true).insertAfter(productEl);
maxCnt++;

//商品写真をセット
$($(".list_area .listphoto img").get(maxCnt)).attr({
src: "<!--{$smarty.const.IMAGE_SAVE_URLPATH}-->" + product.main_list_image,
alt: product.name
});

// 商品ステータスをセット
var statusAreaEl = $($(".list_area div.statusArea").get(maxCnt));
// 商品ステータスの削除
statusAreaEl.empty();

if (productStatus[product.product_id] != null) {
var statusEl = '<ul class="status_icon">';
var statusCnt = productStatus[product.product_id].length;
for (var k = 0; k < statusCnt; k++) {
var status = productStatus[product.product_id][k];
var statusImgEl = '<li>' + status.status_name + '</li>' + "\n";
statusEl += statusImgEl;
}
statusEl += "</ul>";
statusAreaEl.append(statusEl);
}

//商品名をセット
$($(".list_area a.productName").get(maxCnt)).text(product.name);
$($(".list_area a.productName").get(maxCnt)).attr("href", url + product.product_id);

//販売価格をセット
var price = $($(".list_area span.price").get(maxCnt));
//販売価格をクリア
price.empty();
var priceVale = "";

//販売価格が範囲か判定
if (product.price02_min == product.price02_max) {
priceVale = product.price02_min_inctax_format + '円';
} else {
priceVale = product.price02_min_inctax_format + '~' + product.price02_max_inctax_format + '円';
}
price.append(priceVale);

//コメントをセット
$($(".list_area .listcomment").get(maxCnt)).text(product.main_list_comment);
}
pageNo++;

//全ての商品を表示したか判定
if (parseInt($("#productscount").text()) <= $(".list_area").length) {
$("#btn_more_product").hide();
}
eccube.hideLoading();
}
});
}
</script>

販売価格 と コメントの間に stockの記述が必要ではないかと思っているのですが・・・
468
投稿日時: 2017/3/31 9:39
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: スマートフォンの一覧表示のもっと見るでjsonにおいて在庫数量も取得したい
>スマートフォンテンプレートのlist.tpl内部の スクリプト部分にstokを呼び出す部分の記載が無いように思います。

>販売価格 と コメントの間に stockの記述が必要ではないかと思っているのですが・・・

投稿いただいているとおり、
デフォルトでは、在庫をセットするスクリプトは記述されていませんので、
ご自身で追記していただく必要があります。

サーバから返却されたjsonには、在庫情報が含まれていると思いますので、
スクリプト内でproduct.stock_maxやproduct.stock_minで在庫数が取り出せると思います。

あとは追記されたtplの<p class="stock"></p>の中にappend等を使ってセットする処理を記述すれば良いと思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

shore
投稿日時: 2017/4/6 0:48
対応状況: −−−
新米
登録日: 2017/3/27
居住地:
投稿: 5
Re: スマートフォンの一覧表示のもっと見るでjsonにおいて在庫数量も取得したい
shiro8様

色々と試してみたのですが、勉強不足でうまく数量を呼び出すことが出来ず・・・悩んでおります。
厚かましいお願いなのですが・・・

セット方法をご教授いただけませんでしょうか・・・

すでに業務レベルとの事でしたら、その旨ご回答いただいてもかまいません。
468
投稿日時: 2017/4/6 13:35
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: スマートフォンの一覧表示のもっと見るでjsonにおいて在庫数量も取得したい
動作確認はしていませんので、もしかしたら、エラーが出るかもしれませんが、
以下の記述を<script></script>内のコメントと販売価格をセットしている間に追記すれば良いかと思います。

//在庫数をセット
var stock = $($("p.stock").get(maxCnt));
//在庫数をクリア
stock.empty();
var stockVale = "";

if (product.stock_unlimited_min == 1) {
	stockVale = 'あり';
} else {
	//在庫数が範囲か判定
	if (product.stock_min == product.stock_max) {
		stockVale = product.stock_min + '円';
	} else {
		stockVale = product.stock_min + '~' + product.stock_max + '個';
	}
}
stock.append(stockVale);


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

shore
投稿日時: 2017/4/6 23:09
対応状況: 解決済
新米
登録日: 2017/3/27
居住地:
投稿: 5
Re: スマートフォンの一覧表示のもっと見るでjsonにおいて在庫数量も取得したい
shiro8様

ご回答ありがとうございます。
純粋に価格セットの文面にstokを組み込めばよかったのですね・・・
余分な記述を入れておりました。

無事、在庫の取得ができるようになりました。
ありがとうございました!
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,308名です
総投稿数は109,693件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.