我将以编程方式获取产品的启用/禁用状态。 现在,我们通过此代码获得了产品实例。
<?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获取产品状态?
答案 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的核心代码
使用核心卢克!