Отображение наличия в каталоге

Здравствуйте! У меня такой вопрос - сейчас наличие товара отображается не только на странице отдельного товара, с полным описанием. А на страница каталога, или отдельной категории, где список товаров, наличие не отображается.

И вопрос, собственно в том - можно ли сделать, чтобы наличие каждого товара отображалось также в общем каталоге?


3 ответа

  • 1
    dangler 28 ноября 2016 10:38 #

    Чтобы сделать отображение наличия в общем каталоге, я пытался скопировать из product.cart.php код


     <!-- stock info -->
        {if $product_available || count($product.skus) > 1}
            <div class="stocks">
                {function name=in_stock n=0 low=5 critical=2}
                    {if $n > $low or $n === null}
                        <strong class="stock-high"><i class="icon16 stock-green"></i>[`In stock`]</strong>
                    {elseif $n > $critical}
                        <strong class="stock-low"><i class="icon16 stock-yellow"></i>{* _w("Only %d left in stock", "Only %d left in stock", $n) *}{_w("Only a few items left")}</strong>
                    {elseif $n > 0}
                        <strong class="stock-critical"><i class="icon16 stock-red"></i>{_w("Only %d left in stock", "Only %d left in stock", $n)}</strong>
                    {else}
                        <strong class="stock-none"><i class="icon16 stock-transparent"></i>{if $wa->shop->settings('ignore_stock_count')}[`Pre-order only`]{else}[`Out of stock`]{/if}</strong>
                    {/if}
                {/function}
                {foreach $product.skus as $sku}
                    <div {if $sku.id != $product.sku_id}style="display:none"{/if} class="sku-{$sku.id}-stock">
                        {if $sku.stock}
                            {foreach $stocks as $stock_id => $stock}
                                {if isset($sku.stock[$stock_id])}
                                    {$stock_count = $sku.stock[$stock_id]}
                                {else}
                                    {$stock_count = null}
                                {/if}
                                {$stock.name}: {in_stock n=$stock_count low=$stock.low_count critical=$stock.critical_count}<br>
                            {/foreach}
                        {else}
                            {in_stock n=$sku.count}
                        {/if}
                    </div>
                {/foreach}
                {if $product.sku_type}
                    <div class="sku-no-stock">
                        <strong class="stock-none">[`Product with the selected option combination is not available for purchase`]</strong>
                    </div>
                {/if}
            </div>
        {/if}

    и вставить его в list-thumbs.php, в цикл {foreach $products as $p}, между кнопкой "купить" и ценой. Но, когда я вставил, на сайте ничего не изменилось внешне. А в исходном html-коде появился только комментарий <!-- stock info -->, а все остальное - нет.

    Поэтому, до сих пор так и непонятно, как же сделать отображение наличия в каталоге, в списке товаров

  • 1
    Andrey Burym 7 декабря 2016 11:35 #

    "решение" костыльное, не знаю как феншуйнее сделать, возможно поможет... Нужно как-то определить витрину и назначенный ей склад. В моём случае везде один склад и для СПб - другой + плагин региональности, в шаблоне списка, после {foreach $products as $p}

    {$is_Piter = (shopRegionsViewHelper::parseTemplate('{region_name}') == 'Санкт-Петербург')} // витрина
    
    {foreach $products as $p}
    {$product = $wa->shop->product($p)}
    {$sku = $product.skus[$product.sku_id]}
    {$sklad_id = 2}
    {$stock_count = true }
    
    {if $is_Piter}
    {$sklad_id = 1}
    {/if}
    
    {if $sku.stock|@count gt 0 }
      {if isset($sku.stock[$sklad_id])}
        {$stock_count = $sku.stock[$sklad_id] > 0}  
      {/if}
    {/if}
    
    {$available = $stock_count && ($wa->shop->settings('ignore_stock_count') || $p.count === null || $p.count > 0)}

    ...в общем, идея такая... может не совсем красиво, но работает. (конечно, всё слетит, если пересоздать склады...)


  • 1
    Leva 24 апреля 2018 12:04 #

    Вот попробуйте выводит в категории в наличии или нет

    <span class="v-products-list-card__stock{if !$theme_settings.products_stock_show} _hide{/if}">
                                    {if !$available}
                                        <span class="_no-stock">
                                            [`Out of stock`]
                                        </span>
                                    {elseif $wa->shop->settings('ignore_stock_count') && $p.count !== null && $p.count == 0}
                                        <span class="_pre-stock">
                                            [`Pre-order only`]
                                        </span>
                                    {else}
                                        <span class="_in-stock">
                                            [`In stock`]
                                            {if $theme_settings.products_stock_count_show && $p.count !== null}
                                                : {$p.count} [`unit`]
                                            {/if}
                                        </span>
                                    {/if}
                                </span>
    
                                {if $theme_settings.products_list_sku_show && isset($p.skus_list.sku) && !empty($p.skus_list.sku)}
                                    <span class="v-products-list-card__sku">[`Vendor code`] - {$p.skus_list.sku}</span>
                                {/if}

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите