Magento 2:产品缺货后切换 'Sold' 标签的价格

Magento 2: Switch the price for 'Sold' label after product is out of stock

我正在尝试为缺货产品的产品页面上的 'Sold' 标签更改价格。 如果产品售罄,价格应隐藏,取而代之的是 'Sold' 标签。

我发现价格放在 catalog_product_view.xml 中,它调用 vendor/magento/module-catalog/view/base/templates/product/price/final_price.phtml 文件,但我不知道在哪里以及如何引入条件来检查产品是否是是否售罄

有人可以帮忙吗? 提前致谢。

Magento 1 中缺货产品的隐藏价格。

RWD 主题

app/design/frontend/rwd/template/catalog/product/view.phtml

改变

<div class="price-info">
    <?php echo $this->getPriceHtml($_product); ?>
    <?php echo $this->getChildHtml('bundle_prices') ?>
    <?php echo $this->getTierPriceHtml() ?>
</div>

收件人:

<?php if($_product->isSaleable()): ?>
    <div class="price-info">
        <?php echo $this->getPriceHtml($_product); ?>
        <?php echo $this->getChildHtml('bundle_prices') ?>
        <?php echo $this->getTierPriceHtml() ?>
    </div>
<?php endif; ?>

默认主题:

\app\design\frontend\base\default\template\catalog\product\view\type\default.phtml

改变

<?php echo $this->getPriceHtml($_product) ?>

收件人:

<?php if($_product->isSaleable()): ?>
    <?php echo $this->getPriceHtml($_product) ?>
<?php endif; ?>

Magento 2 中缺货产品的隐藏价格。

在管理页面上,点击 Stores,然后在 Setting 部分下,选择 Configuration.

在此页面中,您可以在 目录 下找到 库存 部分。展开 Stock Options 部分,您可以开始设置产品的自定义状态。

在进入缺货产品部分之前,您需要输入此字段。

取消订单时将商品状态设置为有货想要return时选择是如果订单被取消,商品将添加到您的库存中。

下单时减少库存:下单时如果要调整在手数量,选择

然后我们可以来到允许您在 Magento 2 中显示或禁用缺货产品的部分。

您要显示缺货的商品,您将显示缺货的商品栏目设置为。相反,如果要禁用它,请设置

据我了解,您对这个问题有两个部分

1) 如果产品缺货,则在产品详情页面隐藏价格

  • 价格在 vendor/magento/module-catalog/view/frontend/layout/catalog_product_view 中定义。xml
  • 调用于 class:Magento\Catalog\Pricing\Render 和方法:_toHtml()
  • 您可以将使用DI的方法覆盖到下面

    
        protected function _toHtml()
        {
            /** @var PricingRender $priceRender */
            $priceRender = $this->getLayout()->getBlock($this->getPriceRender());
            if ($priceRender instanceof PricingRender) {
                $product = $this->getProduct();
                if ($product instanceof SaleableInterface && $product->isAvailable()) {
                    $arguments = $this->getData();
                    $arguments['render_block'] = $this;
                    return $priceRender->render($this->getPriceTypeCode(), $product, $arguments);
                }
            }
            return parent::_toHtml();
        }
    
  • $product->isAvailable() 是我们添加的新条件

2) 显示已售标签

  • 默认显示缺货标签,但如果您仍想显示,请在 vendor/magento/modul-catalog/view/frontend/layout/catalog_product_view 中创建您的块和模板。xml

    • 和 $product->isAvailable() 函数来检查产品的可用性

希望对您有所帮助