【问题标题】:magento xml import mappingmagento xml 导入映射
【发布时间】:2015-08-15 19:38:58
【问题描述】:

我想将 xml 类别映射到我的 magento 类别。

我整理了一个有效的导入脚本,但它没有导入到 magento 中的任何类别中。

在脚本即时测试中,我想导入 xml 中的产品

<izdelekKategorija>Komponente</izdelekKategorija>

进入magento类别编号738。

我寻求帮助 我是 PHP 初学者。

谢谢。

    <?php
$kat = array(
'Komponente' => '738',
);


class TestLogger
{

    /**
     * logging methos
     *
     * @param string $data
     *            : log content
     * @param string $type
     *            : log type
     */
    public function log($data, $type)
    {
        echo "$type:$data\n";
    }
}

// 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", new TestLogger());        // default- name of profile ,  create - we want to create and update items



 $file="test.xml";

$microline = new SimpleXMLElement($file, null, true);            // load XML

$izdelek = array ((string)$item->izdelekKategorija);

global $kat;
$izdelek = array ((string)$item->izdelekKategorija);
$kategorija = (isset($kat[$izdelek]) ? $kat[$izdelek] : $kategorija);

foreach ($microline as $item){



    $newProductData = array(
            "sku"           => (string)$item->izdelekID .=' inbbt',
            "name"          => (string)$item->izdelekIme,        // name
            "attribute_set" => "test",            // attribute_set
            "store"         => "test",  
            "category_ids"  => $kategorija,
            "tax_class_id"  => "3",         
    );


   $dp->ingest($newProductData);
   echo '' . ' mem:'.memory_get_usage() .  " ... Done! <br />\n";            //memory usage check
    $newProductData=null;    //clear memory
    unset($newProductData); //clear memory
}
unset($microline);

$dp->endImportSession();   // end import
?>

编辑:我设法让脚本正常工作并且导入正常,但它没有从 url 导入图像...

新的工作代码:

    <?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:$data\n";
    }
}

// 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


// $kategorija = $izdelek;
 // $kategorija = (isset($spisekKategorij[$izdelek]) ? $spisekKategorij[$izdelek] : $kategorija);


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
    $newProductData=null;    //clear memory
    unset($newProductData); //clear memory
}
unset($microline);

$dp->endImportSession();   // end import
?>

【问题讨论】:

  • 当您设法回答有关该类别的问题时,您也许应该不更新您的问题,而是制定一个答案来解释解决方案是什么以及为什么。然后你可以问一个新问题,因为你现在的问题是不同的(你可以在你的新问题中链接到你以前的问题来给它一些背景)。这对于问答网站很重要,因为我们会为未来访问者收集问题答案,以便其他人可以像从我的问题和答案中一样受益于您的问题和答案。

标签: php xml magento


【解决方案1】:

我的问题的解决方案是移动

$izdelek = ((string)$item->izdelekKategorija);
 $kategorija = (($spisekKategorij[$izdelek]) ? $spisekKategorij[$izdelek] : $kategorija);

进入 foreach 循环。

【讨论】:

  • 请同时写出问题中前面的代码为什么不起作用,这样移动代码的原因就清楚了。最好只是删除代码。感谢您考虑评论,不要忘记编辑问题并缩短其中的文本(编辑后的部分:现在新问题到位似乎多余)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多