Produk kehabisan stok masih muncul di frontend, cari dan lainnya - Magento 2.1.0

12

Saya melihat bahwa instalasi magento 2.1.0 saya memiliki masalah! Menolak untuk menyembunyikan stok produk dari halaman pencarian dan kategori! Saya membersihkan cache, saya mengindeks ulang, tetapi tidak berhasil!

Bisakah Anda memberi saya saran?

Produk saya dengan stok 0, tetapi di depan mereka muncul dalam stok, dan ketika Anda memesan mereka memberi Anda kesalahan ini:

We don't have as many "Item's name" as you requested.

Terima kasih

Sunting nanti:

Saya juga tahu informasi ini:

Atur di admin> Toko> konfigurasi> Katalog> Inventaris> Opsi Saham> Tampilkan Produk Habis Stok ke NO

Ini sebenarnya adalah fitur Magento. Mengatur Tampilan kehabisan stok produk ke Tidak hanya menyembunyikannya dari halaman daftar kategori dan halaman hasil pencarian. Halaman produk sebenarnya masih tersedia. Dimulai dengan CE 1.9.1 bahkan ada pesan di bawah pengaturan konfigurasi Display out of stock products mengatakan Products masih akan ditampilkan oleh URL produk langsung .. Dan ini sebenarnya adalah hal yang baik. Dengan cara ini mesin pencari tidak mendaftarkan banyak 404 halaman ketika produk Anda kehabisan stok. Saya tidak melihat ada salahnya meninggalkannya seperti itu. Pelanggan tetap tidak bisa memesannya. Jika Anda ingin produk sama sekali tidak tersedia di toko Anda, Anda harus menandainya sebagai dinonaktifkan atau menetapkan visibilitasnya ke Tidak terlihat satu per satu atau menghapus kaitannya dengan situs web dari tab situs web di halaman edit produk admin. Sumber:Produk kehabisan stok masih muncul di frontend

edgetwism
sumber
Saya juga menghadapi masalah yang sama. Bahkan setelah mengubah konfigurasi backend, saya masih menghadapi ini. Jika Anda menemukan solusinya, beri tahu saya.
sabarivenkatesankrish
Apakah kalian masih mengalami masalah ini? Apakah Anda menggunakan tema khusus? Saya pikir itu mungkin bisa menjadi akar masalah.
Fred Orosko Dias

Jawaban:

7

Buka admin> Toko> konfigurasi> Katalog> Inventaris> Opsi Saham

Setel Tampilan Produk Habis Stok ke NO

masukkan deskripsi gambar di sini

Valash Prashant
sumber
3
Sudah melakukannya! Masih tidak ada perubahan!
edgetwism
2

Saya menghadapi masalah yang sama persis (Magento v2.1.9) karena "Pesan Mundur", yang ditetapkan "Izinkan Jumlah Di Bawah 0 dan Beri tahu Pelanggan"

Buka admin> Toko> konfigurasi> Katalog> Inventaris> Opsi Saham Setel Tampilan "Produk Habis Stok" ke NO


Buka admin> Toko> konfigurasi> Katalog> Inventaris> Pilihan Stok Produk Setel Pesan Ulang ke "Tanpa Pesan Ulang"

Catatan: Perubahan dapat memakan waktu karena memproses seluruh katalog.

masukkan deskripsi gambar di sini

Nadeem0035
sumber
0

Saya memiliki masalah yang sama pada 2.2.3. Di pihak saya, ini terjadi setelah perintah pemutakhiran. Saya mencoba perintah dan menjalankan kueri tetapi tidak berhasil. Saya mengatasinya dengan mengubah opsi berikut dari Ya ke Tidak. Stores => Configuration => Catalog=> Catalog =>Disable Add to cart button for Guests From Yes to NoSemoga ini bisa membantu seseorang .Terima kasih masukkan deskripsi gambar di sini

Mahmood Rehman
sumber
Secara default tidak ada opsi seperti itu.
Priyank
-1
namespace vendor\module\Block\Product;

class ListProduct extends \Magento\Catalog\Block\Product\ListProduct{

    protected function _getProductCollection(){
        $collection = parent::_getProductCollection();
        $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
        $productIds = $objectManager->create('\vendor\module\Helper\Data')->getIdsToLastStock($collection->getAllIds());
        $orderString = array('CASE e.entity_id');
        foreach($productIds as $i => $productId) {
            $orderString[] = 'WHEN '.$productId.' THEN '.$i;
        }
        $orderString[] = 'END';
        $orderString = implode(' ', $orderString);
        $collection->addAttributeToFilter('entity_id', array('in' => $productIds));
        $collection->getSelect()->order(new \Zend_Db_Expr($orderString));
        return $collection;
    }

}
starjet
sumber
-3

Temukan solusinya!

Masukkan filter dalam katalog: Jumlah: 0,0000 - 0,0000!

Kemudian pilih semua, tindakan> perbarui atribut> inventaris canggih> Ketersediaan Stok (klik ubah)> Pilih kehabisan stok> simpan kemudian indeks ulang dan produk hilang :)

edgetwism
sumber
Dan untuk produk yang dapat dikonfigurasi?
Franck Garnier
-3

vendor namespace \ module \ Helper;

Data kelas diperluas \ Magento \ Framework \ App \ Helper \ AbstractHelper {

protected $_stockItemRepository;
protected $_scopeConfig;
protected $_storeScope;

public function __construct(\Magento\CatalogInventory\Model\Stock\StockItemRepository $_stockItemRepository, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig)
{
    $this->_stockItemRepository = $_stockItemRepository;
    $this->_scopeConfig = $scopeConfig;
    $this->_storeScope = \Magento\Store\Model\ScopeInterface::SCOPE_STORE;
}


public function getIdsToLastStock($ids){
    if($this->_scopeConfig->getValue('module/vendor_module/active',$this->_storeScope)==1) {
        $products = array();
        $productIds = array();
        foreach ($ids as $id) {
            try {
                $stockItem = $this->_stockItemRepository->get($id);
                $products[] = array('id' => $id, 'stock' => $this->checkIfAvailableInStock($stockItem));
            } catch (\Exception $ex) {
                $products[] = array('id' => $id, 'stock' => 0);
            }
        }

        if (count($products) > 0) {
            foreach ($products as $id => $value) {
                $names[$id] = $value['stock'];
            }
            $keys = array_keys($products);
            array_multisort(
                $names, SORT_ASC, SORT_NUMERIC, $products, $keys
            );
            $result = array_combine($keys, $products);
            foreach ($result as $product) {
                $productIds[] = intval($product['id']);
            }
            return $productIds;
        } else {
            return $ids;
        }
    }
    return $ids;
}


private function checkIfAvailableInStock($item){
    if($item->getIsInStock()){
        if($item->getQty()>0)
            return 0;
    }
    return 1;
}

}

starjet
sumber