Magento API Gönderilen ürünler Önyüzde görünmüyor - onlar backend yeniden kaydedilir sürece

3 Cevap php

Ben Magento API üzerinden ürünlerini yolluyorum ve Önyüzde görünmüyor. Ben, uç gidip onları açmak, değişim nothing, ürünü kaydedin ve sonra görünecektir zorunda.

Herhangi bir fikir neden? Ben geri sonunda kaydederek eylemi, ben sadece ne bilmiyorum, DB bazı ekstra bayraklar tasarruf varsayalım.

@ Steve Madsen. Burada kod, ben arkaplan arayüzü bunun bana soracak gibi ben, çok önemli bir şey eksik olduğumu sanmıyorum, o zaman ben ürünün açın.

public void Import(Product product)
        {
            var mageProduct = new catalogProductCreateEntity();
            mageProduct.name = product.Name;
            mageProduct.description = product.Description;
            mageProduct.price = product.Price.ToString();
            mageProduct.short_description = product.ShortDescription;
            mageProduct.description = product.Description;
            mageProduct.status = "1";
            mageProduct.weight = "0";
            mageProduct.tax_class_id = "2";

            mageProduct.gift_message_available = "0";


            var additionalattributes = new associativeEntity[4];

            var entity = new associativeEntity();
            entity.key = "ship_price";
            entity.value = product.PostageCost;
            additionalattributes[0] = entity;

            entity = new associativeEntity();
            entity.key = "depth_cm";
            entity.value = product.Depth;
            additionalattributes[1] = entity;

            entity = new associativeEntity();
            entity.key = "height_cm";
            entity.value = product.Height;
            additionalattributes[2] = entity;

            entity = new associativeEntity();
            entity.key = "width_cm";
            entity.value = product.Width;
            additionalattributes[3] = entity;

            mageProduct.additional_attributes = additionalattributes;

            _m.catalogProductCreate(MageSessionProvider.GetSession(), "simple", "26", product.SKU, mageProduct);

            var stock = new catalogInventoryStockItemUpdateEntity();
            stock.manage_stock = 0;
            stock.qty = "0";

            _m.catalogInventoryStockItemUpdate(MageSessionProvider.GetSession(), product.SKU, stock);
            Console.WriteLine(product.Name + " imported");
        }

3 Cevap

Ben Magento takılan bir şey elle veritabanları veya API aracılığıyla durumlarda bir sürü Magento UI kaydedildiğinde hangi nedenle olursa olsun, bir varsayılan değere ayarlanır, bir eksik özelliği olacaktır gördüm. API veya veritabanı ekler özniteliğini ayarlamak yok oysa UI, düzgün varsayılan ayar değerlerini almaktadır.

Yani, senin durumunda, hata ayıklama benim ilk satırı olacak

  1. (Ne API yöntemleri kullanıyorsunuz? Yoksa özel bir API kullanıyorsunuz?) API ile [sic] bir ürün "Yükle"
  2. Bu ürün için bir nitelik değerleri anlık alın
  3. Magento UI aracılığıyla ürünü kaydedin
  4. Bu ürün için bir nitelik değerleri anlık alın
  5. Diff # 2 ve # 4
  6. Lütfen "upload" [sic] yöntemi 4. mevcut değil 2. herhangi niteliklerini ayarlar emin olun

Magento veritabanı esneklik için optimize yerine sorgulayarak bir Entity Attribute Value modelleme düzeni kullanır. Uzun lafın kısası, sizin temel ürün nitelik değerleri almak için aşağıdaki sorguları çalıştırabilirsiniz.

Eğer veritabanından bir ürün kimliği ile [3455] her örneğini değiştirmek isteyeceksiniz. Sen Magento Yönetici arabiriminde bir proudct URL inceleyerek bu kimliği alabilirsiniz. Varsayılan dizin bu kullanım durumda optimize edilmemiştir rağmen, sorgu without WHERE yan tümceleri çalıştırabilir ve veritabanı boyutuna bağlı bir slowish sorgu alırsınız.

SELECT eav_attribute.frontend_label, eav_attribute.attribute_code,
catalog_product_entity_varchar.value
FROM catalog_product_entity
LEFT JOIN catalog_product_entity_varchar ON catalog_product_entity.entity_id = catalog_product_entity_varchar.entity_id
LEFT JOIN eav_attribute on catalog_product_entity_varchar.attribute_id = eav_attribute.attribute_id
WHERE catalog_product_entity.entity_id = 3455

UNION

SELECT eav_attribute.frontend_label, eav_attribute.attribute_code,
catalog_product_entity_text.value
FROM catalog_product_entity
LEFT JOIN catalog_product_entity_text ON catalog_product_entity.entity_id = catalog_product_entity_text.entity_id
LEFT JOIN eav_attribute on catalog_product_entity_text.attribute_id = eav_attribute.attribute_id
WHERE catalog_product_entity.entity_id = 3455

UNION

SELECT eav_attribute.frontend_label, eav_attribute.attribute_code,
catalog_product_entity_datetime.value
FROM catalog_product_entity
LEFT JOIN catalog_product_entity_datetime ON catalog_product_entity.entity_id = catalog_product_entity_datetime.entity_id
LEFT JOIN eav_attribute on catalog_product_entity_datetime.attribute_id = eav_attribute.attribute_id
WHERE catalog_product_entity.entity_id = 3455

UNION

SELECT eav_attribute.frontend_label, eav_attribute.attribute_code,
catalog_product_entity_decimal.value
FROM catalog_product_entity
LEFT JOIN catalog_product_entity_decimal ON catalog_product_entity.entity_id = catalog_product_entity_decimal.entity_id
LEFT JOIN eav_attribute on catalog_product_entity_decimal.attribute_id = eav_attribute.attribute_id
WHERE catalog_product_entity.entity_id = 3455

UNION

SELECT eav_attribute.frontend_label, eav_attribute.attribute_code,
catalog_product_entity_gallery.value
FROM catalog_product_entity
LEFT JOIN catalog_product_entity_gallery ON catalog_product_entity.entity_id = catalog_product_entity_gallery.entity_id
LEFT JOIN eav_attribute on catalog_product_entity_gallery.attribute_id = eav_attribute.attribute_id
WHERE catalog_product_entity.entity_id = 3455

UNION

SELECT eav_attribute.frontend_label, eav_attribute.attribute_code,
catalog_product_entity_int.value
FROM catalog_product_entity
LEFT JOIN catalog_product_entity_int ON catalog_product_entity.entity_id = catalog_product_entity_int.entity_id
LEFT JOIN eav_attribute on catalog_product_entity_int.attribute_id = eav_attribute.attribute_id
WHERE catalog_product_entity.entity_id = 3455;

"Ben orada karşılaştırmak ve için SQL kullanılan nerede boş dizeleri ile kuruldu epeyce ekstra özellikler. Yüzden hepsini ayarlayın. Ve bu bir etkiye sahip değildi. Sonunda mageProduct ayar bana aşağı haşlanmış . web siteleri = new [] {"baz";} - Dan 16 Haziran 14:12 "

Teşekkürler Dan! Bu benim için çalıştı. Sınıf kodu örneği mageProduct.websites = new [] {"0"} göstermektedir; Yanlış olan, ben mageProduct.websites = new [] {"baz"} olarak değiştirdim; ve çalışır.

This page was most helpful. While performing the CSV import, I found I had to add: _product_websites and ensure it was set to base for each imported product. Also make sure you have a field for is_in_stock set to 1, after which I found the imports worked fine.

The list of minimum fields that worked for me is: sku, _store, _attribute_set, _type, _category, _root_category, description, msrp_display_actual_price_type, msrp_enabled, name, short_description, qty, is_in_stock, status, tax_class_id, visibility, price, weight, _product_websites

Numune kayıt:

ku,_store,_attribute_set,_type,_category,_root_category,description,msrp_display_actual_price_type,msrp_enabled,name,short_description,status,tax_class_id,visibility,price,weight,_product_websites,qty,is_in_stock
CC0003,,Default,simple,Specialist Therapeutics,Products,Conn Test #3,Use config,Use config,Conn Test #3,ConnTest,1,0,4,0,1,base,3000,1