Перейти к содержимому

Как доба添ть флаг страны в список характеристик товара

В этой инструкции показано, как сделать так, чтобы рядом с названием страны в карточке товара отображался её флаг. Это помогает покупателям быстрее находить товары нужного происхождения.

Пример отображения флага


  1. Создайте характеристику типа «Текст / Выбор одного значения из списка».
  2. В качестве значений сохраните 3-буквенные коды стран.
  3. Найдите идентификатор этой характеристики в разделе «Настройки → Типы и характеристики товаров» — он понадобится для настройки отображения флага.
  4. Укажите нужное значение в свойствах товара.

Шаг 2. Редактирование шаблона страницы товара

Заголовок раздела «Шаг 2. Редактирование шаблона страницы товара»

Откройте тему дизайна вашего магазина и найдите файл, который отвечает за вывод списка характеристик товара. Обычно это файл product.html.

В теме дизайна «Дефолт 3.0» нужный участок кода выглядит так:

{foreach $_features as $_feature_id => $_feature_value}
{$_true_params = ["weight", "brand", "model", "width", "height", "depth", "color", "manufacturer"]}
{$_is_good_param = ($_feature_id|in_array:$_true_params)}
{$_itemprop = ""}
{if $_is_good_param}{$_itemprop = $_feature_id}{/if}
{$_feature = ifset($sku_features, $_feature_id, null)}
{if $_feature && $_feature.type == 'divider'}
<tr class="divider">
<td colspan="2">{$_feature.name|escape}</td>
</tr>
{elseif $_feature}
<tr>
<td class="name">{$_feature.name|escape}</td>
<td class="value" itemprop="{$_itemprop|escape}">
{if is_array($_feature_value)}
{if $_feature.type == 'color'}
{implode('
', $_feature_value)}
{else}
{implode(', ', $_feature_value)}
{/if}
{else}
{$_feature_value}
{/if}
</td>
</tr>
{/if}
{/foreach}

Добавьте перед циклом foreach массив с названиями стран и их кодами:

{$feature_countries = [
'Россия' => 'rus',
'Соединенные Штаты Америки' => 'usa',
'Германия' => 'deu'
]}

Найдите строку, которая выводит одиночное значение характеристики:

...
{else}
{$_feature_value} {* вот эта строка *}
{/if}

Добавьте перед ней условие для отображения флага:

{* код характеристики с названиями и кодами стран *}
{if $_feature_id == 'country'}
{$country_key = trim($_feature_value)}
{if !empty($feature_countries[$country_key])}
<img src="{$wa_url}wa-content/img/country/{$feature_countries[$country_key]}.gif" style="display: inline-block;">
{/if}
{/if}
{$_feature_value}

Полный фрагмент кода с добавленным условием для отображения флагов:

{$feature_countries = [
'Россия' => 'rus',
'Соединенные Штаты Америки' => 'usa',
'Германия' => 'deu'
]}
{foreach $_features as $_feature_id => $_feature_value}
{$_true_params = ["weight", "brand", "model", "width", "height", "depth", "color", "manufacturer"]}
{$_is_good_param = ($_feature_id|in_array:$_true_params)}
{$_itemprop = ""}
{if $_is_good_param}{$_itemprop = $_feature_id}{/if}
{$_feature = ifset($sku_features, $_feature_id, null)}
{if $_feature && $_feature.type == 'divider'}
<tr class="divider">
<td colspan="2">{$_feature.name|escape}</td>
</tr>
{elseif $_feature}
<tr>
<td class="name">{$_feature.name|escape}</td>
<td class="value" itemprop="{$_itemprop|escape}">
{if is_array($_feature_value)}
{if $_feature.type == 'color'}
{implode('
', $_feature_value)}
{else}
{implode(', ', $_feature_value)}
{/if}
{else}
{* код характеристики с названиями и кодами стран *}
{if $_feature_id == 'country'}
{$country_key = trim($_feature_value)}
{if !empty($feature_countries[$country_key])}
<img src="{$wa_url}wa-content/img/country/{$feature_countries[$country_key]}.gif" style="display: inline-block;">
{/if}
{/if}
{$_feature_value}
{/if}
</td>
</tr>
{/if}
{/foreach}

Важно: замените 'country' на идентификатор вашей характеристики (его можно посмотреть в разделе «Настройки → Типы и характеристики товаров»). Добавьте нужные страны в массив $feature_countries, используя формат 'Название страны' => 'код страны'.