Скидка до -25% на SEO в 2025 году! Подробнее
База знаний
Bodysite.Help — единая база знаний и хаб поддержки по всем продуктам

Как подменить фразу "В наличии" в зависимости от складов в теме дизайна Megashop 3.0

Начиная с версии 1.2.0 в теме дизайна Megashop 3.0 есть возможность подменить стандартные фразы "В наличии" / "Не в наличии" на свои, в зависимости от наличия на конкретном складе.

Как это выглядит:

Как настроить?

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

Для данного функционала нужно создать или использовать существующий блок с id megashop.stocks_available_statuses

Напомню, что блоки создаются в разделе "Сайт" - "Блоки".

Пример готового кода блока:

{capture assign='stocks_condition'}
{literal}
    {if $stocks['1'] >= 5}
        {$status = "in-stock"}
        {$text = "В магазине"}
    {elseif $stocks['1'] >= 1}
        {$status = "low"}
        {$text = "В магазине (мало)"}
    {elseif $stocks['2'] >= 1}
        {$status = "in-stock"}
        {$text = "В наличии на складе"}
    {elseif $stocks['v1'] > 10}
        {$status = "low"}
        {$text = "Предзаказ"}
    {elseif $stocks['1'] <= 0 && $stocks['2'] <= 0 && $stocks['v1'] <= 0}
        {$status = "out-of-stock"}
        {$text = "Нет в наличии"}
    {else}
        {$status = "in-stock"}
        {$text = "В наличии"}
    {/if}
{/literal}
{/capture}

{$stocks_statuses = [
    '1' => [
        'in-stock' => 'Есть',
        'low' => 'Мало',
        'critical' => 'Почти нет',
        'out-of-stock' => 'Нет'
    ],
    '2' => [
        'low' => 'Осталось {$n}',
        'out-of-stock' => 'Нет'
    ]
]}

{$wa->globals('megashop.stocks_available_statuses', ['stocks_condition' => $stocks_condition, 'stocks_statuses' => $stocks_statuses])}

Далее описание составляющих этого кода:

Подмена фразы "В наличии" / "Не в наличии" без вывода по складам:

{capture assign='stocks_condition'}
{literal}
    {if $stocks['1'] >= 5}
        {$status = "in-stock"}
        {$text = "В магазине"}
    {elseif $stocks['1'] >= 1}
        {$status = "low"}
        {$text = "В магазине (мало)"}
    {elseif $stocks['2'] >= 1}
        {$status = "in-stock"}
        {$text = "В наличии на складе"}
    {elseif $stocks['v1'] > 10}
        {$status = "low"}
        {$text = "Предзаказ"}
    {elseif $stocks['1'] <= 0 && $stocks['2'] <= 0 && $stocks['v1'] <= 0}
        {$status = "out-of-stock"}
        {$text = "Нет в наличии"}
    {else}
        {$status = "in-stock"}
        {$text = "В наличии"}
    {/if}
{/literal}
{/capture}

где:

$stocks['n1'] - указание конкретного склада. Вместо n2/n3/n1 нужно укзать id вашего склада, пример: $stocks['1'] , $stocks['2']. Если склад виртуальный, то добавить "v", пример: $stocks['v1'].

В теле условий указать присваивание двух переменных:

  • $status - Необязательна, нужна для стилизации. В качестве значения задать одно из: 'in-stock', 'low', 'critical', 'out-of-stock', чтобы статус окрасился в соответствующий ему цвет.
  • $text - текст статуса (обязательна).

Как узнать ID склада?

К сожалению, в текущем штатном функционале складов не указывается ID складов. Для того, чтобы узнать ID нужно навести курсор на кнопку редактирования склада и посмотреть на ссылку:

Если включен вывод наличия по складам:

В том же блоке ниже добавляем код:

{$stocks_statuses = [
    'n1' => [
        'in-stock' => 'Есть',
        'low' => 'Мало',
        'critical' => 'Почти нету',
        'out-of-stock' => 'Нету'
    ],
    'n2' => [
        'low' => 'Осталось {$n}',
        'out-of-stock' => 'Нету'
    ]
]}

Это массив, у которого ключи - id складов, значения - массив вида 'статус' -> 'текст'

В конце блока обе переменные ($stocks_condition, $stocks_statuses)(или одну, если только одна) поместить в глобальную переменную, в виде массива, с ключами, совпадающими с названиями переменных:

{$wa->globals('megashop.stocks_available_statuses', ['stocks_condition' => $stocks_condition, 'stocks_statuses' => $stocks_statuses])}


Инструкция была полезна?
78% считают ответ полезным
Спасибо за обратную связь!
Чтобы добавить комментарий, войдите в личный кабинет
Для каких приложений предназначена тема дизайна Megashop 3.0?
Есть ли скидка на Megashop 3.0?
У меня сейчас Megashop 2.0, как мне перейти на тему Megashop 3.0?
Хочу внести изменения в код темы дизайна, какие риски это несёт?
Поддерживает ли тема дизайна функционал Premium версии Shop-script?
Почему могут не отображаться иконки оплаты, сравнения, избранного?
Как установить тему в приложении "Блог"?
Написать в техподдержку
В техническую поддержку входит:
  • Консультации по вопросам приобретения
  • Консультации по функционалу и возможностям
  • Выявление и решение проблем в работе функционала
В техническую поддержку не входит:
  • Настройка решения
  • Доработка под запросы клиента
  • Устранение багов в консультационной форме (без предоставления доступов к сайту)
Платная диагностика:
  • Диагностика сложных и неоднозначных проблем
  • Выявление конфликтов со сторонними решениями
  • Выявление конфликтов в вашей среде сервера
  • Приоритетный срок на обработку тикетов
  • Оплата только банковской картой