Тема: Вывод суммы товара на странице каталога

Добрый день,
есть вывод товаров в каталоге, добавляем товары в корзину там отображается сумма по каждому товару и сумма всей покупки.
Как вывести сумму добавленных в корзину товаров рядом с товаром. Т.е. надо вывести Кол-во товара добавленного в корзину умноженное на его стоимость.
Попробовал использовать код из шаблона корзины, но выводятся все цены всех добавленных товаров.
Использовал такой кусок кода:

{foreach $cart_data.items as $index => $item}
                        {$product=$product_items[$index].product}
                        {$cartitem=$product_items[$index].cartitem}
                        {if $product.title == $cartitem.title}
                        <li data-id="{$index}" data-product-id="{$cartitem.entity_id}">
                            <div class="t-drop-basket__list_item">

                                <div class="t-drop-basket__list_item-price">
                                    <span class="price"> {$item.cost}</span>
                                </div>
                            </div>
                        </li>
        {/if}
{/foreach}

Повысить оценку Понизить оценку

Re: Вывод суммы товара на странице каталога

Интересно конечно как вы пробросили переменную $cart_data из корзины? Просто она доступна и рендерится только только для корзины. И чтобы получит корзину нужно её вызвать и получит массив данных. Т.к. программировать вслепую нельзя.
Получить текущую корзину можно так;

{static_call callback=['\Shop\Model\Cart', 'currentCart'] var='cart'}
{$cart_data=$cart->getCartData()}

А вот понять, то что внутри можно через var_dump()

<pre>
{var_dump($cart_data)}
</pre>

3 Отредактировано Антон (28.09.2019 12:18:05)

Re: Вывод суммы товара на странице каталога

Александр, спасибо за наверное более правильный код.
вывод в нужной строке сделал так же как появление кнопок удаления товара из корзины

    {foreach $cart_products as $key => $product_in_cart_id}
                    {if $product_in_cart_id.product.id == $product.id}
                      {$uniq = $product_in_cart_id.cartitem.uniq}
                      {static_call callback=['\Shop\Model\Cart', 'currentCart'] var='cart'}
                        {$cart_data=$cart->getCartData()}
                      <pre>{var_dump($cart_data)}</pre>
                    {/if}
        {/foreach}

Подскажите как вывести нужную сумму товаров в нужной строке? Я в программировании не очень силён.

Повысить оценку Понизить оценку

Re: Вывод суммы товара на странице каталога

Не совсем понял вопрос. Можно на примере?

5

Re: Вывод суммы товара на странице каталога

Долго я ковырялся, плохо когда в смарти почти ноль.
В итоге сделал вот так:

                    {foreach $cart_products as $key => $product_in_cart_id}
                    {if $product_in_cart_id.product.id == $product.id}
                      {*{$uniq = $product_in_cart_id.cartitem.uniq}*}
                      
                      {static_call callback=['\Shop\Model\Cart', 'currentCart'] var='cart'}
                        {$cart_data=$cart->getCartData()}
                        {foreach $cart_data.items as $key => $products_in_cart_cost}
                        {if $products_in_cart_cost.id == $uniq}
                        <span>{$products_in_cart_cost.cost}</span>
                        {/if}
                        {/foreach}
                    {/if}
                    {/foreach}

Не знаю на сколько это правильно, но оно работает. smile) строка которая закомметирована используется ранее в шаблоне, второй раз от неё смысла нет.

Повысить оценку Понизить оценку

Re: Вывод суммы товара на странице каталога

{static_call callback=['\Shop\Model\Cart', 'currentCart'] var='cart'}
{$cart_data=$cart->getCartData()}
Нужно вызвать всего один раз. Поэтому надо подключить его в самый верх вашего файла. Иначе вы в цикле постоянно дергаете корзину.
И не понятно, что у Вас в $cart_products находится. Если тоже самое, что в корзине, то тогда смысла в подгрузке нет.

7

Re: Вывод суммы товара на странице каталога

Спасибо, вынес эти запросы в самый верх шаблона из всех циклов.
$cart_products используется в стандартном шаблоне для показа кнопки удалить у добавленных в корзину товаров. Не нашёл там ни цены на общее количество добавленных в корзину, ни количества добавленных.

                  {foreach $cart_products as $key => $product_in_cart_id}
                    {if $product_in_cart_id.product.id == $product.id}
                      {$uniq = $product_in_cart_id.cartitem.uniq}
                      <a id="remove-{$product.id}" class="pe-2x pe-7s-close-circle removeItem {*link link-one-click pull-right*}" >{* Удалить *}</a> 
                    {/if}
                  {/foreach}

Повысить оценку Понизить оценку