Подскажите, как мне выставить значение характеристики в class="product-sidebar" Есть решение
Есть задача - вывести характеристику "Доставка" (id dostavim) под наличие товара. При этом это значение убрать с основных характеристик, чтобы она там не светилась.. рисунок в комплекте... заранее спасибо !
4 ответа
Тема ох как актуальна
Там сложно, придётся поредактировать тему дизайна примерно так (расскажу на примере темы 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, для которой я писал этот пример. Если получится, тогда пробуйте по аналогии проделать то же самое, уже имея опыт успешного изменения данной стандартной темы.
Здравствуйте.
Подскажите, пожалуйста, а как вывести две и более характеристики в product.cart?
Все, что я смог (но не знаю правильно ли), это вытянуть их из общего массива: {if $f_code == 'weight' || $f_code == 'brand'}
А вот как их вывести не понимаю. Выводится только одна характеристика.
Заранее благодарю за помощь.
Спасибо, всё получилось! Очень разжёванный ответ!
Вот пример как это вышло