Подскажите, как мне выставить значение характеристики в class="product-sidebar" Есть решение

Есть задача - вывести характеристику "Доставка" (id dostavim) под наличие товара. При этом это значение убрать с основных характеристик, чтобы она там не светилась.. рисунок в комплекте... заранее спасибо !

4 ответа

  • 1
    Роман Петунин 22 апреля 2015 01:03 #

    Тема ох как актуальна

  • 3
    Михаил Ушенин Webasyst 22 апреля 2015 07:20 # Решение

    Там сложно, придётся поредактировать тему дизайна примерно так (расскажу на примере темы Default).

    В файле product.html найдите кусок кода, который начинается с комментария <!-- product features -->, дальше идёт условие {if $product.features} и цикл foreach длиной строк в 20-30. Вырезаете весь этот большой кусок в буфер обмена и вместо него вставляете одну строку:

    {$smarty.capture.features}

    Теперь в этом же файле ищете строку, в которой подключается файл product.cart.html:

    {include file="product.cart.html" inline}

    и меняете её вот так:

    {include file="product.cart.html" inline special_feature=ifset($special_feature)}

    Затем в любом месте перед этой строкой вставляете скопированный большой кусок кода и меняете его вот так (можете скопировать готовый вариант прямо отсюда, правда форматирование кода получится некрасивым):

    {capture name=features}

    <!-- product features -->

    {if $product.features}

    <table class="features" id="product-features">

    {foreach $product.features as $f_code => $f_value}

    {capture name=feature}

    <tr{if $features[$f_code].type == 'divider'} class="divider"{/if}>

    <td class="name">

    {$features[$f_code].name|escape}

    </td>

    <td class="value" itemprop="{$f_code|escape}">

    {capture name="value"}

    {if is_array($f_value)}

    {if $features[$f_code].type == 'color'}

    {implode('<br /> ', $f_value)}

    {else}

    {implode(', ', $f_value)}

    {/if}

    {else}

    {$f_value}

    {/if}

    {/capture}

    {$smarty.capture.value}

    </td>

    </tr>

    {/capture}

    {if $f_code == 'length'}

    {$special_feature = ['name' => $features[$f_code].name|escape, 'value' => $smarty.capture.value]}

    {else}

    {$smarty.capture.feature}

    {/if}

    {/foreach}

    </table>

    {/if}

    {/capture}

    В этом большом изменённом коде я подчеркнул код характеристики, которую вам нужно перенести в область кнопки "Купить" — тут это характеристика с кодом length. Просто поменяйте на код своей характеристики.

    Теперь идём в файл product.cart.html и в нём в любом нужном вам месте (где нужно разместить указанную характеристику) добавляем вот это:

    {if !empty($special_feature)}{$special_feature.name}: {$special_feature.value}{/if}

    * Если у вас другая тема, имена файлов и куски кода могут отличаться. Если покажется, что вообще ничего из описанного выше непонятно, попробуйте проделать всё это с темой Default, для которой я писал этот пример. Если получится, тогда пробуйте по аналогии проделать то же самое, уже имея опыт успешного изменения данной стандартной темы.

    • +1
      Плебей Плебей 7 июня 2016 00:51 #

      Здравствуйте.

      Подскажите, пожалуйста, а как вывести две и более характеристики в product.cart?

      Все, что я смог (но не знаю правильно ли), это вытянуть их из общего массива: {if $f_code == 'weight' || $f_code == 'brand'}

      А вот как их вывести не понимаю. Выводится только одна характеристика.


      Заранее благодарю за помощь.

  • 2
    Роман Петунин 24 апреля 2015 09:09 #

    Спасибо, всё получилось! Очень разжёванный ответ!

    Вот пример как это вышло


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

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