【ECCUBE2.13】商品種別を使わず配送方法等を処理分け
商品種別で配送方法等を処理分けすると同時購入が出来ないので、強引に処理分け。
1)処理分け用のフラグを商品情報に追加
商品ステータス(ProductStatus)を使用していなかったため、転用。
※商品ステータスにメール便を追加
2)商品ステータスをカートセッションに追加
[FILE]: data/class/pages/products/LC_Page_Products_Detail.php
public function doCart() { $objCustomer = new SC_Customer_Ex(); $this->arrErr = $this->lfCheckError($this->mode, $this->objFormParam, $this->tpl_classcat_find1, $this->tpl_classcat_find2); //商品ID取得 $this_product_id = $this->objFormParam->getValue('product_id'); //商品ステータス取得 $objProduct = new SC_Product_Ex(); $getProductStatus_arr = $objProduct->getProductStatus($this_product_id); $thisProductStatus = $getProductStatus_arr[$this_product_id]['0']; if (count($this->arrErr) == 0) { $objCartSess = new SC_CartSession_Ex(); $product_class_id = $this->objFormParam->getValue('product_class_id'); $objCartSess->addProduct($product_class_id, $this->objFormParam->getValue('quantity'), //商品ステータスをセッションに追加 $thisProductStatus ); // 開いているカテゴリーツリーを維持するためのパラメーター $arrQueryString = array( 'product_id' => $this->objFormParam->getValue('product_id'), ); SC_Response_Ex::sendRedirect(CART_URL, $arrQueryString); SC_Response_Ex::actionExit(); } }
[FILE]:data/class/SC_CartSession.php
public function addProduct($product_class_id, $quantity,$product_status="") { $objProduct = new SC_Product_Ex(); $arrProduct = $objProduct->getProductsClass($product_class_id); $productTypeId = $arrProduct['product_type_id']; $find = false; $max = $this->getMax($productTypeId); for ($i = 0; $i <= $max; $i++) { if ($this->cartSession[$productTypeId][$i]['id'] == $product_class_id) { $val = $this->cartSession[$productTypeId][$i]['quantity'] + $quantity; if (strlen($val) <= INT_LEN) { $this->cartSession[$productTypeId][$i]['quantity'] += $quantity; } $find = true; } } if (!$find) { $this->cartSession[$productTypeId][$max+1]['id'] = $product_class_id; $this->cartSession[$productTypeId][$max+1]['quantity'] = $quantity; $this->cartSession[$productTypeId][$max+1]['cart_no'] = $this->getNextCartID($productTypeId); //商品ステータスを追加 $this->cartSession[$productTypeId][$max+1]['product_status'] = $product_status; } }
3)ステータスによる配送方法の条件設定
※今回はメール便に関する設定
以下の条件をどちらも満たす場合メール便の利用が可能
・メール便対象商品のみがカートに入っている
・カート内の商品合計数が4個未満
[FILE]:data/class/pages/shopping/LC_Page_Shopping_Payment.php
public function action()内
$objPurchase->verifyChangeCart($this->tpl_uniqid, $objCartSess);の下あたり
//メール便不可フラグ $mailPost_delive = true; //メール便個数 $sum_pr_quantity = "0"; //商品ステータス取得 foreach ($objCartSess->cartSession as $arr_cartSession) { foreach ($arr_cartSession as $value) { if(!empty($value['price'])){ //個数取得 $pr_quantity = $value["quantity"]; //商品ステータス取得 $pr_status = $value["product_status"]; //商品ステータスが空(ステータス指定なし)のものがあればFalse if($pr_status == ''){ $mailPost_delive = false; //商品ステータスが1(メール便)のものがあれば合計数をチェック }elseif($pr_status == '1'){ $sum_pr_quantity = $sum_pr_quantity + $pr_quantity; } } } } //合計個数が4個以上ならメール便不可 if($sum_pr_quantity > 3){ $mailPost_delive = false; } //配送方法一覧取得 $this->arrDeliv = $objDelivery->getList($cart_key,'',$mailPost_delive); |php|< [FILES]:data/class/helper/SC_Helper_Delivery.php >|php| //メール便不可フラグ追加 public function getList($product_type_id = null, $has_deleted = false,$mailPost_delive = null) { $objQuery =& SC_Query_Ex::getSingletonInstance(); $col = '*'; $where = ''; $arrVal = array(); if (!$has_deleted) { $where .= 'del_flg = 0'; } if (!is_null($product_type_id)) { if (!$has_deleted) { $where .= ' AND '; } $where .= 'product_type_id = ?'; $arrVal[] = $product_type_id; } //メール便不可の場合の処理 if($mailPost_delive === false){ //echo $mailPost_delive; if (!$has_deleted) { $where .= ' AND deliv_id != 5'; } } $table = 'dtb_deliv'; $objQuery->setOrder('rank DESC'); $arrRet = $objQuery->select($col, $table, $where, $arrVal); return $arrRet; }
【ECCUBE2.13】送料無料の商品を設定する
送料無料商品を設定。
カート内の商品が全て送料無料対象であれば、送料無料。
送料無料対象外の商品を含む場合、通常の送料計算。
■変更
define(‘OPTION_PRODUCT_DELIV_FEE’, 1);
※送料無料の商品は、商品送料に0を指定。
■修正
data/class/SC_CartSession.php
// 商品ごとの送料を加算 $isPriceOverride = true; if (OPTION_PRODUCT_DELIV_FEE == 1) { $cartItems = $this->getCartList($productTypeId); foreach ($cartItems as $arrItem) { if ($arrItem['productsClass']['deliv_fee'] != '0') { $isPriceOverride = false; } //echo $arrItem['productsClass']['deliv_fee']; $results['deliv_fee'] += $arrItem['productsClass']['deliv_fee'] * $arrItem['quantity']; } } // 配送業者の送料を加算 if (!$isPriceOverride){ if (OPTION_DELIV_FEE == 1 && !SC_Utils_Ex::isBlank($deliv_pref) && !SC_Utils_Ex::isBlank($deliv_id)) { $results['deliv_fee'] += SC_Helper_Delivery_Ex::getDelivFee($deliv_pref, $deliv_id); } } else { $results['deliv_fee'] = 0; }
【ECCUBE2.13】特定地域の場合、送料無料条件を満たしても対象外にする
/data/class/SC_CartSession.php
if ($this->isDelivFree($productTypeId)) {
//配送方法指定
if($deliv_id == 3){
switch ($deliv_pref[0]) {
//北海道
case 1:
$results['deliv_fee'] = 1728;
break;
//沖縄
case 47:
$results['deliv_fee'] = 1728;
break;
//青森県
case 2:
$results['deliv_fee'] = 1034;
break;
//秋田県
case 5:
$results['deliv_fee'] = 1034;
break;
//岩手県
case 3:
$results['deliv_fee'] = 1034;
break;
default:
$results['deliv_fee'] = 0;
}
}else{
$results['deliv_fee'] = 0;
}
}
MYSQL5.6でイント型カラムに空値を指定する
MYSQL5.6からイント型カラムに空値指定が出来なくなったので、
とりあえずの対処。
1)確認
mysql> SELECT @@GLOBAL.sql_mode;
+--------------------------------------------+
| @@GLOBAL.sql_mode |
+--------------------------------------------+
| STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+
上記の場合、空値でデータ登録できない。
2)sql_modeを指定しない
mysql> SET @@GLOBAL.sql_mode='';
mysql> SELECT @@GLOBAL.sql_mode;+-------------------+
| @@GLOBAL.sql_mode |
+-------------------+
| |
+-------------------+
3)my.cnf設定
※設定しないと、再起動時に戻ってしまうため。
usr/my.cnf等もチェック。
sudo vi /usr/my.cnf
sql_mode=''sudo vi /etc/my.cnf
sql_mode=''
4)MYSQLを再起動し確認
sudo service mysqld restart
mysql> SET @@GLOBAL.sql_mode='';
mysql> SELECT @@GLOBAL.sql_mode;+-------------------+
| @@GLOBAL.sql_mode |
+-------------------+
| |
+-------------------+
ImageMagickを、インストールする【CentOS6.8/Apache2.2.15】
インストールしていなければ、php-develインストール
Imagemagickインストール
#yum -y install ImageMagick-devel
#peardev install pecl/imagick
*Please provide the prefix of Imagemagick installation [autodetect] :
↑キーボードのEnter。
php.ini編集
#sudo vi /etc/php.ini
extension=imagick.so
apache再起動
#sudo service httpd restart
確認
以下が表示されればOK
imagick
imagick module => enabled
imagick module version => 3.0.1
imagick classes => Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator
imagick.locale_fix => 0 => 0
imagick.progress_monitor => 0 => 0
ECCUBE2.13データベース構造
dtb_api_account | APIアカウント |
---|---|
dtb_api_config | API設定 |
dtb_baseinfo | 店舗基本情報 |
dtb_best_products | おすすめ商品情報 |
dtb_bkup | バックアップ |
dtb_bloc | ブロック情報 |
dtb_blocposition | ブロック配置情報 |
dtb_category | カテゴリ情報 |
dtb_category_count | カテゴリ商品数情報 |
dtb_category_total_count | カテゴリ商品合計数情報 |
dtb_class | 規格情報 |
dtb_classcategory | 規格分類情報 |
dtb_csv | CSV情報 |
dtb_csv_sql | CSV詳細設定SQL情報 |
dtb_customer | 顧客情報 |
dtb_customer_favorite_products | お気に入り商品情報 |
dtb_deliv | 配送業者情報 |
dtb_delivfee | 送料情報 |
dtb_delivtime | 配送時間情報 |
dtb_holiday | 休日情報 |
dtb_index_list | インデックス一覧 |
dtb_kiyaku | 規約情報 |
dtb_mail_history | 受注メール送信履歴 |
dtb_mailmaga_template | メルマガテンプレート情報 |
dtb_mailtemplate | メールテンプレート情報 |
dtb_maker | メーカー |
dtb_maker_count | メーカーカウント |
dtb_member | 管理画面メンバー情報 |
dtb_mobile_ext_session_id | モバイルセッション情報 |
dtb_module | モジュール情報 |
dtb_module_update_logs | モジュール更新ログ情報 |
dtb_news | 新着情報 |
dtb_order | 受注情報 |
dtb_order_detail | 受注詳細情報 |
dtb_order_temp | 受注一時情報 |
dtb_other_deliv | その他の配送先情報 |
dtb_ownersstore_settings | オーナーズストア設定 |
dtb_pagelayout | ページレイアウト情報 |
dtb_payment | 支払方法情報 |
dtb_payment_options | 支払選択肢情報 |
dtb_plugin | プラグイン情報 |
dtb_plugin_hookpoint | プラグインフックポイント |
dtb_product_categories | 商品カテゴリ関連 |
dtb_product_status | 商品ステータス情報 |
dtb_products | 商品情報 |
dtb_products_class | 商品規格情報 |
dtb_recommend_products | 関連商品情報 |
dtb_review | レビュー情報 |
dtb_send_customer | 顧客メール送信履歴 |
dtb_send_history | メール送信履歴 |
dtb_session | セッション情報 |
dtb_shipment_item | 配送商品情報 |
dtb_shipping | 配送先情報 |
dtb_tax_rule | 【2.13】消費税ルール |
dtb_templates | テンプレート情報 |
dtb_update | モジュール更新情報 |
mtb_allowed_tag | 許可タグ |
mtb_auth_excludes | 管理画面認証除外 |
mtb_authority | 管理者マスタ |
mtb_constants | 定数マスタ |
mtb_country | 【2.13】国マスタ |
mtb_customer_order_status | 顧客表示用受注ステータス |
mtb_customer_status | 顧客ステータス |
mtb_db | データベース種別 |
mtb_delivery_date | 商品発送日 |
mtb_device_type | 端末種別 |
mtb_disable_logout | ログアウト無効ページ |
mtb_disp | 公開フラグ |
mtb_job | 職業マスタ |
mtb_magazine_type | メルマガ種別 |
mtb_mail_magazine_type | メールマガジン種別 |
mtb_mail_template | メールテンプレート |
mtb_mail_tpl_path | メールテンプレートパス |
mtb_mail_type | メール種別 |
mtb_mobile_domain | モバイルドメイン名 |
mtb_order_status | 受注状態 |
mtb_order_status_color | 受注ステータス色 |
mtb_ownersstore_err | オーナーズストアエラー種別 |
mtb_ownersstore_ips | オーナーズストアIPアドレス |
mtb_page_max | ページ最大表示数 |
mtb_permission | 管理画面アクセス権限 |
mtb_pref | 都道府県マスタ |
mtb_product_list_max | 商品一覧最大表示数 |
mtb_product_status_color | 商品ステータス色 |
mtb_product_type | 商品種別マスタ |
mtb_recommend | おすすめレベル |
mtb_reminder | パスワード質問マスタ |
mtb_review_deny_url | レビュー拒否URL |
mtb_sex | 性別マスタ |
mtb_status | 商品ステータス |
mtb_status_image | ステータス画像 |
mtb_target | ブロックターゲット |
mtb_taxrule | 課税規則マスタ |
mtb_wday | 曜日 |
mtb_work | 稼動状態 |
mtb_zip | 郵便番号 |
mtb_permission | 管理画面アクセス権限 |
mtb_pref | 都道府県マスタ |