Vấn đề thu thập sản phẩm - dữ liệu giá không chính xác hoặc không hiển thị hết hàng


9

Tôi đang lấy một bộ sưu tập sản phẩm dựa trên danh mục hiện tại. Tôi cần bộ sưu tập này để chứa cả trong và ngoài sản phẩm chứng khoán và tôi cũng cần dữ liệu giá được hiển thị chính xác.

Cửa hàng của tôi được định cấu hình để lưu trữ giá sản phẩm đã bao gồm thuế và để hiển thị giá cả bao gồm và độc quyền ở mặt trước cửa hàng.

Mã để có được bộ sưu tập như sau:

$category = Mage::registry('current_category'); 
$_productCollection = Mage::getModel('catalog/product')->getCollection()
                ->addCategoryFilter($category)
                ->addAttributeToSelect(['sku', 'name', 'price'])
                ->addAttributeToFilter('status', 1)
                ->addAttributeToSort('jump_number', Varien_Data_Collection::SORT_ORDER_ASC); 

Vấn đề với ở trên là khi tải khối giá bằng getPriceHtml()phương pháp, cả giá bao gồm và giá độc quyền được hiển thị dưới dạng giá đã bao gồm.

Sau một số nghiên cứu, tôi thấy rằng việc thêm một addFinalPrice()phương pháp vào bộ sưu tập của tôi mang lại cho tôi mức giá dự kiến ​​- một mức giá bao gồm chính xác và độc quyền.

Tuy nhiên, nếu tôi bao gồm addFinalPrice()phương thức, bộ sưu tập của tôi không còn chứa các sản phẩm chứng khoán nữa.

Có cách nào để trả lại dữ liệu giá chính xác và bộ sưu tập có chứa cả sản phẩm có thể bán được và hết hàng không?

Câu trả lời:


3

addFinalPrice()cũng gọi applyProductLimitationFilters. Phương pháp này áp dụng một số bộ lọc theo cách bộ sưu tập được định cấu hình, như bộ lọc cửa hàng chỉ hiển thị các sản phẩm có thể nhìn thấy trong cửa hàng hiện tại.

Nếu bạn muốn tải tất cả các sản phẩm, có thể nhìn thấy hay không, như không có bộ lọc giá, bạn có thể xóa bộ lọc cửa hàng như thế này, trước khi gọi addFinalPrice():

$collection->setStoreId(null);

@fschmengler - cảm ơn, đây có vẻ là một lựa chọn tốt hơn.
BrynJ

1

Tôi đã giải quyết vấn đề này ngay bây giờ và nó thực sự khá đơn giản và hợp lý - tôi chỉ cần truy cập Configuration -> Catalog -> Inventoryvà đặt 'Hiển thị hết sản phẩm chứng khoán' thành Yes.

Với cài đặt ở trên YesaddFinalPrice()phương thức được thêm vào bộ sưu tập, giờ đây tôi nhận được tất cả các sản phẩm của mình và dữ liệu giá chính xác.


Điều này là tốt nếu bạn muốn hiển thị ra khỏi các sản phẩm chứng khoán ở khắp mọi nơi . Nếu nó chỉ dành cho bộ sưu tập này, hãy xem câu trả lời của tôi dưới đây
Fabian Schmengler
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.