EC-CUBE

EC-CUBE2.11.1、携帯サイトの文字化けの対処法

EC-CUBE2.11.1では、携帯サイト(スマホではなく、ガラケー)へのデータ出力の文字コードをEC-CUBEの内部UTF-8からSHIF-JISへ変換して出力する処理で、サーバーによっては、不具合が発生するようです。

スクリプトファイルを直接編集

/data/class/helper/SC_Helper_Moile.phpの227行目、関数 lfMobileInitOutput 内の

241行目をコメントアウトして下記に変更
// 全角カタカナを半角カタカナに変換する。
//ob_start(create_function(‘$buffer’, ‘return mb_convert_kana($buffer, “k”, “SJIS-win”);’));
ob_start(create_function(‘$buffer’, ‘return mb_convert_kana($buffer, “k”, “UTF-8”);’));

244行目をコメントアウトして下記に変更
// 内部エンコーディングから Shift JIS に変換する。
//ob_start(‘mb_output_handler’);
ob_start();

    function lfMobileInitOutput() {
        // Smarty 用のディレクトリーを作成する。
        @mkdir(COMPILE_REALDIR);

        // 出力用のエンコーディングを Shift JIS に固定する。
        mb_http_output('SJIS-win');

        // 絵文字タグを絵文字コードに変換する。
        ob_start(array('SC_MobileEmoji_Ex', 'handler'));

        // 端末に合わせて画像サイズを変換する。
        ob_start(array('SC_MobileImage_Ex', 'handler'));

        // 全角カタカナを半角カタカナに変換する。
        //ob_start(create_function('$buffer', 'return mb_convert_kana($buffer, "k", "SJIS-win");'));
        ob_start(create_function('$buffer', 'return mb_convert_kana($buffer, "k", "UTF-8");'));

        // 内部エンコーディングから Shift JIS に変換する。
        //ob_start('mb_output_handler');
        ob_start();
    }

【ご参考】
EC-CUBE2.11.xのスマホ版購入フォームで郵便番号が正しい入力できない件の修正
EC-CUBE、管理ツールの受注管理で、規格1のみの商品追加時のエラー回避
EC-CUBEの受注管理、CSV書き出しで、データの途中で改行されてしまう件

EC-CUBE2.11.xのスマホ版購入フォームで郵便番号が正しい入力できない件の修正

EC-CUBE2.11.xでは、スマホ用のテンプレートがデフォルトで用意されており、
PCサイトをカスタマイズしなくても、このスマホ用のテンプレートをカスタマイズすれば、
スマホ対応できます。

今回、購入フォームで郵便番号を入力すると「123-0011」の「0011」のように
先頭に「0」が入っていると、丸められて、「123-11」のようになってしまうというバグが判明。
その対処法です。
続きを読む

EC-CUBE、管理ツールの受注管理で、規格1のみの商品追加時のエラー回避

2.11.1での不具合です。

管理ツールの受注管理画面
http://xxx.com/admin/order/edit.php
※xxx.comは自分のサイトドメイン

で、購入商品の追加を行おうとしたときに、商品規格が1つあるものはエラーとなり、登録ができません。
※なぜか、規格1,2の2つあるものはエラーになりません。

/data/Smarty/templates/admin/order/product_select.tpl
の109行目の

classcat_id2 = form.classcategory_id2 ? form.classcategory_id2.value : 0;

「0」を「”」に変更すると正しく動作するようになります。

function fnCheckStock(form) {
    product_id = form.product_id.value;
    classcat_id1 = form.classcategory_id1.value;
    classcat_id2 = form.classcategory_id2 ? form.classcategory_id2.value : '';
    classcat2 = productsClassCategories[product_id][classcat_id1]['#' + classcat_id2];

EC-CUBEの受注管理、CSV書き出しで、データの途中で改行されてしまう件

EC-CUBEのカスタマイズ(2.11.1)です。
EC-CUBEの管理ツールの「受注管理」でCSV書き出しを行うと、「メモ欄」に改行の
入った文章が入力されている場合、同一行なのに、途中で改行されてしまいます。

その対応方法は、
/data/class/helper/SC_Helper_CSV.php の205行目に
改行コードをスペースに置換するコードを挿入します。

    function cbOutputCSV($data) {
        $line = $this->sfArrayToCSV($data);
        $line = mb_convert_encoding($line, 'SJIS-Win');
        $line = str_replace("\r\n"," ",$line);
        $line = str_replace("\n"," ",$line);
        $line = str_replace("\r"," ",$line);
        $line .= "\r\n";
        fwrite($this->fpOutput, $line);
        return true;
    }