Magento 2: переключите цену на этикетку «Продано» после того, как товара нет в наличии - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь сменить цену на ярлык «Продано» на странице товаров, которых нет в наличии. Если товар распродан, цена должна быть скрыта, и вместо него должна быть пометка «Продано».

Я выяснил, что цена помещена в catalog_product_view. xml, и она вызывает vendor/magento/module-catalog/view/base/templates/product/price/final_price.phtml файл, но я не мог понять, где и как привести условие, чтобы проверить, распродан ли продукт или нет. Заранее спасибо.

Юань

Ответы [ 2 ]

0 голосов
/ 14 февраля 2020

Насколько я понимаю, у вас есть две части к этому вопросу

1) Скрыть цену на странице сведений о товаре, если товара нет в наличии

  • Цены определены у поставщика /magento/module-catalog/view/frontend/layout/catalog_product_view.xml
  • вызывается в классе: Magento \ Catalogue \ Pricing \ Render и метод: _to Html ()
  • Вы можете переопределить метод с помощью 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) Показать ярлык Sold

  • ярлык outofstock показывается по умолчанию, но если вы все еще хотите показать, создайте свой блок и шаблон в vendor / magento / modul-catalog / view /frontend/layout/catalog_product_view.xml

    • и функция $ product-> isAvailable () для проверки доступности продукта

Надеюсь, это поможет

0 голосов
/ 13 февраля 2020

Сокрытие цены на товары, отсутствующие на складе в 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.

На странице администратора нажмите Магазины , затем в разделе Настройка выберите Конфигурация .

В этом На этой странице вы найдете раздел Inventory в каталоге Catalog . Разверните раздел «Опции на складе», и вы сможете начать настраивать пользовательский статус продукта.

enter image description here

Прежде чем перейти в раздел «Нет на складе», вы необходимо ввести это поле.

Установить статус товара на складе при отмене заказа : Вы выбираете ДА, если хотите вернуть товары на свой склад, если заказ отменен.

Уменьшение запаса при размещении заказа : если вы хотите отрегулировать количество под рукой при размещении заказа, вы выбираете Да

Затем мы можем перейти к той части, которая позволяет отображать или отключать продукт, отсутствующий на складе в Magento 2.

Вы хотите отобразить продукт, которого нет в наличии , вы установите для параметра Показать товары на складе значение Да . Напротив, установите Нет , если хотите отключить его.

...