2015-04-04 15 views
6

Tôi đang cố gắng kiểm tra xem sản phẩm có tùy chọn tùy chỉnh hay không trong mã (mã của tôi chạy sales_order_place_after sự kiện). Tôi đã thử mã dưới đây nhưng nó không trả lại bất cứ điều gì. $product->hasCustomOptions()$product->hasOptions()cách kiểm tra sản phẩm có các tùy chọn tùy chỉnh?

Vui lòng cho tôi biết những gì tôi đang thiếu.

+0

@Marius Bạn đã trả lời câu hỏi tương tự tại đây http://stackoverflow.com/questions/25745879/product-has-a-custom-options-or-not-in-magento Vì vậy, có thể bạn có thể giúp tôi – androidjunky

Trả lời

11

Tôi đã gặp lỗi này nhiều lần hơn số lần tôi quan tâm. Hoặc là $_product->hasOptions() hoặc $_product->hasCustomOptions() luôn trả về false. Tôi vẫn không biết tại sao lỗi này xảy ra.

Dù sao, bạn có thể nhận được kết quả tương tự bằng cách thực hiện các thao tác sau. Đối với sản phẩm cấu hình:

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

Và để có được những kết quả tương tự cho sản phẩm đơn giản với các tùy chọn tùy chỉnh:

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

Tôi hy vọng rằng sẽ giúp một nhà thám hiểm trong tương lai!


EDIT


Các giải pháp trên không hoạt động trong vòng khi loại phẳng tùy chọn dữ liệu được kích hoạt trong Magento, và chúng tôi không muốn tải lại sản phẩm bên trong vòng lặp foreach !!

Thay vào đó, chúng ta có thể kiểm tra các tùy chọn tùy chỉnh bằng cách sử dụng singleton sau bên trong vòng lặp:

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

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

nhưng tại sao $ _product-> hasOptions() sẽ không hoạt động?, có vẻ như đây là gọi tự nhiên để làm –

3

sử dụng phương pháp

Các vấn đề liên quan