Masalah pengumpulan produk - data harga yang salah atau tidak menunjukkan stok barang habis

9

Saya mengambil koleksi produk berdasarkan kategori saat ini. Saya membutuhkan koleksi ini untuk mengandung produk stok masuk dan keluar, dan saya juga membutuhkan data harga untuk ditampilkan dengan benar.

Toko saya dikonfigurasikan untuk menyimpan harga produk sebagai termasuk pajak, dan untuk menunjukkan harga sebagai inklusif dan eksklusif di bagian depan toko.

Kode untuk mendapatkan koleksi adalah sebagai berikut:

$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); 

Masalah dengan hal di atas adalah ketika memuat blok harga menggunakan getPriceHtml() metode ini, harga inklusif dan eksklusif ditampilkan sebagai harga inklusif.

Setelah beberapa penelitian, saya menemukan bahwa menambahkan a addFinalPrice() metode ke koleksi saya memberi saya harga yang diharapkan - harga inklusif eksklusif dan benar.

Namun, jika saya memasukkan addFinalPrice()metode ini, koleksi saya tidak lagi mengandung produk yang tidak tersedia.

Apakah ada cara untuk mengembalikan data harga yang benar dan memiliki koleksi berisi produk laku dan habis stok?

BrynJ
sumber

Jawaban:

3

addFinalPrice()juga menelepon applyProductLimitationFilters. Metode ini menerapkan beberapa filter sesuai dengan cara koleksi dikonfigurasikan, seperti filter toko yang hanya menampilkan produk yang terlihat di toko saat ini.

Jika Anda ingin memuat semua produk, terlihat atau tidak, seperti tanpa filter harga, Anda dapat menghapus filter toko seperti ini, sebelum memanggil addFinalPrice():

$collection->setStoreId(null);
Fabian Schmengler
sumber
@fschmengler - terima kasih, ini sepertinya pilihan yang lebih baik.
BrynJ
1

Saya telah menyelesaikan masalah ini sekarang, dan sebenarnya cukup sederhana dan logis - Saya hanya perlu pergi ke Configuration -> Catalog -> Inventorydan mengatur 'Display Out of Stock Products' ke Yes.

Dengan set di atas Yes, dan addFinalPrice()metode ditambahkan ke koleksi, saya sekarang mendapatkan semua produk saya dan data harga yang benar.

BrynJ
sumber
Ini bagus jika Anda ingin menunjukkan stok produk di mana-mana . Jika hanya untuk koleksi ini, lihat jawaban saya di bawah ini
Fabian Schmengler