Vladyslav
Service
Опубликовано: 22 февраля 2021

Задача

Показывать флаг страны рядом с ее названием в списке характеристик товара. Для характеристик типа «Страна происхождения».

Как должно выглядеть

Вариант решения

Для показа флагов используйте коллекцию иконок из директории фреймворка wa-content/img/country/. Файлы иконок с флагами стран названы по их 3-буквенным. Например, rus — Россия, usa — США, deu — Германия и т. д. Список трехбуквенных кодов стран в Википедии.

Посмотрите код характеристики со списком стран в разделе «Настройки → Типы и характеристики товаров».

В теме дизайна магазина найдите фрагмент кода, который формирует список характеристик товара. Вот пример кода для страницы товара (файл product.html) из темы дизайна «Дефолт 3.0».

{foreach $product.features as $f_code => $f_value}    <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}">            {if is_array($f_value)}                {if $features[$f_code].type == 'color'}                    {implode(' ', $f_value)}                {else}                    {implode(', ', $f_value)}                {/if}            {else}                {$f_value} {* вот эта строка *}            {/if}        </td>    </tr> {/foreach}

Перед этим фрагментом добавьте список стран и их 3-буквенных кодов, как показано в примере.

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

Найдите строку, которая показывает на странице одиночное значение, а не массив (список).

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

Добавьте перед этой строкой условие, которое покажет флаг страны перед ее названием.

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

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

{* список стран и их кодов *} {$feature_countries = [    'Россия' => 'rus',    'Соединенные Штаты Америки' => 'usa',    'Германия' => 'deu' ]}  {foreach $product.features as $f_code => $f_value}    <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}">            {if is_array($f_value)}                {if $features[$f_code].type == 'color'}                    {implode(' ', $f_value)}                {else}                    {implode(', ', $f_value)}                {/if}            {else}                {* начало добавленного фрагмента *}                {if $f_code == 'country'}                    {$country_key = trim($f_value)}                    {if !empty($feature_countries[$country_key])}                        <img src="{$wa_url}wa-content/img/country/{$feature_countries[$country_key]}.gif" title="{$m[1]}" style="display: inline-block;">                    {/if}                {/if}                {* конец добавленного фрагмента *}                 {$f_value}            {/if}        </td>    </tr> {/foreach}

Добавить комментарий

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