새 단순 제품을 CSV 또는 수동으로 추가 할 때 적절한 구성 가능한 제품 (SKU = "item_number-item_colour_code", 예 : BLEA2606B-BK001)이 추가되었는지 확인해야합니다. 구성 가능한 제품이 있으면 간단한 제품을 연결하십시오. 구성 가능한 제품이 존재하지 않으면 간단한 제품의 데이터를 사용하여 생성 한 다음 간단한 제품을 연결하십시오. HERE에서 도움을 얻었지만 구성 가능한 제품이 이미 있는지 확인하는 방법과 생성 방법이없는 경우 어떻게 확인해야할지 모릅니다.가져 오기 CSV에서 구성 가능한 제품 만들기
Here은 내가 다운로드 한 스크립트 파일입니다. 이것이 나의 시나리오와 함께 작동한다면 아무도 조언을 할 수 있습니까?
수정 됨 내가 가져 오기에 구성 가능한 제품을 만드는 아이디어를 스크랩 한
. 지금 catalog_product_save_after 이벤트를 캡처하여이 작업을 수행하고 있습니다. 바라건대 그것이 나를 어딘가에 데려다 줄 것이다.
2
OK, 마지막으로, 나는이 작업이 편집했다. 나는 그것을 관찰자에게서하고있다. 제품 저장 프로세스가 느려지지만 다른 방법은 생각할 수 없다는 것을 알고 있습니다. 내가 뭘하는지 그게 전부 :
public function productSave($observer)
{
$p = $observer->getProduct();
$pr = Mage::getModel('catalog/product')->load($p->getId());
$attributeValue = Mage::getResourceModel('catalog/product')->getAttributeRawValue($pr->getId(), 'size'); //loads attribute option value
$qtyStock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($pr)->getQty();
Mage::log('Qty: '.$qtyStock.$pr->getId(), null, 'test.txt');
if ($pr->getTaxClassId() == '0' || !isset($pr->getTaxClassId)) {
$taxClass = 'None';
} elseif ($pr->getTaxClassId() == '2') {
$taxClass = 'Taxable Goods';
} elseif ($pr->getTaxClassId() == '4') {
$taxClass = 'Shipping (not used by AvaTax)';
} elseif ($pr->getTaxClassId() == '5') {
$taxClass = 'General';
}
$_configSku = $pr->getItemNumber().'-'.$pr->getItemColourCode();
$category = array();
$categoryCollection = $pr->getCategoryCollection();
foreach ($categoryCollection as $cat) {
$category[] = $cat->getId();
}
$_configExist = Mage::getModel('catalog/product')->loadByAttribute('sku',$_configSku);
if($_configExist && $_configSku != '-') {
//Mage::log($_configExist, null, 'test.txt');
//Mage::log($_configSku, null, 'test.txt');
$new_ids = array();
$current_ids = $_configExist->getTypeInstance()->getUsedProductIds();
foreach($current_ids as $temp_id)
{
$new_ids[] = $temp_id;
}
}
if(!$_configExist && $_configSku != '-') {
$att_size = Mage::getModel('eav/entity_attribute')->loadByCode('catalog_product','size');
$att_sizes = $this->__getAttList('size');
$confProduct = Mage::getModel('catalog/product');
$confProduct->setAttributeSetId('10');
$confProduct->setSku($_configSku);
$confProduct->setTypeId('configurable');
$confProduct->setName($pr->getName());
$confProduct->setDescription($pr->getDescription());
$confProduct->setShortDescription($pr->getShortDescription());
$confProduct->setCreatedAt(strtotime('now'));
$confProduct->setPrice($pr->getPrice());
$confProduct->setStatus(1);
$confProduct->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH);
$confProduct->setWebsiteIDs(array(1));
$confProduct->setStockData(array(
'is_in_stock' => 1,
'qty' => 9999
));
$confProduct->setTaxClassId($taxClass);
$confProduct->setCategoryIds($category);
/* Set Configurable Attributes */
$confProduct->setConfigurableAttributesData($tmp = array(
array_merge($att_size->getData(), array('label' => '', 'values' => $size_values))
));
$simpleProducts = array(
$pr->getId()=>array('attribute_id'=>'145', 'label'=>'size', 'value_index'=>$attributeValue, 'is_percent'=>0, 'pricing_value'=>'')
);
/* Set Associated Products */
$confProduct->setConfigurableProductsData($simpleProducts);
//print_r(get_class_methods($confProduct));
$confProduct->save();
}
elseif ($_configExist && !in_array($pr->getId(), $new_ids)) {
$new_ids = array();
$current_ids = $_configExist->getTypeInstance()->getUsedProductIds();
$current_ids[] = $pr->getId();
$current_ids = array_unique($current_ids);
foreach($current_ids as $temp_id)
{
parse_str("position=", $new_ids[$temp_id]);
}
Mage::log('inside', null, 'test.txt');
Mage::log($current_ids, null, 'test.txt');
$_configExist->setConfigurableProductsData($new_ids)->save();
}
모든/업데이트 및 CSV 가져 오기 (가 느린 있지만 작동)를 저장 설명서를 제품과 함께 잘 작동합니다. 유일한 것은 구성 가능한 제품에서 속성 이름 필드가 비어 있습니다. 속성 이름을 설정하는 방법은 무엇입니까?
하지만 문제는 구성 가능한 제품 (SKU = "item_number-item_colour_code", 예 : BLEA2606B-BK001)이 추가되었는지 확인하는 것입니다. 뿐만 아니라 구성 가능한 제품을 만들면. magmi가이 작업을 수행 할 지 확실하지 않습니다. 스크립트 작성 위치를 알고 싶습니다. 나는 catalog_product_save_after 옵저버를 잡아서 거기서해야하는지, 아니면 productController를 덮어 쓰고 saveAction에 붙여야하는지에 대한 요구 사항을위한 스크립트를 작성하고있다. import csv 또는 수동으로 prduct 생성/업데이트 중 하나를 통해 제품 저장시이를 확인하고 싶습니다. 어떤 제안. – Hum