2015-01-22 6 views
2

Я пытаюсь программно манипулировать отношениями с продуктом в магазине Magento.Программно модифицировать сопутствующие товары в magento

Из того, что я читал, setRelatedLinkData должен быть способ пойти.

Как простой тест, я просто пытаюсь заменить продукты, связанные с продуктом, ничем (т. Е. Пустым массивом), однако он не работает - данный продукт все еще показывает связанный продукт в бэкэнд.

Тест кода я работаю с это:

  $product = Mage::getModel('catalog/product')->load($product->getId()); 
      $linkData = array(); 
      print_r($linkData); 

      $product->setRelatedLinkData($linkData); 
      echo "Save\n"; 

      $r = $product->save(); 

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

ПРИМЕЧАНИЕ. Я не только хочу удалить связанные продукты, в конце концов, я хочу также добавить новые, поэтому запрос DELTE FROM ... не является тем, что я ищу. Однако, если я не могу заставить его работать для удаления продуктов, то, конечно же, они не будут работать, чтобы добавить их, поэтому один шаг за раз :-)

ответ

6

Самый быстрый способ, который я могу придумать, - использовать ссылку Ресурс:

app/code/core/Mage/Catalog/Model/Resource/Product/Link.php saveProductLinks

// sample code 

$product = Mage::getModel('catalog/product')->load(147); 
$linkData = array(); 

Mage::getResourceModel('catalog/product_link')->saveProductLinks(
    $product, $linkData, Mage_Catalog_Model_Product_Link::LINK_TYPE_RELATED 
); 

, и если вы хотите назначить продукты используют один и тот же код, но обеспечить это как $ Linkdata:

$linkData = array( 
    '145' => array('position' => 1), 
    '146' => array('position' => 2) 
); 
+0

Да, это работает - спасибо! –

Смежные вопросы