Magento Mass importer (MAGMI) с использованием плагина изображения - PullRequest
2 голосов
/ 20 января 2012

Я использую datapump, и все хорошо, но мне нужно добавить процессор изображений. Пока не повезло. Кто-нибудь знает, как это сделать? вот это документы . Это код, который у меня работает. Я не вставил переменную.

require_once(MAGENTO."/magmi/integration/magmi_datapump.php");
class TestLogger{
    public function log($data,$type){
        $mess.="$type:$data\n";
    }
}
$dp=Magmi_DataPumpFactory::getDataPumpInstance("productimport");
$dp->beginImportSession("default","create",new TestLogger());   
$item=array(
                            "type"=>"simple",
                            "sku"=>$sku,
                            "name"=>$p_name,
                            "short_description"=>$shortdesc,
                            "description"=>$longdesc,
                            "cost"=>$cost,
                            "price"=>$price,
                            "min_qty"=>0,
                            "qty"=>$stock,
                            "tax_class_id"=>2,
                            "status"=>2,

                            "attribute_set"=>$attribute_set,
                            "category_ids"=>implode(",",array_unique($cat_list)),
                            "manufacturer"=>$manufacturer
                        );
//This doesn't seem to be working.
$item["image"]="http://images.domain.com/product_images".$image[0];

$item["store"]="";
$dp->ingest($item);
$dp->endImportSession();                            

Теперь я просмотрел и не вижу, как загрузить плагин. Есть идеи по его исправлению? Тк

Ответы [ 3 ]

3 голосов
/ 20 января 2012

Для работы imageprocessor, вы должны добавить его в список выбранных плагинов вашего профиля "по умолчанию" через пользовательский интерфейс конфигурации magmi.

2 голосов
/ 25 сентября 2012

jeremyBass_DC считают, что вы не правы, а Двив - прав.

Вы используете это:

$dp->beginImportSession("default","create",new TestLogger());   

Это означает, что вы используете профиль " default ".

Вы можете настроить этот профиль по этому адресу: http://www.yourweb.com/magmi/web/magmi.php

Если нет процессора обработки изображений, вы можете загрузить плагин вручную http://sourceforge.net/projects/magmi/files/magmi-0.7/plugins/individual/

Для установки необходимо поместить папку "itemprocessors" в "magmi \ Plugins \ база \ itemprocessors"

Сначала у меня возникла та же проблема, что и у вас, и этот способ отлично работает.

2 голосов
/ 23 января 2012

Так что я никогда не был в состоянии сделать это ... но теперь я знаю, почему тоже .. Поскольку я не использую пользовательский интерфейс, я не присваиваю всем классам, и поэтому я не могу использовать itemprocessor, а затем процессор изображения, так как он наследует от этого. Так вот как я обошел это. Я просто перебираю список после того, как MAGMI делает это через datapump. Вот как

$imgAttrIds = array(79,80,81);
$imageGalId = 82;   
$conn = Mage::getSingleton('core/resource')->getConnection('core_read');
$connW = Mage::getSingleton('core/resource')->getConnection('core_write');


if($image[0]!=''){
$image_file="http://domain.com/product_images".$image[0];
$param=array();
$config=array();


$p=Mage::getModel('catalog/product')->loadByAttribute('sku',$line[0]);
$entity_id=$p->getId();
$insertData   = array();
$skusToInsert = array();


for ($i = 0; $i <= count($image)-1; $i++) {
    //there is a very nifty image sizer there so $params is a for that ;)
    $param['to']="/media/catalog/product".$image[$i];
    echo function_supersizer($param,$config)."<br/>";
    if($i<=0){
        foreach($imgAttrIds  as $img) {             
            $insertData[]   = "(4, ".$img.", 0, ".$entity_id.", '".$image[$i]."')";
        }
    }
    $skusToInsert[] = "(".$imageGalId.", ".$entity_id.", '".$image[$i]."')";
}
$sql = "INSERT INTO mag_catalog_product_entity_media_gallery (attribute_id, entity_id, value) VALUES ".implode(",",$skusToInsert).";";
$connW->query($sql);
$sql = "INSERT INTO mag_catalog_product_entity_varchar (entity_type_id, attribute_id, store_id, entity_id, value) VALUES ".implode(",",$insertData).";";
$connW->query($sql);

Это работает .. это хорошо работает для меня. Только что проверил 15 000 продуктов ... но .. да, как есть, сначала используйте бета-версию и т. Д.

Ура-Джереми

...