Флаги стран для характеристики «Страна происхождения»

Задача

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

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

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

Для показа флагов используйте коллекцию иконок из директории фреймворка 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}

0 комментариев

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

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