Решение (новая версия):Внедрили более структурированную и предсказуемую реализацию: стабилизировали ширину и вертикальное выравнивание через CSS, улучшили надёжность перехвата появления карточек и сделали логику контролов количества более прозрачной.
Что конкретно улучшено:
- Структурированный JS вместо «голых» таймеров: вместо слепого setInterval добавили MutationObserver для отслеживания появления новых карточек — это снижает лишнюю нагрузку и убирает мерцание. Таймер оставлен как «страховка» с редким интервалом (1.5 сек), а не как основной механизм.
- Нормализация ширины через CSS + JS‑страховка: ширина кнопок и полей количества задаётся через CSS, а JS‑функция normalizeButtonsInCard служит страховкой на случай, если CSS не применился вовремя (например, при динамической подгрузке).
- Стабильное вертикальное выравнивание: кнопки прижимаются к низу карточки через margin-top: auto у контейнера .sd005-btns-wrapper — это надёжно работает даже при разной высоте контента и не зависит от табличной верстки.
- Более аккуратное переопределение логики количества: функция overrideQuantityFunction явно оборачивает логику Tilda, сохраняя нативные механизмы и добавляя только кастомную разметку контролов.
- Модульность и читаемость: код разбит на понятные функции (markCards, normalizeButtonsInCard, initObserver и т. п.) с константами наверху — это упрощает поддержку и внесение правок в будущем.
В результате сетка каталога стала предсказуемой: кнопки всегда на одной линии, ширина одинаковая, контролы количества появляются корректно, а риск конфликтов с обновлениями Tilda снижен.