ConohaVpsを使ってみる【初めてのVPS】

Conohaにて、初めてのVPSに挑戦。メモ的な備考録です。

【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インストール

#yum -y install 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

 

確認

#sudo php -i | grep imagick

以下が表示されれば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 都道府県マスタ