Magento 2:在产品缺货后切换“已售”标签的价格

Posted

技术标签:

【中文标题】Magento 2:在产品缺货后切换“已售”标签的价格【英文标题】:Magento 2: Switch the price for 'Sold' label after product is out of stock 【发布时间】:2020-02-13 12:57:01 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

据我了解,您对这个问题有两个方面

1) 如果产品缺货,则在产品详细信息页面上隐藏价格

价格在 vendor/magento/module-catalog/view/frontend/layout/catalog_product_view.xml 中定义 在类中调用: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() 函数来检查产品的可用性

希望对你有帮助

【讨论】:

【参考方案2】:

在 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

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

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

在订单取消时将商品的状态设置为库存在订单被取消时想要将商品退回库存时选择“是”。 p>

下单时减少库存:如果您想在下单时调整手头数量,请选择

那么我们就可以进入 Magento 2 中允许您显示或禁用产品缺货的部分了。

您要显示缺货产品,您将显示缺货产品部分设置为。相反,如果要禁用它,请设置 No

【讨论】:

您好,感谢您的回答,但您的解决方案是针对 Magento 2 的吗?也许我只是不明白,但它看起来像是 Magento 1 的。 @whiterabbit 请再次检查我的答案,我也用 Magento 2 更新了它。 您好,再次感谢您的帮助。真的很感激,但我不想在售罄后隐藏整个产品。产品应该仍然可见,但在产品页面上的价格应该替换为“已售”标签。

以上是关于Magento 2:在产品缺货后切换“已售”标签的价格的主要内容,如果未能解决你的问题,请参考以下文章

添加显示magento 2.0.7版本缺货的产品

Magento : 缺货产品在类别页面中显示在最后

如果产品缺货,则显示属性 Magento

如何在magento中对库存状态的产品集合进行排序

Magento产品因库存0而消失但库存选项不可用

在magento的Jm siotis主题中将产品设置为oos时,产品布局搞砸了