【问题标题】:How to implement export nad import orders data in Prestashop?Prestashop中如何实现导出导入订单数据?
【发布时间】:2014-09-15 18:28:32
【问题描述】:

我需要将客户订单所有数据从旧 Prestashop 1.3 迁移到新 Prestashop 1.6。

我是中级 presta 开发人员,这对我来说不是小问题,我没有找到任何模块或教程来管理这个问题。 presta mySQL 中的订单数据分散在十几个表中,1.3 和 1.6 版本之间的差异导致了额外的兼容性问题。小店,数据量不是问题。

我想知道,您如何处理此类问题?

我的想法很少,但没有一个听起来足够好:

  1. 将数据导出到 csv,兼容 1.6,然后导入(通过 php 脚本或从 csv 导入到 mysql)。
  2. 制作 php 脚本,从数据库中读取旧数据,使数据兼容,然后插入新的商店数据库。

这两个想法都非常耗时,也许有人有更好的想法/链接/解决方案?

【问题讨论】:

    标签: php prestashop prestashop-1.6


    【解决方案1】:

    我还没有见过这样一个免费的模块来导入客户订单或.. 我从一个不熟悉的 cms 到 presta shop 1.6 自行导入类别和产品 在 presta 1.6 后台,如果您创建要导入的实体,它在右侧有一个菜单,说明哪些字段应该在您生成的用于导入的 csv 文件中。 如果您的 csv 文件不匹配,您应该以某种语言(如 php)获取 csv 文件,然后解析文件并生成适当的 csv 文件以导入 prestashop。

    我认为用 csv 文件导入数据是比较容易的工作。 上传用于导入 presta 的 csv 文件后,询问您 csv 文件中的每一列都与您的 presta 系统的哪一列有关。

    【讨论】:

    • 好的,谢谢,我通过自定义导入/导出脚本直接在 2 个 prestashop 的数据库之间解决了我的问题。
    • 你能发布你的脚本吗?
    【解决方案2】:

    这个 php 脚本有 4 个函数。

    • getHeader() 函数以数组形式获取 CSV 文件的标题。
    • getCategories() 再次以数组形式从 CSV 文件中获取类别名称。
    • getRecords() 函数以二维数组的形式获取所有记录(不包括标题)。
    <?php
    
    function getHeader()
    {
        $filename  = "past_cms_csv_file.csv";
        $contents = file_get_contents($filename);
        $records = explode('EOREOR', $contents);
        $header = explode(';', $records[0]);
        array_splice($header, count($header)-1, 1);
        return $header; 
    }
    
    
    function getCategories()
    {
        $header = getHeader();
        $index = array_search('v_categories_name_1_4', $header);
        $filename  = "past_cms_csv_file.csv";
        $contents = file_get_contents($filename);
        $records = explode('EOREOR', $contents);
        $cats = array();
    
        for($i=1;$i<count($records);$i++)
        {
            $record = $records[$i];
            $items = explode('";"', $record);
            array_push($cats,$items[$index] );
        }
        $newCats = array_unique($cats);
    
    
        $mycats = [];
        foreach($newCats as $cat)
        {
            array_push($mycats, $cat);
        }
        array_splice($mycats, count($mycats)-1 , 1);
        return $mycats;
    }
    
    function getRecords()
    {
        $filename  = "past_cms_csv_file.csv";
        $contents = file_get_contents($filename);
        $records = explode('EOREOR', $contents);
        $header = getHeader();
        $index = array_search('v_categories_name_1_4', $header);
        $cats = getCategories();
    
        for($i=1;$i<count($records);$i++)
        {
            $record = $records[$i];
            $items = explode('";"', $record);
            array_push($cats,$items[$index] );
    
    
            for($j=0;$j<count($items);$j++)
            {
                $results[$i][$j] = $items[$j];
            }
        }   
    
        return $results;
    }
    
    function makecsvfile($filename , $start_index)
    {
        $header = getHeader();
        $results = getRecords();
        $active_index = array_search('v_status', $header);
        $name_index = array_search('v_products_name_4', $header);
        $desc_index = array_search('v_products_description_4', $header);
        $meta_title_index = array_search('v_products_meta_title_4', $header);
        $meta_keywords_index = array_search('v_products_meta_keywords_4', $header);
        $meta_desc_index = array_search('v_products_meta_description_4', $header);
        $price_index = array_search('v_products_price', $header);
        $quantity_index = array_search('v_products_quantity', $header);
        $category_index = array_search('v_categories_name_1_4', $header);
        $subcategory_index = array_search('v_categories_name_2_4', $header);
    
    
        $string  = '';
        $string .= '"ID";"Active";"Name";"Description";"Meta_title";"Meta_keywords";"Meta_Description";"Categories";"Quantity";"tax_rule";"Price";"Image URLs"';
        $string .= PHP_EOL;
    
        for($i=1;$i<count($results);$i++)
        {
            if( $results[$i][$category_index] != 'Schoenen en sokjes'  &&
                $results[$i][$category_index] != 'Accessoires meisjes' &&
                $results[$i][$category_index] != 'Accessoires jongens' &&
                $results[$i][$category_index] != 'Communie -en doopkleding' &&
                $results[$i][$category_index] != 'Aanbiedingen'
                )
                {
                    $string .= '"';
                    $string .= $i+$start_index;
                    $string .= '";"';
                    if($results[$i][$active_index] == 'Active')
                        $string .= 1;
                    else if($results[$i][$active_index] == 'Inactive')
                        $string .= 0;   
                    $string .= '";"';
                    $string .= $results[$i][$name_index];
                    $string .= '";"';
                    $string .= $results[$i][$desc_index];
                    $string .= '";"';
                    $string .= $results[$i][$meta_title_index];
                    $string .= '";"';
                    if(strlen($results[$i][$meta_keywords_index]) < 255)
                        $string .= $results[$i][$meta_keywords_index];
                    else
                    {
                        $meta_key_words = substr($results[$i][$meta_keywords_index],0,254);
                        $last_comma_pos = strrpos($meta_key_words , ',');
                        $meta_key_words = substr($meta_key_words,0,$last_comma_pos);
                        $string .= $meta_key_words;
                    }
                    $string .= '";"';
                    $string .= $results[$i][$meta_desc_index];
                    $string .= '";"';
    
                    if($results[$i][$subcategory_index] == '' && 
                        $results[$i][$category_index] != 'Tiara\'s & Kroontjes' &&
                        $results[$i][$category_index] != 'Feest / Gala jurken' &&
                        $results[$i][$category_index] != 'Ringkussens' &&
                        $results[$i][$category_index] != 'Bolero\'s en Jasjes')
                        $string .= $results[$i][$category_index];
    
                    else if($results[$i][$category_index] == 'Tiara\'s & Kroontjes')
                        $string .= 'Kroontjes, diademen & tiara\'s';
    
                    else if($results[$i][$category_index] == 'Feest / Gala jurken')
                        $string .= 'Feest- en galajurken';          
    
                    else if($results[$i][$category_index] == 'Ringkussens')
                        $string .= 'kado kussens';
    
                    else if($results[$i][$category_index] == 'Bolero\'s en Jasjes')
                        $string .= 'Bolero’s & jasjes';         
    
                    else 
                        $string .= $results[$i][$subcategory_index];
                    $string .= '";"';
    
                    $string .= $results[$i][$quantity_index];
                    $string .= '";"';
    
                    $string .= 53;
                    $string .= '";"';
                    $string .= $results[$i][$price_index];
                    $string .= '";"';
                    $string .= 'http://example.com/path/to/myimage.jpg';        
                    $string .= '"';
                    $string .= PHP_EOL;
                }
        }
        file_put_contents($filename, $string);
    }
    
    makecsvfile('products.csv' , 100);
    ?>
    

    【讨论】:

      猜你喜欢
      • 2011-01-23
      • 2021-02-21
      • 2017-10-18
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 2021-08-13
      • 2014-06-09
      相关资源
      最近更新 更多