Что было до нас
Сайт стоял на Tilda. Забрать его на свой хостинг было нельзя: площадка остаётся у конструктора, абонплата идёт вечно.
Карточка товара работала витриной. У всех 16 позиций стояла одна цена-заглушка 50 ₽ и кнопка в форму. Настоящую цену человек на сайте не узнавал вообще: любой вопрос «сколько стоит» уходил в переписку и на менеджера.
Прайс жил отдельным файлом: 39 позиций, у товара один размер и одна цена. В жизни цена зависит от породы, сорта и типоразмера, и эта разница до сайта не доходила.
Поверх этого за годы накопились мелкие несостыковки:
- карта России с 17 закрашенными регионами при восьми реальных городах отгрузки
- стоковые портреты в блоке отзывов
- пин производства на Яндекс.Карте в 1,5 км от цеха, в лесу по соседству
Перенесли на свой код
Собрали сайт заново на Astro. На выходе обычные HTML-файлы: 33 страницы, которые кладутся на любой хостинг. Ни сервера, ни базы, ни абонплаты за конструктор.
Данные вынесли в отдельные файлы-справочники: цены, товары, цвета, контакты. Телефон правится в одном месте и меняется сразу в шапке, подвале, карточках и форме заявки.
Попутно закрыли список несостыковок: карту отгрузок пересобрали по официальным границам (залита Москва с областью, остальное точки восьми реальных городов), портреты в отзывах заменили живым рейтингом с Яндекс.Карт, координаты цеха взяли из карточки организации.
Весь JavaScript сайта весит 20 КБ. Работа заняла с 6 по 24 августа 2026 года и 79 коммитов.
Сайт стоит под noindex, домен не подключён, формы отправляют заявку в демо-режим, счётчика нет. Значит, нет ни трафика, ни заявок, ни позиций в поиске. Приводить по этому проекту конверсию или рост в выдаче было бы враньём.
Прайс переехал внутрь карточки
18 августа клиент прислал обновлённый прайс: 105 позиций против 39 в первой версии. Мы разобрали его и разложили по каталогу как 112 сочетаний породы, сорта и размера. У каждого своя цена и своя площадь одной доски.
В каталоге 16 товаров, 3 породы (хвоя, лиственница, ангарская сосна), 3 сорта (АВ, Прима, Экстра) и 62 уникальных типоразмера.
Выбор идёт сверху вниз: порода, потом сорт, потом размер. После клика по породе скрипт пересобирает списки и прячет то, чего в прайсе нет. Если у породы один сорт, блок «Сорт» не показывается вовсе. Собрать сочетание, которого не существует, нельзя.
Цену за квадратный метр считаем сами из размера и цены за штуку. В исходном прайсе по этой колонке были расхождения, собственный расчёт закрывает вопрос: на сайт попадает только то, что сходится.
Позиции с плавающей длиной 2-4 м обработали отдельно: цены за штуку у них не существует. Переключатель «шт / м²» там прячется, поле называется «Сколько нужно, м²». Ещё два товара стоят с пометкой «Цена по запросу»: их в прайсе нет.
Калькулятор покраски
Второй калькулятор считает саму покраску. Три пакета: 700, 950 и 1100 ₽ за м². Шесть пород и шесть типов профиля со своими коэффициентами. Ввод по площади или по размерам доски, скидка за объём 5, 10 и 15 % подставляется сама.
Рядом палитра из 14 оттенков RAL и NCS с превью прямо на фото реальной доски.
Коэффициенты по породам и профилям пока предварительные, клиент их подтверждает. Калькулятор так и подписан: расчёт предварительный, точную сумму называет менеджер.
Где было тяжело
Самое дорогое случилось в разборе прайса. В названиях позиций сорт встречался дважды: «Вагонка штиль сорт АБ 14х110х6000мм. Листинница сорт Прима». Первое упоминание оказалось остатком шаблона от хвои, настоящий сорт стоял в конце строки. Мы брали первое. Восемь позиций получили чужой сорт и схлопнулись при дедупликации: у ангарской сосны пропала Экстра, у лиственничной вагонки Прима и Экстра.
Нашли только 19 августа, когда клиент заговорил про длину вагонки. Правило записали в инструкцию проекта: берём последнее упоминание сорта. Рядом лежала мелочь того же рода: один сорт был написан тремя способами, АБ, АВ и AB латиницей.
Через день после ввода режима «только м²» выяснилось, что корзина у таких позиций теряет цену: считала она по площади одной доски, а площади там нет. Добавили отдельное поле с заказанным метражом.
Три захода ушло на HTML-атрибут hidden: он слабее нашего display: grid, спрятанные элементы оставались видимыми. Ловили это в калькуляторе, в галерее работ и в корзине. Поставили одно правило на весь сайт.
Отдельная история: расхождения в исходных данных, которые нельзя чинить самовольно. Одна и та же услуга встречалась у клиента с двумя ценами. Мы перенесли оба значения как есть и отправили вопрос ему.
Что готово к запуску
Сайт собран и принят по вёрстке. Сейчас он лежит на нашем поддомене под noindex и ждёт подключения домена.
Обвязку под поиск и под ответы нейросетей сделали заранее, она включается вместе с доменом:
Дальше слово за клиентом: домен, приёмник заявок, реальные остатки склада и подтверждение коэффициентов.
- разметка JSON-LD: LocalBusiness, WebSite, Product, ItemList, FAQPage, Service
- sitemap и поиск по сайту собираются автоматически при сборке
- llms.txt и robots.txt с поимённым разрешением 13 AI-краулеров
- 6 вопросов FAQ на главной под ответы нейросетей
Частые вопросы
Можно ли перенести сайт с Tilda на свой хостинг?
Забрать площадку у конструктора нельзя, сайт собирается заново. У BKWOOD на выходе получились обычные HTML-файлы: 33 страницы, которые кладутся на любой хостинг. Ни сервера, ни базы, ни абонплаты за конструктор. Работа заняла с 6 по 24 августа 2026 года и 79 коммитов.
Как показать цены на сайте, если прайс лежит отдельным файлом?
Прайс разбирается и раскладывается по карточкам товара. У BKWOOD из 105 позиций собрали 112 сочетаний породы, сорта и размера: у каждого своя цена и своя площадь одной доски. До этого в карточке у всех 16 позиций стояла одна цена-заглушка 50 ₽, и вопрос «сколько стоит» уходил на менеджера.
Как сделать в карточке выбор размера и сорта, чтобы цена менялась?
Выбор идёт сверху вниз: порода, потом сорт, потом размер. После клика по породе скрипт пересобирает списки и прячет то, чего в прайсе нет. Если у породы один сорт, блок «Сорт» не показывается вовсе. В каталоге 3 породы, 3 сорта и 62 типоразмера, собрать несуществующее сочетание нельзя.
Можно ли поставить на сайт калькулятор расчёта стоимости?
Да. У BKWOOD калькулятор покраски считает по трём пакетам: 700, 950 и 1100 ₽ за м². В расчёт заложены шесть пород и шесть типов профиля со своими коэффициентами, скидка за объём 5, 10 и 15 % подставляется сама. Рядом палитра из 14 оттенков RAL и NCS с превью на фото реальной доски.
Будет ли статический сайт виден поиску и нейросетям?
Обвязку сделали заранее, она включается вместе с доменом. Разметка JSON-LD: LocalBusiness, WebSite, Product, ItemList, FAQPage, Service. Sitemap и поиск по сайту собираются автоматически при сборке, в robots.txt поимённо разрешены 13 AI-краулеров, есть llms.txt и 6 вопросов FAQ на главной. Весь JavaScript сайта весит 20 КБ.
