module-no-smoking
Языки
- JavaScript51,3%
- PHP39,2%
- CSS9,5%
mibazarow.nosmoking
README написан LLM - я даже не читал. Все под вашу полную отвественность.
Стрим (запись): вайб-кодинг модуля для 1С-Битрикс
Модуль для 1C-Bitrix с компонентом , который показывает, сколько времени прошло с момента отказа от курения (дни, часы, минуты, секунды).
Возможности
- Отображение прошедшего времени в формате: дни, часы, минуты, секунды.
- Живое обновление таймера на клиенте каждую секунду (без перезагрузки страницы).
- Корректные склонения единиц времени на русском языке.
- Кастомный выбор даты и времени в параметрах компонента в визуальном редакторе Bitrix.
- Проверка валидности даты (пустая дата, некорректный формат, дата в будущем).
Состав модуля
- Модуль: mibazarow.nosmoking
- Компонент: mibazarow:nosmoking.counter
- Пространство имен PHP-классов: Mibazarow\Nosmoking
- Текущая версия:
(см.1.0.0)install/version.php
Требования
- 1C-Bitrix (ядро D7, т.к. используется
иBitrix\Main\Loader).Bitrix\Main\Type\DateTime - Установленный модуль
.mibazarow.nosmoking
Установка
- Поместите папку модуля в:
или/local/modules/mibazarow.nosmoking/- /bitrix/modules/mibazarow.nosmoking/
- В административной части Bitrix откройте установку модулей и установите
.mibazarow.nosmoking - При установке копируется компонент в:
- /local/components/mibazarow/nosmoking.counter/
Удаление
При удалении модуля:
- модуль снимается с регистрации;
- удаляется только папка компонента:
- /local/components/mibazarow/nosmoking.counter/
Папка вендора не удаляется, чтобы не затронуть другие компоненты.
Подключение компонента
Пример подключения в шаблоне/странице:
Параметры компонента
START_DATE
- Тип: CUSTOM
- Назначение: дата и время начала отсчета
- Форматы, которые корректно обрабатываются на сервере:
(типичный ввод в Bitrix)d.m.Y H:i:s- Y-m-d H:i:s
- Y-m-d
Если дата не задана или невалидна, компонент покажет сообщение об ошибке вместо таймера.
Что возвращает компонент
В шаблон передается с основными ключами:
- нормализованная дата стартаSTART_DATE- timestamp стартаSTART_TS,DAYS,HOURS,MINUTESSECONDS- TOTAL_SECONDS
- массив для отображения блоков с подписямиUNITS- флаг валидности исходной датыIS_VALID- текст ошибкиERROR
Публичные классы
Mibazarow\Nosmoking\Module
- возвращаетgetModuleId(): stringmibazarow.nosmoking- проверяет, подключается ли модуль через LoaderisInstalled(): bool
Mibazarow\Nosmoking\TimeHelper
- считает прошедшее времяcalculate(string $startDate): array- конвертирует дату в UNIX timestamptoTimestamp(string $startDate): int- готовит данные для выводаbuildDisplayUnits(int $days, int $hours, int $minutes, int $seconds): array- склонение числительныхpluralizeRu(int $n, string $one, string $few, string $many): string
Локализация
Сейчас предусмотрены русские языковые файлы:
- lang/ru/install/index.php
- install/components/mibazarow/nosmoking.counter/lang/ru/component.php
Быстрая проверка после установки
- Добавьте компонент на тестовую страницу.
- Укажите
в прошлом времени.START_DATE - Убедитесь, что:
- таймер отрисован;
- секунды меняются каждую секунду;
- подписи единиц времени склоняются корректно.
FAQ / частые ошибки
1) Ошибка: "Дата начала не задана"
Причина:
- параметр
пустой;START_DATE - значение не сохранилось в настройках компонента.
Что проверить:
- в параметрах компонента заполнено поле "Дата начала отсчёта";
- в коде при ручном подключении компонента передается непустой
.START_DATE
2) Ошибка: "Дата начала не может быть в будущем"
Причина:
- переданная дата больше текущего времени сервера;
- сервер и ожидаемая локальная зона пользователя отличаются.
Что делать:
- укажите дату/время в прошлом;
- проверьте системное время и timezone на сервере;
- проверьте timezone сайта в настройках Bitrix.
3) Ошибка: "Некорректный формат даты"
Причина:
- строка даты не распознана PHP
;DateTime - используется нестандартный формат.
Рекомендуемые форматы:
- d.m.Y H:i:s
- Y-m-d H:i:s
- Y-m-d
Примеры корректных значений:
- 01.02.2026 08:30:00
- 2026-02-01 08:30:00
- 2026-02-01
4) Время на клиенте отличается от ожидаемого
Симптом:
- после загрузки страницы значение отличается на несколько часов.
Почему так происходит:
- сервер рассчитывает стартовую дату и передает timestamp;
- браузер считает текущее время на стороне клиента;
- при расхождении часовых поясов/времени устройства может быть визуальный сдвиг.
Рекомендации:
- синхронизируйте timezone сервера, Bitrix и окружения разработки;
- убедитесь, что время на устройстве пользователя выставляется автоматически;
- для критичных сценариев фиксируйте единую бизнес-зону (например,
) на стороне сервера.Europe/Moscow
5) Нюанс с летним/зимним временем (DST)
Симптом:
- в дни перехода может казаться, что произошло смещение на 1 час.
Что учесть:
- используйте явные timezone-идентификаторы (
,Europe/Moscowи т.д.);UTC - избегайте неоднозначных локальных строк без часового пояса в интеграционных сценариях.
6) Как диагностировать проблему быстро
Минимальный чек-лист:
- Проверить фактический
в параметрах компонента.START_DATE - Сверить время сервера (
), PHP timezone и timezone сайта Bitrix.date - Проверить время и timezone в браузере/ОС клиента.
- Временно установить
в форматеSTART_DATEи проверить результат.Y-m-d H:i:s
Лицензия
ХЗ какая это лицензия. Делайте с кодом что хотите, в любом месте Вселенной