Я бы хотел отобразить количество товара на страницах категории. Я попробовал stockRegistry
, и он работает просто отлично. Однако, когда он работает в производственной среде, для категории с большим количеством продуктов, он делает ошибку 500 или другие ошибки, которые не имеют ответа от сервера. Я считаю, что причина в том, что stockRegistry
создал слишком много запросов, которые вызывают проблему.
Мой код ниже:
class ListProduct extends \Magento\Catalog\Block\Product\ListProduct {
private $_stockRegistry;
private $stockHelper;
public function __construct(
\Magento\Catalog\Block\Product\Context $context,
\Magento\Framework\Data\Helper\PostHelper $postDataHelper,
\Magento\Catalog\Model\Layer\Resolver $layerResolver,
CategoryRepositoryInterface $categoryRepository,
\Magento\Framework\Url\Helper\Data $urlHelper,
\Magento\CatalogInventory\Api\StockRegistryInterface
$stockRegistry,
Stock $stockHelper,
array $data = []
)
{
$this->_stockRegistry = $stockRegistry;
$this->stockHelper = $stockHelper;
parent::__construct(
$context,
$postDataHelper,
$layerResolver,
$categoryRepository,
$urlHelper,
$data
);
}
public function getProductStock($id) {
return $this->_stockRegistry->getStockItem($id)->getQty();
}
}
И, конечно, я обновил свой XML-файл для использования этого класса.
Каким образом можно получить количество, отображаемое на страницах категорий, с лучшей производительностью?