バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

フロント機能

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
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/25 20:34
     Re: 価格順並び替え mini777 2012/1/25 21:17
       Re: 価格順並び替え pingpong 2012/1/26 7:56
       » Re: 価格順並び替え mini777 2012/1/26 9:49
     Re: 価格順並び替え mini777 2012/1/27 15:29
     Re: 価格順並び替え mini777 2012/1/27 18:57

 



ログイン


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

統計情報

総メンバー数は89,281名です
総投稿数は110,072件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1652
8
red
1570
9
mcontact
1301
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
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.