EC-CUBE 2.4系→2.11系へ【インポート編】

すみません。業務も忙しく、かなり遅くなりました。
作業時に残したメモを紛失したこと、確認作業が時間的にすぐは厳しいところですが、
コメントもいくつかいただき、覚えている部分だけでも投稿しようと思います。
コメントいただいた方々有難うございました!

それではインポート編です。

まずエクスポートモジュールで書き出されたzipファイルの内容がちゃんと書き出されているか確認して下さい。
自分の場合は、dtb_products_class.csvを上手く書き出してくれず、少々モジュールを修正しました。
それは「EC-CUBE 2.4系→2.11系へ【エクスポート編】」でご確認下さい。

データを確認できたら、次の作業へ移ります。
この作業は自分の環境で必要だったのか、不必要だったのかうる覚えですが念の為…
以下のようにエラーを回避出来るようです。
↓↓
phpMyAdminなどのツールを使用して以下の2点を変更
・dtb_shippingのdeliv_idのヌル(null)を【はい】にする
・dtb_order_derailのproduct_class_idのヌル(null)を【はい】にする

※変更したnullの許可は作業後に戻すそうです。

参照:http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=7885&forum=15&post_id=43838

次にインポートモジュールを修正します。
インポートモジュールをダウロードして、「LC_Page_Mdl_Upload_Cyber.php」を開きます。

1005行目あたり

変更前
[php highlight_lines=”3″ font_size=”110%”]
if(strlen($sqlval[‘deliv_id’]) > 0){
$sqlval[‘deliv_id’] = ‘1’;
}
[/php]

上記を修正します。

変更後
[php highlight_lines=”3″ font_size=”110%”]
if(strlen($sqlval[‘deliv_id’]) > 0){
$sqlval[‘deliv_id’] = ‘1’;
}else{
$sqlval[‘deliv_id’] = ‘0’;
}
[/php]

1040行目あたり

変更前
[php highlight_lines=”3″ font_size=”110%”]
function lfGetProductClassId($arrList){
$objQuery =& SC_Query_Ex::getSingletonInstance();
//規格ある場合
if($arrList[‘parent_class_name’] != “” && $arrList[‘parent_classcategory_name’] != “”){
$parent_class_id = $objQuery->getOne(“SELECT class_id FROM dtb_class WHERE name = ?”, array($arrList[‘parent_class_name’]));
$classcategory_id1 = $objQuery->getOne(“SELECT classcategory_id FROM dtb_classcategory WHERE class_id =? AND name = ?”, array($parent_class_id,$arrList[‘parent_classcategory_name’]));

$class_combination_id = $objQuery->select(“class_combination_id”, “dtb_class_combination”, “classcategory_id = ?”, array($classcategory_id1));
// where文作成
$where = “”;
$arrval = array();
foreach($class_combination_id as $val){
if($where == “”){
$where = “( parent_class_combination_id = ?”;
}else{
$where .= ” OR parent_class_combination_id = ?”;
}
$arrval[] = $val[‘class_combination_id’];
}
$where .= ” )”;
if($arrList[‘class_name’] != “” && $arrList[‘classcategory_name’] != “”){
$class_id = $objQuery->getOne(“SELECT class_id FROM dtb_class WHERE name = ?”, array($arrList[‘class_name’]));
$classcategory_id2 = $objQuery->getOne(“SELECT classcategory_id FROM dtb_classcategory WHERE class_id =? AND name = ?”, array($class_id,$arrList[‘classcategory_name’]));
$where .= ” AND classcategory_id = ?”;
$arrval[] = $classcategory_id2;

$class_combination_id = $objQuery->getOne(“SELECT class_combination_id FROM dtb_class_combination WHERE “.$where, $arrval);
$product_class_id = $objQuery->getOne(“SELECT product_class_id FROM dtb_products_class WHERE product_id = ? AND class_combination_id = ?”, array($arrList[‘product_id’], $class_combination_id));
}else{
$where .= ” AND product_id = ?”;
$arrval[] = $arrList[‘product_id’];
$product_class_id = $objQuery->getOne(“SELECT product_class_id FROM dtb_products_class WHERE “.$where, $arrval);
}

//規格無い場合
}else{
$product_class_id = $objQuery->getOne(“SELECT product_class_id FROM dtb_products_class WHERE product_id = ? AND class_combination_id IS NULL”, array($arrList[‘product_id’]));
}

return $product_class_id;
}
[/php]

上記を修正します。

変更後
[php highlight_lines=”3″ font_size=”110%”]
function lfGetProductClassId($arrList){
$objQuery =& SC_Query_Ex::getSingletonInstance();
//規格ある場合
if($arrList[‘parent_class_name’] != “” && $arrList[‘parent_classcategory_name’] != “”){
$parent_class_id = $objQuery->getOne(“SELECT class_id FROM dtb_class WHERE name = ?”, array($arrList[‘parent_class_name’]));
$classcategory_id1 = $objQuery->getOne(“SELECT classcategory_id FROM dtb_classcategory WHERE class_id =? AND name = ?”, array($parent_class_id,$arrList[‘parent_classcategory_name’]));

$class_combination_id = $objQuery->select(“class_combination_id”, “dtb_class_combination”, “classcategory_id = ?”, array($classcategory_id1));
// where文作成
$where = “”;
$arrval = array();

if($arrList[‘class_name’] != “” && $arrList[‘classcategory_name’] != “”){

foreach($class_combination_id as $val){
if($where == “”){
$where = “( parent_class_combination_id = ?”;
}else{
$where .= ” OR parent_class_combination_id = ?”;
}
$arrval[] = $val[‘class_combination_id’];
}
$where .= ” )”;

$class_id = $objQuery->getOne(“SELECT class_id FROM dtb_class WHERE name = ?”, array($arrList[‘class_name’]));
$classcategory_id2 = $objQuery->getOne(“SELECT classcategory_id FROM dtb_classcategory WHERE class_id =? AND name = ?”, array($class_id,$arrList[‘classcategory_name’]));
$where .= ” AND classcategory_id = ?”;
$arrval[] = $classcategory_id2;

$class_combination_id = $objQuery->getOne(“SELECT class_combination_id FROM dtb_class_combination WHERE “.$where, $arrval);
$product_class_id = $objQuery->getOne(“SELECT product_class_id FROM dtb_products_class WHERE product_id = ? AND class_combination_id = ?”, array($arrList[‘product_id’], $class_combination_id));
}else{

foreach($class_combination_id as $val){
if($where == “”){
$where = “( class_combination_id = ?”;
}else{
$where .= ” OR class_combination_id = ?”;
}
$arrval[] = $val[‘class_combination_id’];
}
$where .= ” )”;

$where .= ” AND product_id = ?”;
$arrval[] = $arrList[‘product_id’];
$product_class_id = $objQuery->getOne(“SELECT product_class_id FROM dtb_products_class WHERE “.$where, $arrval);
}

//規格無い場合
}else{
$product_class_id = $objQuery->getOne(“SELECT product_class_id FROM dtb_products_class WHERE product_id = ? AND class_combination_id IS NULL”, array($arrList[‘product_id’]));
}

return $product_class_id;
}
[/php]

兼行したらアップロードして再度移行を実行します。
ここで注意点ですが、移行が途中で終わった場合、すでに一度実行した場合などは、ディレクトリにキャッシュが残っていた記憶があります。
その場合はディレクトリにあるキャッシュデータを削除しないと修正ファイルが上手く反映されなかったような気がします。

以上でデータのインポートはエラーが出ることなく終了できました。
ただインポート終了後のレイアウトが崩れていたり、どうも全てが上手く動いたとは言いがたいです。

そう思っていた矢先、サイトへアクセスするとカテゴリー部分がどうもおかしい!?
どうもカテゴリーのトータル商品数などが上手く移行できていない様子です。
SQLをたたいてなど記事を確認しましたが、商品をテスト登録するか、もしくは登録してある商品を編集、保存でも正しい数が表示されるようになりました。

また以下のブログにも似たような作業で移行が完了している方がいましたので、こちらもご参考になってみて下さい。
http://ryunac.blog135.fc2.com/blog-entry-38.html

作業はバックアップをとって、自己責任でお願いします。

今回はうる覚えの部分も多いです。
間違っている部分や簡単に出来る方法などありましたらぜひコメント下さい。
お願いいたします m(_ _)m

関連記事

  1. AFFINITY DESIGNERを使ってみた!

  2. WooCommerce 支払い方法 追加(その2)

  3. WordPressをスマートフォンで見る

  4. WooCommerce 支払い方法 追加(前置き)

  5. WordPress 不必要なwidgetsの非表示

  6. WordPress ディレクトリの変更する際に必要な事

コメント

  1. この記事へのコメントはありません。

  1. 2014年 12月 19日

最近の記事

  1. NFCカード
  2. vcard形式 qrコード
  3. FileMakerとTwilio連携がSMS配信を劇的に変える理由
  4. FileMaker QRコード
  5. phantom4pro
  6. 2017.06.07

    iPad Pro 新型
  7. wwdc2017

カテゴリー


  1. Warning: Trying to access array offset on false in /var/www/vhosts/ddwnet.com/httpdocs/ddwnet/wp-content/themes/source_tcd045/widget/category_list.php on line 60
    @美浜から

  2. Warning: Trying to access array offset on false in /var/www/vhosts/ddwnet.com/httpdocs/ddwnet/wp-content/themes/source_tcd045/widget/category_list.php on line 60
    Appleのように「デザインのある会社!」

  3. Warning: Trying to access array offset on false in /var/www/vhosts/ddwnet.com/httpdocs/ddwnet/wp-content/themes/source_tcd045/widget/category_list.php on line 60
    Books

  4. Warning: Trying to access array offset on false in /var/www/vhosts/ddwnet.com/httpdocs/ddwnet/wp-content/themes/source_tcd045/widget/category_list.php on line 60
    DX戦略

  5. Warning: Trying to access array offset on false in /var/www/vhosts/ddwnet.com/httpdocs/ddwnet/wp-content/themes/source_tcd045/widget/category_list.php on line 60
    EC-CUBE

  6. Warning: Trying to access array offset on false in /var/www/vhosts/ddwnet.com/httpdocs/ddwnet/wp-content/themes/source_tcd045/widget/category_list.php on line 60
    googleのように「オープンに働ける会社!」

  7. Warning: Trying to access array offset on false in /var/www/vhosts/ddwnet.com/httpdocs/ddwnet/wp-content/themes/source_tcd045/widget/category_list.php on line 60
    IDEOのように「発想する会社!」

  8. Warning: Trying to access array offset on false in /var/www/vhosts/ddwnet.com/httpdocs/ddwnet/wp-content/themes/source_tcd045/widget/category_list.php on line 60
    Server

  9. Warning: Trying to access array offset on false in /var/www/vhosts/ddwnet.com/httpdocs/ddwnet/wp-content/themes/source_tcd045/widget/category_list.php on line 60
    Swift

  10. Warning: Trying to access array offset on false in /var/www/vhosts/ddwnet.com/httpdocs/ddwnet/wp-content/themes/source_tcd045/widget/category_list.php on line 60
    Wordpressを使いこなせ!【developer編】

  11. Warning: Trying to access array offset on false in /var/www/vhosts/ddwnet.com/httpdocs/ddwnet/wp-content/themes/source_tcd045/widget/category_list.php on line 60
    アップル

  12. Warning: Trying to access array offset on false in /var/www/vhosts/ddwnet.com/httpdocs/ddwnet/wp-content/themes/source_tcd045/widget/category_list.php on line 60
    ウェブサイト

  13. Warning: Trying to access array offset on false in /var/www/vhosts/ddwnet.com/httpdocs/ddwnet/wp-content/themes/source_tcd045/widget/category_list.php on line 60
    オープンソース

  14. Warning: Trying to access array offset on false in /var/www/vhosts/ddwnet.com/httpdocs/ddwnet/wp-content/themes/source_tcd045/widget/category_list.php on line 60
    パタゴニアのように「環境を考える会社!」

  15. Warning: Trying to access array offset on false in /var/www/vhosts/ddwnet.com/httpdocs/ddwnet/wp-content/themes/source_tcd045/widget/category_list.php on line 60
    ファイルメーカー