• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Сопутствующий товар

under_pressure

Новичок
Доброго времени суток, форумчане!

Столкнулся с такой проблемой. Скажем есть некий товар (простой товар) - например кирпич. В карточке товара должно отображаться следующее: описание товара, input для количество основного товара, input для количества сопутствующего товара(например деревянный поддон. Заказать его отдельно без кирпичей нельзя. В каталоге он тоже не представлен), кнопка заказать. В форме заказа должно отображаться: наименование товара, его количество, количество сопутствующего товара, цена основного товара, цена сопутствующего товара, общая стоимость.

Вопрос как сделать этот сопутствующий товар? Сделать вариативный товар не получится - т.к в карточке товара - input на любое количество товара (например 1000). Через какой-нибудь product-fields? И как добавить стоимость поддонов к итоговой стоимости?
 

Вложения

  • Снимок.JPG
    Снимок.JPG
    48.9 KB · Просмотры: 7
  • Снимок1.JPG
    Снимок1.JPG
    42.1 KB · Просмотры: 7

artemkomarov

Специалист
Местный
UX просто на 5+
Если нельзя купить поддон без кирпичей а количество кирпичей ограниченно вместимостью 1 и тд поддона то КАКОЙ СМЫСЛ их добавлять отдельно?
 

Mills

Новичок
UX просто на 5+
Если нельзя купить поддон без кирпичей а количество кирпичей ограниченно вместимостью 1 и тд поддона то КАКОЙ СМЫСЛ их добавлять отдельно?
Скажем мне надо купить 100 кирпичей и я заберу их на машине. Зачем мне поддон?
 

under_pressure

Новичок
Да и не в этом дело. Надо чтобы в каждой карточке товара была возможность добавить кол-во поддонов и затем при оформлении заказа посчитать их стоимость. С помощью чего лучше организовать эти поддоны? Атрибуты товара? Добавить кастомное поле в карточку товара? Или все таки через variation?
 

artemkomarov

Специалист
Местный
Скажем мне надо купить 100 кирпичей и я заберу их на машине. Зачем мне поддон?
Вот это звучит логично! Вы покупаете кирпичи а не поддоны. А поддон либо вам нужен либо нет. Выбор их количества отдельно или вместе с количеством кирпичей просто глуп и является намеренным усложнением интерфейса.
 

under_pressure

Новичок
Вот это звучит логично! Вы покупаете кирпичи а не поддоны. А поддон либо вам нужен либо нет. Выбор их количества отдельно или вместе с количеством кирпичей просто глуп и является намеренным усложнением интерфейса.
В любом случае, получилось добавить поле для поддонов с помощью плагина wc-fields-factory.
Остался вопрос по добавлению стоимости поддонов к стоимости заказа. Я так понимаю за подсчет промежуточной стоимости отвечает фильтр woocommerce_cart_item_subtotal. В шаблоне cart.php есть код:
Код:
<td class="product-subtotal" data-title="<?php esc_attr_e( 'Total', 'woocommerce' ); ?>">
 <?php
         echo apply_filters( 'woocommerce_cart_item_subtotal', WC()->cart->get_product_subtotal( $_product, $cart_item['quantity'], $cart_item['pallet']), $cart_item, $cart_item_key);
 ?>
</td>
Если я добавлю к аргументам $cart_item['pallet'] (кол-во поддонов), а в шаблоне class-wc-cart.php добавлю в код $cart_item и изменю порядок расчета $row_price - то все работает
Код:
    public function get_product_subtotal( $product, $quantity,  $cart_item ) {
        $price   = $product->get_price();
        $taxable = $product->is_taxable();

       ...
            $row_price = $price * $quantity + $cart_item['pallet']*256;
            $product_subtotal = wc_price( $row_price );

        }

        return apply_filters( 'woocommerce_cart_product_subtotal', $product_subtotal, $product, $quantity, $this );
    }

Но как правильно внести изменения в function get_product_subtotal() - не ковыряя код в шаблоне? Через фильтр?
 

under_pressure

Новичок
я так понимаю public function get_product_subtotal ( $product, $quantity) - это метод ядра woocommerce? как тогда правильно переопределить такую функцию, если я хочу добавить в параметры $cart_item и изменить порядок вычисления $row_price?
 
Сверху Снизу