Перейти к содержимому
Забрать бесплатно
Модификации выключены. Так эта страница выглядит на обычной Тильде.

Как задать разную стоимость доставки по городу

12 августа 2026 3 МИН КОМАНДА MODKOD

Задача «центр — 300 рублей, окраина — 600, за город не доставляем» не обязана начинаться с карты. Для небольшого проекта надёжнее дать покупателю явный список районов, показать цену и передать её родному механизму доставки корзины. Карта нужна, когда зону определяют по координатам введённого адреса; это уже внешний геокодер, ключ API, ошибки адресов и серверная интеграция, а не короткий T123.

✓ ПРОВЕРЕНО 12 августа 2026 родной radio доставки передаёт название и data-delivery-price в window.tcart.delivery, после чего корзина добавляет цену к итогу; сервисы могут перерисовать обёртку, а формы фильтруют пользовательские поля tildadelivery-* — tcart__processDelivery и tcart__updateDelivery в tilda-cart-1.1.min.js; TILDA-DELIVERY-REFERENCE.md и TILDA-FORMS-REFERENCE.md

Короткий ответ

Для нескольких понятных районов сделайте список выбора и заранее покажите цену. После выбора стоимость должна записаться в родную доставку Тильды. Если зона определяется по реальному адресу на карте, нужен внешний геокодер и отдельная интеграция.

Выберите один из трёх уровней

1. Фиксированная доставка для всего города

Это обычный способ доставки в настройках корзины. Модификация не нужна.

2. Таблица районов

Подходит для правил вида:

ЗонаЦенаБесплатно от
Центр300 ₽3 000 ₽
Север500 ₽5 000 ₽
За городомнет доставки—

Покупатель сам выбирает понятное название. Менеджер сверяет адрес после заявки.

3. Зоны на карте

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

Почему нельзя править итоговую сумму напрямую

Корзина меняет итог после количества, промокода, динамической скидки и доставки. Если скрипт один раз прибавит 500 рублей к тексту на экране, следующий пересчёт сотрёт изменение. Даже если цифра останется видимой, в заявку может уйти другая.

Родной путь устроен иначе. Выбранный radio доставки хранит название и data-delivery-price. tcart__processDelivery переносит их в window.tcart.delivery, а функции корзины добавляют цену и перерисовывают итог.

Хорошая модификация присоединяется к этому контракту и не создаёт собственную «финальную сумму» рядом.

Что должно попасть в заказ

Недостаточно изменить одну строку «Доставка: 500 ₽». Клиенту нужны:

  • выбранное название зоны;
  • стоимость доставки;
  • введённый адрес;
  • признак бесплатного порога;
  • понятное сообщение, если зона недоступна.

Собственные скрытые поля не следует называть с префиксом tildadelivery-: сериализатор форм Тильды фильтрует такие имена. Этот префикс принадлежит родным служебным полям, а не пользовательским данным для webhook.

Почему перерисовка важна

Службы доставки могут заново собрать свою обёртку после открытия корзины, изменения товара или ответа API. Если пользовательский radio был добавлен один раз при загрузке страницы, он исчезнет.

При этом нельзя бесконечно вызывать tcart__rerenderDeliveryServices: получится цикл «перерисовали → добавили → снова перерисовали». Мод должен наблюдать родную перерисовку и восстанавливать только свой вариант без дублей.

MOD-176 собран для узкого сценария с явным списком районов. Он делегирует события общей обёртке, поэтому переживает замену полей корзиной, но не обещает определить район по произвольному почтовому адресу.

Проверка перед сдачей

Пройдите все изменения, которые могут пересчитать заказ:

  1. Выберите каждую зону.
  2. Перейдите через порог бесплатной доставки в обе стороны.
  3. Измените количество товара.
  4. Примените и удалите промокод.
  5. Переключитесь на штатный самовывоз или службу доставки.
  6. Закройте и заново откройте корзину.
  7. Отправьте тест и сравните экран, CRM и письмо.

Клиенту передайте таблицу зон отдельным документом: кто меняет цены, кто проверяет адрес и что делать с заказом вне списка. Тогда доставка остаётся правилом бизнеса, а не спрятанным числом в коде.

Вопросы по этой статье 4

Только через геокодер или службу доставки, которая превращает адрес в координаты и проверяет их по зоне. Сравнение текста адреса ненадёжно.