【问题标题】:magento 2.1.5 how to get product disabled status programmaticallymagento 2.1.5 如何以编程方式获取产品禁用状态
【发布时间】:2017-11-08 13:49:27
【问题描述】:

我将以编程方式获取产品的启用/禁用状态。 现在,我们通过这段代码获得了产品实例。

 <?php $_product = $_item->getProduct(); ?>

另外,使用下面的代码部分,我们可以得到产品库存信息。

 <?php $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
      $StockState = $objectManager->get('\Magento\CatalogInventory\Api\StockStateInterface');
      $product_is_stock = $StockState->getStockQty($_product->getId(), $_product->getStore()->getWebsiteId()); ?>

但是,是否有任何解决方案可以在 Magento 2.1 上从 $_product 获取产品状态?

【问题讨论】:

    标签: product magento2 status


    【解决方案1】:

    经过几个小时的调试,我对这个问题有了一个很好的解决方案。

    <?php $_product = $_item->getProduct(); 
    
     $product_status = $_product->getStatus();
    

    在我的示例中,我使用 $_product->getStatus() 将停用产品的状态作为值。

    <?php if (($product_is_stock == 0) || ($_product->getStatus() == 2)): ?>
    

    为确认此操作,我使用这些 sql 命令停用了产品。

    SELECT entity_id FROM `catalog_product_entity_int`
    WHERE attribute_id = (
        SELECT attribute_id FROM `eav_attribute`
        WHERE `attribute_code` LIKE 'status'
    ) AND `catalog_product_entity_int`.value = 2
    

    最后,我确认已停用产品的状态仅为 2,而不是 0。

    已启用产品的状态仅为 1。

    希望我的示例对许多开发人员有所帮助。

    【讨论】:

      【解决方案2】:

      查看magento核心,我们可以发现enabled = 1disabled = 2

      Magento\Catalog\Model\Product\Attribute\Source\Status.php 中

       /**
       * Product Status values
       */
      const STATUS_ENABLED = 1;
      
      const STATUS_DISABLED = 2;
      

      这是来自magento 2.3.0的核心代码

      使用核心卢克!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-11
        • 1970-01-01
        • 2013-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多