公司打算將重點從淘寶轉移到B2C上邊,于是把我招進來了,經過兩個月的時間,B2C網站搭建起來,但是在導入淘寶數據包的時候出現問題了,那就是數據亂碼,在網上找了很久都沒有找到真正可以解決的辦法,那就只能自己搞了,還好最好被我搗鼓出來了。
我用的是ecshop2.73的版本,其他版本沒有驗證,本人只保證同版本的可以用。
前期準備:
1、利用淘寶助手導出一個數據包(.csv),不要一次全部商品導出,最好是將數據包控制在1M左右,因為ecshop對上傳文件有限制。
2、備份網站程序中的goods_batch.php。如果你對自己的水平有足夠的信心,可以不備份直接在源文件上修改,否則請備份。
3、文件編輯器。
開始修改:
1、用編輯器打開文件goods_batch.php,文件在admin文件夾下,找到
$data=file($_FILES['file']['tmp_name']);
并將此行注釋掉。在下邊加上
$data0=mb_convert_encoding(file_get_contents($_FILES['file']['tmp_name']),"utf-8","UTF-16LE");
utf-8是我ecshop的版本編碼,如果你的是gbk則這里是gbk。
2、繼續添加代碼
$data=str_replace("/"/"","/"",$data0);
$data=explode('米萊旗艦店',$data);
米萊旗艦店是我店鋪的名字,將這個換成你店鋪的名字即可。
3、這里開始要特別注意,因為csv文件的開頭有一部分說明,所以要針對首行特別處理。
if($k==0){
$goods_name_arr = explode('"',$line_list[98]);
$goods_name = $goods_name_arr[1];
$shop_price = $line_list[105];
$goods_number = $line_list[107];
$imgsstr = $line_list[126];
$goods_desc =str_replace("/"","'",substr($line_list[118],1,strlen($line_list[118])-2));
}else{$goods_name_arr = explode('"',$line_list[10]);
$goods_name = $goods_name_arr[1];
//$goods_name = trim($line_list[10],'"');
$shop_price = $line_list[17];
$goods_number = $line_list[19];
$imgsstr = $line_list[38];
$goods_desc = str_replace("/"","'",substr($line_list[30],1,strlen($line_list[30])-2));
}
這里的$line_list[]可能會因為店鋪商品屬性不一樣導致數據提取錯誤,可以先print_r($line_list)然后修改錯誤的數組下標。
4、到了這里數據的提取基本上完成了,下面就要對提取的數據進行處理并賦值給數組。其實也只是圖片的數據需要處理一下,具體如下:
$imgasd=str_replace("/"","",$imgsstr);
$imgasd=explode(";",$imgasd);
foreach($imgasd as $ks=>$vs){
if($ks!=count($imgasd)-1){
$nv=explode("|",$vs);
$in=explode(":",$nv[0]);
$imgs_u.=$in[0].".jpg;";
}
}
$arr['original_img'] = $imgs_u;
5、最后要處理的數據就是圖片的路徑。找到if (!empty($field_arr['original_img']))的位置,有這里開始注釋,一直到//修改商品圖這里,然后再注釋//添加商品相冊圖下面的if代碼。
此方法保證可用于ecshop2.73,我公司的b2c已經使用這個方法成功導入了淘寶的商品數據。
如果有不明白的或者不會修改需要幫助的可以訪問http://www.milevip.com,如果有朋友發現更好的方法也歡迎交流。
新聞熱點
疑難解答