Jak uzyskać dziecięcy obraz produktu w koszyku Magento

10

Próbuję uzyskać obraz produktu podrzędnego konfigurowalnego produktu, który został dodany do koszyka przez klienta.

Na przykład, jeśli klient dodał do koszyka parę czerwonych butów, chciałbym pokazać ten kolor w koszyku.

Ustawiłem „Pokaż sam miniaturkę produktu”

Problemem jest ta funkcja z rozszerzenia próbki koloru

public function findColorImage($value, $arr, $key, $type)
{
    $found = '';
    if(isset($arr[$key])) {
        $total = count($arr[$key]);
        if($total>0)
        {
            for($i=0; $i<$total;$i++)
            {
                if($value == ucwords($arr[$key][$i]))//if it matches the color listed in the attribute
                {
                    $found = $arr[$type][$i];//return the image src
                }
            }
        }
    }
    if ($found == '') {
        if (isset($arr['image'])){
            $found = $arr['image'][0];
        }
    }
    return $found;
}

w szablonie colorselectorplus/cart/item/default.phtml

findColorImage ($ _ item-> getProductId (), $ product_base, 'color', 'image'); ?>

Który jest wywoływany z Helper / Data.php z jakiegoś powodu, zwraca tylko obraz podstawowy dla produktu i ignoruje poprawny obraz dla koloru.

Próbowałem zmienić imagesposób używania, thumbnailale nie mam żadnej radości ...

Czy jakiś programista napotkał ten problem z tym rozszerzeniem i zdołał go naprawić?

Nie miałbym nic przeciwko nawet teraz poprawce ...

użytkownik1704524
źródło

Odpowiedzi:

10

Idź admin>System>Configuration>Checkout>Shopping Cart>Configurable Product Imagedo Product Thumbnail Itselftego, aby uczynić obraz produktu potomnego Zamiast wysyłania

$_item->getProductId()
send $_item
and put somelogic
$_item

dla produktu konfigurowalnego $ _Item> getSku daj produktowi potomnemu inny czas podaj produkty główne. więc tylko produkt podrzędny za pomocą SKU przedmiotu

Chyba użyłeś rozszerzenia innych firm, więc mam zmienić jakąś zmianę według mojej koncepcji zmian

Krok 1 : zamiast tegoof send product send all item object

findColorImage($_item->getProductId(),$product_base,'color', 'image');

do

findColorImage($_item,$product_base,'color', 'image'); 

Krok 2 : zmiana funkcji

public function findColorImage($item, $arr, $key, $type)
{
    /* $value  set here*/
    $value=$item->getProductId();

    $found = '';
    if(isset($arr[$key])) {
        $total = count($arr[$key]);
        if($total>0)
        {
            for($i=0; $i<$total;$i++)
            {
                if($value == ucwords($arr[$key][$i]))//if it matches the color listed in the attribute
                {
                    $found = $arr[$type][$i];//return the image src
                }
            }
        }
    }

    if ($found == '') {
        if (isset($arr['image'])){
            $found = $arr['image'][0];
        }
    }
    /*  for configurable product send child product image */
    if($item->getProductTypeId="configurable"){
        $ChildProduct=Mage::getModel('catalog/product')->loadByAttribute('sku',$item->getSku());
        $found=Mage::helper('catalog/image')->init($ChildProduct, 'thumbnail');

    }
    return $found;
}
Amit Bera
źródło
Dziękuję za komentarze. Wspomniałem w tym poście, że mam to już tak ...
user1704524
przepraszam, ale nie do końca jasne, co masz na myśli ???
user1704524