Saya memiliki persyaratan untuk menampilkan produk kategori dalam dua daftar - satu untuk persediaan item, yang lainnya untuk persediaan barang habis.
saya menggunakan
Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection()
untuk memfilter koleksi produk saya untuk item persediaan, tetapi tampaknya tidak ada metode yang setara untuk menyaring item persediaan habis - Saya telah melihat Mage_CatalogInventory_Model_Stock
modelnya, yang merupakan tempat metode tersebut didefinisikan.
Saya telah melihat contoh berikut untuk mengambil kembali stok produk:
$collection->joinField(
'is_in_stock',
'cataloginventory/stock_item',
'is_in_stock',
'product_id=entity_id',
'{{table}}.stock_id=1',
'left'
)
->addAttributeToFilter('is_in_stock', array('eq' => 0));
... tapi tentunya ini bukan hanya atau cara terbaik untuk mencapai ini?
Contoh Anda tidak memperhitungkan nilai "gunakan konfigurasi".
Mari kita lihat bagaimana cara
addInStockFilterToCollection
kerjanya:Oke, itu mendelegasikan ke metode lain:
Ini bergabung dengan tabel inventaris dengan ketentuan sebagai berikut:
Produk tidak menggunakan konfigurasi global DAN memiliki "kelola stok" diatur ke "ya" DAN masih ada stok
ATAU
Produk tidak menggunakan konfigurasi global DAN "mengatur stok" diatur ke "tidak"
ATAU
Anda perlu membalikkan kondisinya sebagai berikut:
Produk tidak menggunakan konfigurasi global DAN memiliki "kelola persediaan" diatur ke "ya" DAN tidak ada dalam persediaan
ATAU
Produk menggunakan konfigurasi global DAN konfigurasi global adalah "kelola stok = ya" DAN tidak ada dalam stok
Penjelasan: Anda hanya mengambil kondisi di mana in_stock benar-benar diperiksa dan mengubah perbandingan menjadi 0. Kondisi di mana in_stock tidak diperiksa ("kelola stok" = "tidak") berarti bahwa produk selalu dalam stok, terlepas dari status persediaan. , jadi kami tidak memasukkannya dalam kueri "habis".
Maka ini adalah kode Anda:
sumber
Mage_CatalogInventory_Model_Stock
model?$this
. Bisa juga fungsi sederhana. Saya akan membuat modul terpisah dan menjadikannya metode penolong (atau jika Anda memerlukan ini untuk modul lain, tambahkan ke penolong modul itu)Cuplikan kode berikut akan mengembalikan Anda produk-produk dari kategori yang berstatus 'Aktifkan', katalog Visibilitas, pencarian 'dan Ketersediaan Stok' Kehabisan stok '.
sumber
Anda bisa mencoba ini.
Atau Anda bisa coba ini
Tidak yakin 100%.
sumber