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

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

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

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

【问题讨论】:

    标签: magento magento2 price


    【解决方案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 更新了它。
      • 您好,再次感谢您的帮助。真的很感激,但我不想在售罄后隐藏整个产品。产品应该仍然可见,但在产品页面上的价格应该替换为“已售”标签。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多