我设法获得了用于从XML导入具有字段映射的产品的脚本。(magento XML导入映射)
我使用Magmi导入器,这里是链接到Magmi图像属性处理器插件,这是(我后来发现)强制从URL: http://wiki.magmi.org/index.php?title=Image_attributes_processor导入图片
但无法导入图片(链接到图片的XML格式为URL)
XML中的一个产品:
<izdelek>
<st>1</st>
<izdelekID>75</izdelekID>
<izdelekIme>ATI Radeon 102 - B62902 (B)</izdelekIme>
<izdelekPodnaslov>256 MB, DMS - 59</izdelekPodnaslov>
<izdelekOpis></izdelekOpis>
<izdelekKategorija>Komponente</izdelekKategorija>
<izdelekDodatenOpis>
Grafična kartica omogoča razširjeno namizje na dveh ekranih (dve različni sliki)! LOW PROFILE - namenjena
izključno SFF računalnikom!
</izdelekDodatenOpis>
<zadnja_osvezitev>16/08/2015</zadnja_osvezitev>
<url>http://www.bbt.si/ati-radeon-102-b62902-b</url>
<garancija>6 mesecev</garancija>
<opis>PCIe</opis>
<slike>
<slika1>
http://www.bbt.si/modules/uploader/uploads/s_product/pictures/crop1/graficna-kartica-ati-102-b62902.jpg
</slika1>
</slike>
<cena>12.20</cena>
<cenaBrezddv>10.00</cenaBrezddv>
<zaloga>več na zalogi</zaloga>
</izdelek>
需要一些建议,这段代码有什么问题:
<?php
$spisekKategorij = array(
'Komponente' => '738',
'Prenosniki' => '742',
'Monitorji' => '737',
);
class TestLogger
{
/**
* logging methos
*
* @param string $data
* : log content
* @param string $type
* : log type
*/
public function log($data, $type)
{
echo "$type:$datan";
}
}
// setup include PATH's
set_include_path('magmi' . PATH_SEPARATOR . 'magmi/inc' . PATH_SEPARATOR . 'magmi/integration/inc' . PATH_SEPARATOR . 'magmi/engines');
// end include PATH's
require_once("magmi_datapump.php"); // call Datapump
$dp = Magmi_DataPumpFactory::getDataPumpInstance("productimport");
$dp->beginImportSession("123", "create"); // "default" - name of profile , "create" - we want to create and update items
$file = "test.xml";
$microline = new SimpleXMLElement($file, null, true); // load XML
foreach ($microline as $item) {
$izdelek = ((string) $item->izdelekKategorija);
$kategorija = (($spisekKategorij[$izdelek]) ? $spisekKategorij[$izdelek] : $kategorija);
$newProductData = array(
"sku" => (string) $item->izdelekID .= ' abbt',
"name" => (string) $item->izdelekIme,
'price' => ((real) $item->cenaBrezddv),
'description' => (string) $item->izdelekOpis . (string) $item->izdelekDodatenOpis,
'short_description' => (string) $item->izdelekDodatenOpis,
'diagonala_rshop' => (string) $item->velikost_zaslona,
'procesor_rshop' => (string) $item->procesor,
'ram_rshop' => (string) $item->ram,
'hdd_rshop' => (string) $item->disk,
'operacijski_rshop' => (string) $item->licencna_nalepka,
'locljivost_rshop' => (string) $item->locljivost,
'grafika_rshop' => (string) $item->grafika,
"attribute_set" => "test",
"store" => "rshop",
"category_ids" => $kategorija,
);
$newProductData["image"] = '+' . (string) $item->slike->slika1; // + show picture, - dont show picture
$newProductData['small_image'] = '+' . (string) $item->slike->slika1; // small img
$newProductData['thumbnail'] = '+' . (string) $item->slike->slika1;
echo $izdelek;
echo $kategorija;
echo $slika;
echo '<pre>';
print_r($newProductData);
echo '</pre>';
$dp->ingest($newProductData);
echo '' . ' mem:' . memory_get_usage() . " ... Done! <br />n"; //memory usage check
}
unset($microline);
$dp->endImportSession(); // end import
我问得太快了…问题是岩浆配置,所以解决方案是:
- 启用Magmi图像属性处理器插件
-
使用"default" profile
dp -> beginImportSession("123","创造");
(123是错误的岩浆剖面)所以右行必须是:
$dp->beginImportSession("default", "create");