Расширение добавляет в DIAFAN.CMS универсальный способ доставки с
правилами расчёта стоимости — без написания кода. Администратор описывает логику на языке формул: фиксированная надбавка, процент от заказа, надбавка за вес или комбинации этих правил. Расширение не привязано к конкретной службе доставки — подходит для описания любой уникальной схемы расчёта.
Ключевая особенность — поддержка
меток. Администратор может разделить тарифы по зонам, срочности или типам клиентов, а покупатель на этапе оформления заказа сам выбирает нужную метку и видит актуальную стоимость.
Помощь и поддержка
Если у вас возникли вопросы по установке, настройке или использованию расширения — напишите мне. Я бесплатно помогу разобраться и отвечу на ваши вопросы. Если, на ваш взгляд, расширению не хватает какой-либо возможности, тоже сообщите — такие предложения помогают делать его лучше.
Личные сообщения: написать на сайте DIAFAN
Telegram: @weissfl
Яндекс.Чат: открыть чат
E-mail: dmitry.pr@gmail.com
Расширение решает задачу, когда стандартных механизмов доставки DIAFAN.CMS недостаточно.
Типичные сценарии:
Тариф зависит от веса: первые 500 г — 300 ₽, каждый следующий килограмм — ещё 150 ₽. Стоимость меняется в зависимости от суммы заказа: при заказе от 3000 ₽ доставка бесплатно. Разные цены для разных городов или зон: покупатель выбирает «Москва», «СПб» или «Регионы» — цена пересчитывается автоматически. Срочная доставка: при выборе метки «Срочно» к базовому тарифу добавляется 50%. Комбинированные схемы: базовая стоимость + надбавка за вес + региональный коэффициент.
Если логику доставки можно описать формулой — расширение сможет её рассчитать.
Как это работает
Администратор создаёт способ доставки с типом «Universal» и заполняет таблицу правил. Каждое правило состоит из условия и надбавки. Правила выполняются последовательно: каждое сработавшее правило добавляет свою надбавку к итоговой стоимости доставки.
Правила
Каждое правило содержит:
Метку — к какому варианту доставки применяется правило. Специальное значение «★ (все)» означает, что правило срабатывает всегда, независимо от выбранной метки. Условие — по какому параметру проверять: вес заказа (в граммах) или сумма заказа. Диапазон — от и до какого значения включительно действует правило. Можно указать только нижнюю или только верхнюю границу, а можно не указывать обе — тогда правило применяется всегда при выбранной метке. Тип надбавки — как считать:- «Фиксированная» — указанное число прибавляется к стоимости.
- «% от суммы» — указанный процент от суммы заказа прибавляется к стоимости.
- «% от стоимости» — указанный процент от уже накопленной стоимости доставки прибавляется к ней. Имеет смысл, только если правило идёт после тех, что уже назначили стоимость.
Значение (формула) — число или арифметическое выражение с переменными $W (вес заказа в граммах) и $S (сумма заказа). Доступны функции округления: round(), ceil(), floor(), abs(). Пример: 300 + floor(($W - 500) / 500) * 150
. Стоп — если правило сработало, дальнейшие правила игнорируются. Полезно для финальных правил: например, «Москва, заказ от 3000 ₽ → 0, стоп» — бесплатная доставка без учёта базовых тарифов.
Метки
Метки — это текстовые значения, которые администратор задаёт при настройке способа доставки (например: «Москва», «СПб», «Регионы»). Покупатель на этапе оформления заказа выбирает одну метку из предложенного списка. При выборе метки цена доставки пересчитывается автоматически. Если метки не заданы — блок выбора не показывается, все правила работают с меткой «★ (все)».
Пример: доставка с базовым тарифом и региональными надбавками
Допустим, администратор хочет настроить такую логику:
Первые 500 г заказа — 300 ₽. Каждые полные 500 г сверх — ещё 150 ₽. Для Москвы при заказе от 3000 ₽ — доставка бесплатна, дальнейшие правила не применяются. Для Санкт-Петербурга — фиксированная стоимость 500 ₽, дальнейшие правила не применяются. Для остальных регионов — дополнительно 25% к итоговой стоимости доставки.
Администратор создаёт метки «Москва,СПб,Регионы» и добавляет пять правил. Первое правило с меткой «★ (все)» работает для всех: вес от 0 до 500 г — фиксированная надбавка
300
Второе правило, тоже «★ (все)», вес от 500 г — формула
300 + floor(($W - 500) / 500) * 150
добавляет по 150 ₽ за каждые полные 500 г. Третье правило с меткой «Москва»: сумма от 3000 — фиксированная надбавка
0
и флажок «Стоп». Четвёртое правило с меткой «СПб»: вес от 0 — фиксированная надбавка
500
и флажок «Стоп». Пятое правило с меткой «Регионы»: сумма от 0 — тип «% от стоимости», значение
25
Когда покупатель выбирает «Москву» при заказе на 3500 ₽ — последовательно срабатывают первые два правила (300 ₽ + надбавка за вес), затем третье правило (Москва, 0, стоп). Итоговая стоимость доставки: базовая надбавка, которую нельзя отменить флагом «Стоп». Важно понимать: правила выполняются последовательно, и каждое
добавляет свою надбавку к уже накопленной. Флаг «Стоп» не отменяет предыдущие правила, а только предотвращает выполнение следующих.
Формулы
В поле «Значение» можно указать арифметическое выражение с переменными
$W (вес) и
$S (сумма заказа). Поддерживаются базовые арифметические операции и функции округления:
300 — фиксированная стоимость, 300 ₽
round($W / 500) * 100 — 100 ₽ за каждые 500 г веса (с округлением)
ceil($W / 1000) * 250 — 250 ₽ за каждый начатый кг
200 + floor(($W - 500) / 500) * 100 — 200 ₽ плюс 100 ₽ за каждые полные 500 г сверх первых 500 г
Все формулы проверяются при сохранении — администратор сразу видит ошибку, если выражение некорректно.
Порядок правил
Правила выполняются строго по порядку, который администратор настраивает стрелками «вверх/вниз». Каждое сработавшее правило
добавляет свою надбавку к уже накопленной стоимости. Флаг «Стоп» прерывает цепочку — дальнейшие правила не выполняются.
Другие задачи
Если вам нужна помощь с разработкой, сопровождением сайтов, настройкой серверов, автоматизацией или другими IT-задачами — напишите мне. Буду рад помочь с вашим проектом, ответить на вопросы и предложить подходящее решение.
Личные сообщения: написать на сайте DIAFAN
Telegram: @weissfl
Яндекс.Чат: открыть чат
E-mail: dmitry.pr@gmail.com
Создайте тему в интерфейсе «Темы и дизайн» и импортируйте туда скачанный архив. При создании отметьте опцию «Применить». ВНИМАНИЕ! Если на сайте уже существует активная тема дизайна и её нужно сохранить, импортировать архив нужно в уже примененную тему.