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

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

ECCUBE2.13 同一ドメインのECCUBE外ページでユーザーログイン情報を使う

ドメイン/folder/にECCUBEをインストールしている場合

shop/data/class/sessionfactory/SC_SessionFactory_UseCookie.php
session_set_cookie_params(0, ROOT_URLPATH, DOMAIN_NAME);

session_set_cookie_params(0, "/", DOMAIN_NAME);

Cookieの削除が必要

 

 

 

 

【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;
}

 

【ECCUBE2.13】商品情報登録ページのカスタマイズとかでよく使うファイルメモ

■管理画面商品編集ページ
data/Smarty/templates/admin/products/product.tpl

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