2015-04-04 12 views
6

Próbuję sprawdzić, czy produkt ma niestandardowe opcje, czy nie w kodzie (mój kod uruchamia zdarzenie sales_order_place_after). Mam spróbować poniżej kodu, ale nic nie zwraca. $product->hasCustomOptions() i $product->hasOptions()jak sprawdzić produkt ma niestandardowe opcje?

Proszę dać mi znać, co mi brakuje.

+0

@Marius pan odpowiedział na podobne pytanie tutaj http://stackoverflow.com/questions/25745879/product-has-a-custom-options-or-not-in-magento Może więc możesz mi pomóc – androidjunky

Odpowiedz

11

Napotkano ten błąd więcej razy, niż się liczy. Albo $_product->hasOptions() lub $_product->hasCustomOptions() zawsze zwraca false. Nadal nie wiem, dlaczego ten błąd występuje.

W każdym razie możesz uzyskać ten sam wynik, wykonując następujące czynności. Dla konfigurowalnych produktów:

<?php if ($_product->getData('has_options')): ?> 
    <!-- do something --> 
<?php endif; ?> 

I aby uzyskać ten sam wynik dla prostych produktów z opcji niestandardowych:

<?php if ($_product->getData('has_options') && ($_product->getTypeID() == 'simple')): ?> 
    <!-- do something --> 
<?php endif; ?> 

Mam nadzieję, że pomaga przyszłej przygód!


EDIT


Rozwiązanie powyżej nie działa w pętli, gdy opcja dane kategoria mieszkanie jest włączona w Magento, i nie chcemy, aby przeładować produktu wewnątrz pętla foreach !!

Zamiast tego, możemy sprawdzić opcje niestandardowe stosując następujący singleton wewnątrz pętli:

$opts = Mage::getSingleton('catalog/product_option')->getProductOptionCollection($_product); 
$optsSize = $opts->getSize(); 

if ($optsSize) { 
    ... // go go go 
} 
+1

, ale dlaczego $ _product-> hasOptions() nie działa?, wygląda na to, że jest to naturalne wezwanie do zrobienia –

3

wykorzystać metodę

Powiązane problemy