バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 価格順並び替え

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
mini777
投稿日時: 2012/1/25 20:34
対応状況: −−−
一人前
登録日: 2011/11/16
居住地:
投稿: 71
価格順並び替え
漠然とした疑問で申し訳ありません。

価格順に並び替えがうまくいかなくなりました。
原因が分からずに困っています。

触ったソースは
SC_Product_Ex
・findProductIdsOrder
・findProductCount
LC_Page_Products_List_Ex.
・lfGetProductList
です。
考えられる原因がわかる方いたら
よろしくお願いします
mini777
投稿日時: 2012/1/25 21:17
対応状況: −−−
一人前
登録日: 2011/11/16
居住地:
投稿: 71
Re: 価格順並び替え
なんとなく何ですけど規格を設定する前の親の価格を見てる気がするんですが
なんでなんでしょう?
del_flg = 0 を付加してもダメですが・・・
pingpong
投稿日時: 2012/1/26 7:56
対応状況: −−−
長老
登録日: 2011/12/15
居住地:
投稿: 156
Re: 価格順並び替え
どのように変更されましたか?

商品一覧ページはexファイルですか?
該当するファイルはLC_Page_Products_List.phpだと思いますが。

lfGetProductsListにて価格順に並び替えていますので、そこの処理はどうなっていますか?

http://xoops.ec-cube.net/modules/tinyd0/index.php?id=8
上記URLを参考にして書いていただけると解答が得やすいかと思います。
mini777
投稿日時: 2012/1/26 9:49
対応状況: −−−
一人前
登録日: 2011/11/16
居住地:
投稿: 71
Re: 価格順並び替え
LC_Page_Products_List.php の lfGetProductsList にいろいろ
修正したので Ex の方に変更した lfGetProductsList の処理を書いてます。

/* 商品一覧の表示 */
    function lfGetProductsList($searchCondition, $disp_number, $startno, $linemax, &$objProduct) {
	$arrval_order = array();
	$objQuery =& SC_Query_Ex::getSingletonInstance();
	if (strlen($searchCondition['where_category']) >= 1) {
	    $dtb_product_categories = "(SELECT * FROM dtb_product_categories WHERE " . $searchCondition['where_category'] . ")";
            $arrval_order = array_merge($searchCondition['arrvalCategory'], $searchCondition['arrvalCategory']);
        } else {
            $dtb_product_categories = "dtb_product_categories";
        }
	$order = <<< __EOS__
                    (
                        SELECT
                            T3.rank
                        FROM
                            $dtb_product_categories T2
                            JOIN dtb_category T3
                                USING (category_id)
                        WHERE T2.product_id = alldtl.product_id
                        ORDER BY T3.rank DESC, T2.rank DESC
                        LIMIT 1
                    ) DESC,
                    (
                        SELECT
                            T2.rank
                        FROM
                            $dtb_product_categories T2
                            JOIN dtb_category T3
                                USING (category_id)
                        WHERE T2.product_id = alldtl.product_id
                        ORDER BY T3.rank DESC, T2.rank DESC
                        LIMIT 1
                    ) DESC,
                    product_id
__EOS__;
	// 表示順序

	switch ($this->orderby) {
	    case "all":
		switch ($this->orderby2) {
		// 全ての商品の販売価格が安い順
                case "price_low":
		    $this->flg = false;
                    $objProduct->setProductsOrder("price02", "dtb_products_class", "ASC");
		    $this->tpl_linemax = $this->lfGetProductAllNum($searchCondition, $this->flg);
                    break;
		// 全ての商品の販売価格が高い順
		case "price_high":
		    $this->flg = false;
		    $objProduct->setProductsOrder("price02", "dtb_products_class", "DESC");
		    $this->tpl_linemax = $this->lfGetProductAllNum($searchCondition, $this->flg);
		    break;
                // 全ての商品の新着順
                case "date":
		    $this->flg = false;
                    $objProduct->setProductsOrder("create_date", "dtb_products", "DESC");
		    $this->tpl_linemax = $this->lfGetProductAllNum($searchCondition, $this->flg);
                    break;
		default:
		    $this->flg = false;
		    $this->tpl_linemax = $this->lfGetProductAllNum($searchCondition, $this->flg);
                    $objQuery->setOrder($order);
	            break;
		}
		break;
	    case "stock":
	    default:
	 	switch ($this->orderby2) {
		// 在庫ありの販売価格が安い順
		case "price_low":
		    $objProduct->setProductsOrder("price02", "dtb_products_class", "ASC");
		    break;
		// 在庫ありの販売価格が高い順
                case "price_high":
                    $objProduct->setProductsOrder("price02", "dtb_products_class", "DESC");
                    break;
		// 在庫ありの新着順
		case "date":
		    $objProduct->setProductsOrder("create_date", "dtb_products", "DESC");
		    break;
	    	default:
		    $this->flg = true;
		    $objQuery->setOrder($order);
		    break;
		}
		break;	
	}
	// 取得範囲の指定(開始行番号、行数のセット)
	$objQuery->setLimitOffset($disp_number, $startno);
	$objQuery->setWhere($searchCondition['where']);
	
	// 表示すべきIDとそのIDの並び順を一気に取得
	$arrProductId = $objProduct->findProductIdsOrder($objQuery, array_merge($searchCondition['arrval'], $arrval_order), $this->flg);
	$objQuery =& SC_Query_Ex::getSingletonInstance();
	$arrProducts = $objProduct->getListByProductIds($objQuery, $arrProductId);

	// 取得している並び順で並び替え
	$arrProducts2 = array();
	foreach ($arrProducts as $item) {
	    $arrProducts2[$item['product_id']] = $item;
	}
	$arrProducts = array();
	foreach ($arrProductId as $product_id) {
	    $arrProducts[] = $arrProducts2[$product_id];
	}

	// 規格を設定
	$objProduct->setProductsClassByProductIds($arrProductId);
	$arrProducts += array("productStatus" => $objProduct->getProductStatus($arrProductId));
	return $arrProducts;
    }
mini777
投稿日時: 2012/1/27 15:29
対応状況: −−−
一人前
登録日: 2011/11/16
居住地:
投稿: 71
Re: 価格順並び替え
価格順の並び替えにおいても規格を設定する前の価格でソートされる
商品がありますが何故でしょうか?
del_flg = 0 で回避できていないのですか?
mini777
投稿日時: 2012/1/27 18:57
対応状況: 解決済
一人前
登録日: 2011/11/16
居住地:
投稿: 71
Re: 価格順並び替え
自己レスです。

解決しました。

お騒がせしました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
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.