Nicht vorrätige Produkte werden weiterhin im Frontend, in der Suche und in anderen Bereichen angezeigt - Magento 2.1.0


12

Ich sehe, dass meine Installation von Magento 2.1.0 ein Problem hat! Weigert sich , nicht vorrätige Produkte von Such- und Kategorieseiten zu verstecken ! Ich habe den Cache geleert, neu indiziert, aber kein Glück!

Können Sie mir Ratschläge geben?

Meine Produkte sind auf Lager 0, aber vorne erscheinen sie auf Lager, und wenn Sie sie bestellen, erhalten Sie diesen Fehler:

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

Vielen Dank

Später bearbeiten:

Ich kenne auch diese Informationen:

Stellen Sie unter admin> Geschäfte> Konfiguration> Katalog> Inventar> Lageroptionen> Nicht vorrätige Produkte auf NEIN ein

Dies ist eigentlich eine Funktion von Magento. Wenn Sie "Nicht vorrätige Produkte anzeigen" auf "Nein" setzen, werden diese nur auf den Kategorielistenseiten und der Suchergebnisseite ausgeblendet. Die Produktseite ist tatsächlich noch verfügbar. Ab CE 1.9.1 gibt es sogar eine Meldung unter der Konfigurationseinstellung "Nicht vorrätige Produkte anzeigen", die besagt, dass Produkte weiterhin über direkte Produkt-URLs angezeigt werden. Und das ist eigentlich eine gute Sache. Auf diese Weise registrieren Suchmaschinen nicht viele 404 Seiten, wenn Ihre Produkte nicht mehr vorrätig sind. Ich sehe keinen Schaden darin, es so zu lassen. Der Kunde kann sie sowieso nicht bestellen. Wenn Sie möchten, dass ein Produkt in Ihrem Geschäft überhaupt nicht verfügbar ist, müssen Sie es als deaktiviert markieren oder die Sichtbarkeit auf Nicht einzeln sichtbar setzen oder die Zuordnung zu den Websites von der Registerkarte Websites auf der Bearbeitungsseite des Administratorprodukts entfernen. Quelle:Nicht vorrätige Produkte werden weiterhin im Frontend angezeigt


Ich stehe auch vor dem gleichen Problem. Auch nach dem Ändern der Backend-Konfiguration bin ich immer noch damit konfrontiert. Wenn Sie die Lösung gefunden haben, lassen Sie es mich bitte wissen.
Sabarivenkatesankrish

Tritt dieses Problem immer noch bei euch auf? Verwenden Sie ein benutzerdefiniertes Thema? Ich denke, es könnte wahrscheinlich die Wurzel des Problems sein.
Fred Orosko Dias

Antworten:


7

Gehen Sie zu admin> Geschäfte> Konfiguration> Katalog> Inventar> Aktienoptionen

Stellen Sie Display Out of Stock Products auf NO

Geben Sie hier die Bildbeschreibung ein


3
Schon gemacht! Immer noch keine Veränderung!
Edgetwism

2

Ich hatte genau das gleiche Problem (Magento v2.1.9) aufgrund von "Rückständen", das auf "Menge unter 0 zulassen und Kunden benachrichtigen" eingestellt war.

Gehen Sie zu admin> Geschäfte> Konfiguration> Katalog> Inventar> Lageroptionen. Setzen Sie die Anzeige "Nicht vorrätige Produkte" auf NEIN


Gehen Sie zu admin> Stores> Konfiguration> Katalog> Inventar> Produktbestandoptionen. Setzen Sie Nachbestellungen auf "Keine Nachbestellungen".

Hinweis: Das Ändern kann einige Zeit dauern, da der gesamte Katalog verarbeitet wird.

Geben Sie hier die Bildbeschreibung ein


0
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;
    }

}

0

Ich habe das gleiche Problem in 2.2.3. Auf meiner Seite ist es nach dem Upgrade-Befehl passiert. Ich habe Befehle ausprobiert und Abfragen ausgeführt, aber kein Glück. Ich habe das Problem gelöst, indem ich die folgende Option von Ja auf Nein Stores => Configuration => Catalog=> Catalog =>Disable Add to cart button for Guests From Yes to Nogeändert habe . Hoffentlich hilft dies jemandem .Vielen Dank Geben Sie hier die Bildbeschreibung ein


Standardmäßig gibt es keine solche Option.
Priyank

-2

Namespace Vendor \ Module \ Helper;

Klassendaten erweitern \ 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;
}

}}


-3

Die Lösung gefunden!

Filter in Katalog aufnehmen: Menge: 0.0000 - 0.0000!

Wählen Sie dann alle aus, Aktion> Attribute aktualisieren> Erweitertes Inventar> Lagerverfügbarkeit (klicken Sie auf Ändern)> Nicht auf Lager auswählen> Speichern, dann neu indizieren und die Produkte sind verschwunden :)


Und für konfigurierbare Produkte?
Franck Garnier
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.