- Timestamp:
- 2009/11/20 10:49:47 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_4/data/class/pages/products/LC_Page_Products_List.php
r18388 r18389 548 548 } 549 549 550 /* 商品一覧の表示 */551 function lfDispProductsList2($category_id, $name, $disp_num, $orderby) {552 553 $objQuery = new SC_Query();554 $objDb = new SC_Helper_DB_Ex();555 $this->tpl_pageno = defined("MOBILE_SITE") ? @$_GET['pageno'] : @$_POST['pageno'];556 557 $arrval = array();558 $arrval_order = array();559 $arrval_category = array();560 561 // カテゴリからのWHERE文字列取得562 if ( $category_id ) {563 list($tmp_where, $arrval_category) = $objDb->sfGetCatWhere($category_id);564 if (strlen($tmp_where) >= 1) {565 $where_category = "AND $tmp_where";566 }567 }568 569 // 商品検索条件の作成(未削除、表示)570 $where = "del_flg = 0 AND status = 1 ";571 572 // 在庫無し商品の非表示573 if (NOSTOCK_HIDDEN === true) {574 $where .= ' AND (allcls.stock_max >= 1 OR allcls.stock_unlimited_max = 1)';575 }576 577 if (strlen($where_category) >= 1) {578 $where.= " $where_category";579 $arrval = array_merge($arrval, $arrval_category);580 }581 582 // 商品名をwhere文に583 $name = ereg_replace(",", "", $name);// XXX584 // 全角スペースを半角スペースに変換585 $name = str_replace(' ', ' ', $name);586 // スペースでキーワードを分割587 $names = preg_split("/ +/", $name);588 // 分割したキーワードを一つずつwhere文に追加589 foreach ($names as $val) {590 if ( strlen($val) > 0 ){591 $where .= " AND ( name ILIKE ? OR comment3 ILIKE ?) ";592 $ret = SC_Utils_Ex::sfManualEscape($val);593 $arrval[] = "%$ret%";594 $arrval[] = "%$ret%";595 }596 }597 598 // 行数の取得599 $linemax = count($objQuery->getAll("SELECT DISTINCT product_id "600 . "FROM vw_products_allclass AS allcls "601 . (!empty($where) ? " WHERE " . $where602 : ""), $arrval));603 604 $this->tpl_linemax = $linemax; // 何件が該当しました。表示用605 606 // ページ送りの取得607 $this->objNavi = new SC_PageNavi($this->tpl_pageno, $linemax, $disp_num, "fnNaviPage", NAVI_PMAX);608 609 $strnavi = $this->objNavi->strnavi;610 $strnavi = str_replace('onclick="fnNaviPage', 'onclick="form1.mode.value=\''.'\'; fnNaviPage', $strnavi);611 // 表示文字列612 $this->tpl_strnavi = empty($strnavi) ? " " : $strnavi;613 $startno = $this->objNavi->start_row; // 開始行614 615 // ▼商品詳細取得616 $col = <<< __EOS__617 product_id618 ,product_code_min619 ,product_code_max620 ,name621 ,comment1622 ,comment2623 ,comment3624 ,main_list_comment625 ,main_image626 ,main_list_image627 ,price01_min628 ,price01_max629 ,price02_min630 ,price02_max631 ,stock_min632 ,stock_max633 ,stock_unlimited_min634 ,stock_unlimited_max635 ,point_rate636 ,sale_limit637 ,deliv_date_id638 ,deliv_fee639 ,status640 ,product_flag641 ,del_flg642 __EOS__;643 //$from = "vw_products_allclass AS allcls";644 $from = "vw_products_allclass_detail AS alldtl";645 646 // WHERE 句647 $where = '0=0';648 if (is_array($arrProduct_id) && !empty($arrProduct_id)) {649 $where .= ' AND product_id IN (' . implode(',', $arrProduct_id) . ')';650 }651 652 //表示順序653 switch($orderby) {654 655 //販売価格順656 case 'price':657 $order = "price02_min, product_id";658 break;659 660 //新着順661 case 'date':662 $order = "create_date DESC, product_id";663 break;664 665 default:666 $order = <<< __EOS__667 (668 SELECT669 T3.rank670 FROM671 dtb_product_categories T2672 JOIN dtb_category T3673 USING (category_id)674 WHERE T2.product_id = alldtl.product_id675 $where_category676 ORDER BY T3.rank DESC, T2.rank DESC677 LIMIT 1678 ) DESC679 ,(680 SELECT681 T2.rank682 FROM683 dtb_product_categories T2684 JOIN dtb_category T3685 USING (category_id)686 WHERE T2.product_id = alldtl.product_id687 $where_category688 ORDER BY T3.rank DESC, T2.rank DESC689 LIMIT 1690 ) DESC691 ,product_id692 __EOS__;693 $arrval_order = array_merge($arrval_category, $arrval_category);694 break;695 }696 697 // 取得範囲の指定(開始行番号、行数のセット)698 $objQuery->setlimitoffset($disp_num, $startno);699 // 表示順序700 $objQuery->setorder($order);701 702 // 検索結果の取得703 $this->arrProducts = $objQuery->select($col, $from, $where, $arrval_order);704 // ▲商品詳細取得705 706 // 規格名一覧707 $arrClassName = $objDb->sfGetIDValueList("dtb_class", "class_id", "name");708 // 規格分類名一覧709 $arrClassCatName = $objDb->sfGetIDValueList("dtb_classcategory", "classcategory_id", "name");710 // 規格セレクトボックス設定711 if($disp_num == 15) {712 for($i = 0; $i < count($this->arrProducts); $i++) {713 $this->lfMakeSelect($this->arrProducts[$i]['product_id'], $arrClassName, $arrClassCatName);714 // 購入制限数を取得715 $this->lfGetSaleLimit($this->arrProducts[$i]);716 }717 }718 }719 720 550 /* 規格セレクトボックスの作成 */ 721 551 function lfMakeSelect($product_id, $arrClassName, $arrClassCatName) {
Note: See TracChangeset
for help on using the changeset viewer.