Magento API: Присвоение существующих ранее простых продуктов к настраиваемым продуктам

Это не очень хорошо, но Apple Testing Kit разбивает модульные тесты на две отдельные категории:

  • Логические тесты

    Эти тесты проверяют правильность работы вашего кода в чистых помещениях.

  • Тесты приложений

    Эти тесты проверяют функциональность вашего кода в работающем приложении.

Похоже, существует много кода, связанного с пользовательским интерфейсом, который не может быть запущен в случае «логического теста». Больше информации о тестах логики и тестах приложений здесь.

http://developer.apple.com/library/ios/#documentation/DeveloperTools/Conceptual/UnitTesting/01-Unit-Test_Overview/overview.html

10
задан Josua Marcel Chrisano 25 September 2015 в 08:12
поделиться

3 ответа

Примечания здесь помогли мне запустить это. Поэтому я подумал, что поделюсь с вами кодом для добавления простого продукта к существующему настраиваемому продукту.

Этот код предполагает, что простой продукт можно добавить, я не уверен, что бы произошло, если бы это было не так.

private function _attachProductToConfigurable( $_childProduct, $_configurableProduct ) {
   $loader = Mage::getResourceModel( 'catalog/product_type_configurable' )->load( $_configurableProduct );

   $ids = $_configurableProduct->getTypeInstance()->getUsedProductIds(); 
   $newids = array();
   foreach ( $ids as $id ) {
      $newids[$id] = 1;
   }

   $newids[$_childProduct->getId()] = 1;

   $loader->saveProducts( $_configurableProduct->getId(), array_keys( $newids ) );                
}
5
ответ дан 3 December 2019 в 23:51
поделиться

Я это необоснованное предположение, но я думаю, что то, что вы просите, может не может быть сделано с существующим API. Вам придется написать свой собственный или просто попал прямо в БД.

1
ответ дан 3 December 2019 в 23:51
поделиться

Я работаю над этим прямо сейчас.

На данный момент я нашел эти элементы полезными в качестве ссылок:

Я пока опубликую свой код и, надеюсь, обновлю его, когда он заработает ..

// Set 'item_size' as the super attribute  # choose your own attribute!
// this is the 'choose-able' field that differenciates products
$super_attributes=array( Mage::getModel('eav/entity_attribute')
  ->loadByCode('catalog_product','item_size')
  ->getData('attribute_id')
  );  
$product_collection=Mage::getModel('catalog/product')->getCollection();

// Fetch configurable orders
$product_collection->addFieldToFilter('type_id',Array('eq'=>"configurable"));
#$product_collection->addFieldToFilter('sku',Array('eq'=>"ASMCL000002"));  

$product_collection->addAttributeToSelect('*');

$count=0;
foreach($product_collection as $product) {
  $sku = $product->getSku();
  echo "SKU: $sku\n";

  $simple_children_collection = Mage::getModel('catalog/product')->getCollection();
  $simple_children_collection->addAttributeToSelect('*');
  $simple_children_collection->addFieldToFilter('sku',Array('like'=>$sku . "-%"));
  echo "children: ";
  foreach($simple_children_collection as $child) {
      $child_sku = $child->getSku();
      echo "$child_sku ";
      #visiblity should be 'nowhere'
  }
  echo "\n";

if (!$product->getTypeInstance()->getUsedProductAttributeIds()) {
  # This is a new product without the Configurable Attribue Ids set
  $product->getTypeInstance()
    ->setUsedProductAttributeIds( $super_attributes );

  //$product->setConfigurableAttributesData(array($_attributeData));
  $product->setCanSaveConfigurableAttributes(true); # Not sure if this is needed.

  $product->setConfigurableProductsData(''); # Use this to add child products.

}


  $count++;

  try {
      $product->save();
      $productId = $product->getId();
      echo $product->getId() . ", $sku updated\n";
  }
  catch (Exception $e){
      echo "$sku not added\n";
      echo "exception:$e";
  }

}
echo "\nCount is $count\n";

Хорошо, здесь используется 'item_size' как атрибут, который отличает "простой" продукты. Также предполагается, что «настраиваемый» родительский SKU является корнем дочернего SKU. Например, ABC001 - родитель, а ABC001-SMALL и ABC001-LARGE - простые дети.

Надеюсь, что это кому-то поможет.

2
ответ дан 3 December 2019 в 23:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: