magento 2.1.5如何以编程方式获取产品禁用状态

时间:2017-06-07 09:29:37

标签: product magento2 status

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

 <?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获取产品状态?

2 个答案:

答案 0 :(得分:4)

经过几个小时的调试后,我就这个问题找到了一个很好的解决方案。

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

 $product_status = $_product->getStatus();

在我的示例中,我使用 $ _ product-&gt; 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

最后,我确认了停用的产品&#39;状态只有2,而不是0。

启用的产品&#39;状态只有1个。

希望我的例子可以帮助很多开发人员。

答案 1 :(得分:0)

在magento核心中,我们发现 enabled = 1 disabled = 2

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

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

const STATUS_DISABLED = 2;

这是来自magento 2.3.0的核心代码

使用核心卢克!