Magento - Получить связанные атрибуты продукта для товара в списке пожеланий


В app/code/local/Mage/Catalog/Product/Type/Configurable/Price.php , Я пытаюсь получить значения атрибутов связанного продукта в списке пожеланий. Я пробовал несколько подходов, но, похоже, могу создавать данные только для родительского продукта.

Последняя попытка

    $customer = Mage::getSingleton('customer/session')->getCustomer();
    if($customer->getId()) {
        $wishlist = Mage::getModel('wishlist/wishlist')->loadByCustomer($customer, true);
        $wishListItemCollection = $wishlist->getItemCollection();
        foreach ($wishListItemCollection as $wlitem) {
            $wishitem = Mage::getModel('catalog/product')->setStoreId($wlitem->getStoreId())->load($wlitem->getProductId());
            //echo $wishitem->getId() . '<br>';
            if($product->getId() == $wishitem->getId()) { //if the current product id equals the wishlist product id
                echo $wishitem->getSku()."</br>";
            }
        }
    }

Это дает мне только артикул родительского продукта. В конечном итоге я хочу получить значение атрибута для 2 атрибутов, которые я добавил для настраиваемых продуктов (не супер атрибутов), но, похоже, этот продукт в долларах Price.php имеет только родительскую коллекцию продуктов.

Другие попытки:

            $item_s = Mage::getModel('wishlist/item')->loadWithOptions($product->getId(), 'simple_product')->getOptionsByCode();
            $simple_product = $item_s['simple_product']->getData();
            $simple_product_id = $simple_product['product_id'];
            $sim_product = Mage::getModel('catalog/product')->load($simple_product_id);
            print_r($sim_product);

Это привело только к ошибке на странице.

Также:

    $_item = Mage::getModel('catalog/product')->load($product->getId());
    //echo $_item->getData('ppuom');
    //print_r($_item);
    $simpleProduct = $_item->getOptionsByCode()['simple_product']->getItem()->getProduct();
    print_r($simpleProduct); 
Author: NotJay, 2016-05-19

1 answers

Кажется, что вы прошли большую часть пути туда. Я протестировал это на своем сайте Magento, и это сработало для меня. На самом деле это довольно просто, вам просто нужно выбрать подходящую модель для этой коллекции. Кроме того, похоже, что вы меняете цены?!?! Будьте осторожны, чтобы элементы списка желаний содержали необходимые атрибуты, используемые в вашей логике.

$_item = Mage::getModel('catalog/product')->load($product->getId());
$attribute1 = $_item->getData('attribute1_code'); //see admin for attribute code
$attribute2 = $_item->getData('attribute2_code'); //see admin for attribute code

ИЛИ

Внесите изменения в файлы списка пожеланий вашего шаблона, а не в логику ценообразования в папке кода. У вас будет доступ ко всем необходимым данным, и это не будет мешать price.php файл, на который в значительной степени полагаются в корзине и других важных областях веб-сайта. Цена в списке пожеланий пересчитывается, когда она все равно перемещается в корзину.

 2
Author: berg37, 2016-05-23 15:12:42