Как отобразить количество запасов только для простых продуктов?
Я хочу отображать количество запасов только для простых продуктов. Для этого я добавил некоторый код, и он отлично работает для простых продуктов. Но дело в том, что он также показывает количество для других типов продуктов, таких как настраиваемые.
Вот код, который я добавил app/code/Smartwave/Porto/Helper/Data.php
<?php
/**
* Copyright © 2015 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Smartwave\Porto\Helper;
use Magento\Framework\Registry;
class Data extends \Magento\Framework\App\Helper\AbstractHelper
{
protected $_objectManager;
private $_registry;
protected $_filterProvider;
private $_checkedPurchaseCode;
private $_messageManager;
protected $_configFactory;
public function __construct(
\Magento\Framework\App\Helper\Context $context,
\Magento\CatalogInventory\Api\StockRegistryInterface $stockRegistry,
Registry $registry
) {
$this->stockRegistry = $stockRegistry;
parent::__construct($context);
}
public function getStockQty($product)
{
return $this->stockRegistry->getStockStatus($product->getId(), $product->getStore()->getWebsiteId())->getQty();
}
}
App/design/frontend/Smartwave/porto/Magento_Catalog/templates/product/view/type/default.phtml
<?php
/**
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
// @codingStandardsIgnoreFile
?>
<?php /* @var $block \Magento\Catalog\Block\Product\View\AbstractView */?>
<?php $_product = $block->getProduct() ?>
<?php if ($block->displayProductStockStatus()): ?>
<?php if ($_product->isAvailable()): ?>
<div class="stock available" title="<?php /* @escapeNotVerified */ echo __('Availability') ?>">
<span class="label"><?php /* @escapeNotVerified */ echo __('Availability:') ?></span>
<span><?php echo $this->helper('Smartwave\Porto\Helper\Data')->getStockQty($_product);?></span>
</div>
<?php else: ?>
<div class="stock unavailable" title="<?php /* @escapeNotVerified */ echo __('Availability') ?>">
<span class="label"><?php /* @escapeNotVerified */ echo __('Availability:') ?></span>
<span><?php /* @escapeNotVerified */ echo __('Out of stock') ?></span>
</div>
<?php endif; ?>
<?php endif; ?>
1
Author: Bhakti Thakkar, 2018-11-29
2 answers
Замените этот приведенный ниже код в своем условии, если иначе:
<?php if ($_product->isAvailable()): ?>
<?php if($_product->getTypeId() == 'simple') : ?>
<div class="stock available" title="<?php /* @escapeNotVerified */ echo __('Availability') ?>">
<span class="label"><?php /* @escapeNotVerified */ echo __('Availability:') ?></span>
<span><?php echo $this->helper('Smartwave\Porto\Helper\Data')->getStockQty($_product);?></span>
</div>
<?php endif; ?>
<?php else: ?>
<div class="stock unavailable" title="<?php /* @escapeNotVerified */ echo __('Availability') ?>">
<span class="label"><?php /* @escapeNotVerified */ echo __('Availability:') ?></span>
<span><?php /* @escapeNotVerified */ echo __('Out of stock') ?></span>
</div>
<?php endif; ?>
1
Author: Emipro Technologies Pvt. Ltd., 2018-11-29 07:24:58
Вы можете попробовать выполнить приведенное ниже условие для отображения количества запасов, если это только простой продукт
if($_product->getTypeId() == 'simple'){
//your code
}
Он вернет настраиваемый или простой
2
Author: Hitesh, 2018-11-29 07:18:48