Связь
NnovTara@yandex.ru

Деревянные ящики на заказ для оборудования и промышленных грузов

Изготавливаем плотные, решётчатые и усиленные конструкции из доски под размеры, массу и особенности конкретного груза. Прорабатываем основание, каркас, усиления, способ загрузки и внутреннюю фиксацию.

По фотографии, техническому заданию, образцу или чертежу. Один ящик, опытный образец или производственная партия.
ПОЛУЧИТЬ ПРЕДВАРИТЕЛЬНЫЙ РАСЧЁТ
Конструкция зависит не только от размеров. Для одного груза достаточно обычного дощатого корпуса, для другого основную работу выполняют основание, стойки и усиления.
Габариты определяют размер конструкции. Но её устройство определяют масса, точки опоры, центр тяжести, способ фиксации и дальнейшее перемещение груза.
ПОДОБРАТЬ КОНСТРУКЦИЮ
Пришлите фото изделия, размеры и массу.
Определим, какое основание, каркас и способ фиксации нужны под вашу задачу.
При одинаковом внешнем размере два груза могут создавать совершенно разные нагрузки на основание и каркас.
Поэтому для расчёта важны не только длина, ширина и высота.
Работа деревянного ящика начинается с основания
Через основание масса изделия передаётся на конструкцию ящика и погрузочную технику. Поэтому его устройство определяется отдельно от стенок.
01
Полозья
Формируют транспортную базу и позволяют работать погрузочной технике.
02
Поперечные связи
Связывают основание и распределяют нагрузку.
03
Опорные зоны
Формируются там, где изделие реально передаёт массу на конструкцию.
04
Места фиксации
Если груз закрепляется к основанию, эта возможность предусматривается заранее.
Нужно отдельное транспортное основание под оборудование?
Поддоны и основания
Стойки, пояса и раскосы формируют пространственную жёсткость ящика и передают нагрузки между его элементами.
Во время перевозки изделие не должно свободно перемещаться внутри конструкции. Способ фиксации выбирается под геометрию и допустимые точки контакта.
Есть вопрос по фиксации оборудования?
​
ОБСУДИТЬ ФИКСАЦИЮ
ГРУЗА В МАКС
Промышленная продукция

Что перевозят в деревянных ящиках

Внутреннее пространство адаптируется под форму, количество и особенности груза.
Наведите, чтобы рассмотреть:
Не нашли свой тип груза? Конструкция разрабатывается под конкретное изделие.
ПОКАЗАТЬ СВОЙ ГРУЗ

От единичного ящика до повторяемой серии

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

Разовая задача
Для отдельных изделий, нестандартных грузов, образцов и разовых поставок.
Для отдельных изделий, нестандартных грузов, образцов и разовых поставок.
Повторяющиеся поставки
Для продукции, которая регулярно отгружается в одинаковой или близкой конфигурации.
После согласования конструкции её можно воспроизводить в следующих заказах без повторной проработки с нуля.
После согласования конструкции её можно воспроизводить в следующих заказах без повторной проработки с нуля.
Серийные заказы особенно удобны, если вы регулярно отправляете одинаковые изделия, комплектующие или узлы.
РАССЧИТАТЬ ОДИН ЯЩИК
ОБСУДИТЬ СЕРИЙНЫЙ ВЫПУСК
Если конструкция ящика уже разработана, можем изготовить её по предоставленному чертежу, эскизу, спецификации или техническому заданию. 
Три сценария:
ЧТО НУЖНО ДЛЯ РАСЧЁТА:
Для предварительного расчёта не обязательно иметь готовый чертёж или техническое задание. Достаточно передать основные данные о грузе. Если какой-то информации нет, руководитель проектного отдела уточнит её в процессе обсуждения.
01
Что требуется упаковать
Название и назначение груза: оборудование, инструмент, комплектующие, техника, мебель, промышленное изделие или другая продукция.
02
Размеры и масса
Длина, ширина и высота груза. Масса одного изделия или общий вес партии.
03
Количество тары
Одно изделие, опытный образец, партия или регулярная потребность в одинаковой таре.
04
Фотография или документация
Фотографии груза, чертёж, эскиз, техническое задание или пример необходимой конструкции.
05
Перевозка и погрузка
Способ перевозки и погрузки, условия хранения, необходимость штабелирования, внутренней фиксации или повторного использования тары.
ОТПРАВИТЬ ПАРАМЕТРЫ ГРУЗА
НЕТ ПОЛНОГО ТЕХНИЧЕСКОГО ЗАДАНИЯ?
Пришлите фотографию груза, примерные размеры, массу и количество. Руководитель проектного отдела - Дмитрий свяжется с вами, уточнит недостающие данные и определит, что потребуется для расчёта и разработки конструкции.

От чего зависит стоимость деревянных ящиков?

1. Масса груза


Чем выше нагрузка — тем мощнее основание и каркас.

2. Габариты и форма

Выступающие элементы и нестандартная геометрия требуют индивидуальной конструкции.

3. Фиксация


Упоры, распорки, ложементы и дополнительные элементы увеличивают объём работ.

4. Количество


Для серии конструкцию можно унифицировать и сделать выгоднее.
1. Что нужно прислать, чтобы вы рассчитали деревянный ящик?

Для первичного расчёта нужны габариты груза, масса, количество и фотографии изделия. Если есть чертёж, ТЗ, схема точек опоры или требования к погрузке — приложите их сразу. Для тяжёлых и нестандартных грузов дополнительно уточняем положение центра тяжести, допустимые места крепления и способ перемещения.

2. Можно ли рассчитать ящик только по длине, ширине и высоте груза?

Только ориентировочно. Одинаковые по размеру грузы могут требовать совершенно разной конструкции, если один весит 80 кг, а другой 800 кг или имеет высокий центр тяжести. Размер определяет габарит ящика, а основание, каркас и усиления определяются уже по нагрузке и условиям перевозки.

3. Как определяется, каким должно быть основание деревянного ящика?

Основание проектируется под массу груза, реальные точки опоры и способ погрузки. Учитывается расположение полозьев, поперечных связей, мест установки изделия и возможного захода вил погрузчика. Если груз передаёт большую нагрузку через несколько небольших опор, эти зоны усиливаются отдельно.

4. Обязательно ли крепить оборудование к основанию болтами?

Нет. Болтовое крепление применяется только тогда, когда конструкция самого оборудования допускает использование соответствующих монтажных отверстий или опор. В других случаях груз удерживают деревянными упорами, распорками, ложементами и другими элементами, которые не повреждают изделие.

5. Как сделать так, чтобы оборудование не двигалось внутри ящика при перевозке?

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

6. Можно ли сделать ящик так, чтобы грузить его погрузчиком с нужной стороны?

Да. Направление вилочного захвата лучше определить до изготовления основания. В зависимости от задачи конструкция может предусматривать доступ вил с определённых сторон, но возможность конкретного исполнения зависит от размеров, массы груза и устройства основания.

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

В таких случаях ящик обычно собирается последовательно вокруг груза. Сначала устанавливается основание, затем размещается и фиксируется оборудование, после чего монтируются стойки, стенки, усиления и крышка. Это нормальная технология для оборудования и узлов, которые неудобно загружать в полностью собранный корпус.

8. Можете изготовить деревянный ящик по нашему чертежу или техническому заданию?

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

9. Можно сначала сделать один ящик, а потом повторять его серийно?

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

10. Защитит ли деревянный ящик оборудование от дождя, влаги и длительного хранения на улице?

Обычный деревянный ящик обеспечивает прежде всего механическую защиту, но сам по себе не является герметичной влагозащитной упаковкой. Кратковременное воздействие осадков он может перенести, однако для длительного хранения на открытом воздухе этого недостаточно: влага может проникать через стыки, а внутри при перепадах температуры возможен конденсат.

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

Не обязательно заранее определять тип тары или готовить техническое задание на упаковку.
 Пришлите размеры, массу, количество, фотографию или чертёж изделия. Разберём исходные данные, уточним недостающее и предложим подход к конструкции.
ОТПРАВИТЬ ДАННЫЕ О ГРУЗЕ
Обсудим конструкцию в МАКС
Связь
Производство транспортной тары в Нижнем Новгороде
Производство транспортной тары в Нижнем Новгороде
Изготавливаем фанерные и деревянные ящики, обрешётку, транспортные
основания и специальную тару под оборудование и нестандартные грузы. Работаем с единичными изделиями, опытными образцами и
производственными партиями.
Производственная база:
Производственная база:
NnovTara развивается на базе действующей производственной инфраструктуры ComfortSteps. Опыт изготовления сложных индивидуальных конструкций, собственное оборудование и производственные площади используются в производстве транспортной тары.
​
Перейти на ComfortSteps
ПРОДУКЦИЯ
Фанерные ящики >
Деревянные ящики >
Ящики из OSB >
Поддоны и основания >
Обрешётка груза >
Сборно-разборный фанерный ящик >
Упаковка продукции
 на месте >
ИНФОРМАЦИЯ
О производстве >
Как заказать >
FAQ >
КОНТАКТЫ
Телефон:
+7 904 784 09 09
E-mail для технической документации:
E-mail для технической документации:
 NnovTara@yandex.ru
Производство:
Нижегородская область, Восточное шоссе.
Реквизиты:
Реквизиты:
ИП РЯЗАНЦЕВ ДМИТРИЙ АРТУРОВИЧ
ИП РЯЗАНЦЕВ ДМИТРИЙ АРТУРОВИЧ
Информация, представленная на сайте,
носит справочный характер и не
является публичной офертой.
Окончательная конструкция, комплектация, стоимость, сроки изготовления и условия
поставки определяются после получения исходных данных и фиксируются при согласовании заказа через спецификацию и официальный договор.
© 2026 NnovTara. Все права защищены.
Ведём обработку персональных данных.
ИНН:
ИНН:
525716410437
525716410437
ОГРНИП:
ОГРНИП:
325527500134601
325527500134601
Материалы сайта, включая тексты, изображения, фотографии, графические материалы, чертежи и элементы оформления, являются объектами интеллектуальной собственности и охраняются законодательством Российской Федерации.

Копирование, публикация и коммерческое использование материалов сайта без разрешения правообладателя не допускаются.
from pathlib import Path import re src = Path("/mnt/data/Вставленный текст(8).txt") text = src.read_text(encoding="utf-8") # --- Global identity / product replacements --- replacements = { "NNOVTARA · OSB / ОСП CRATES PAGE · COMPLETE BODY": "NNOVTARA · WOODEN CRATES PAGE · COMPLETE BODY", "https://nnovtara.ru/yashiki-osb": "https://nnovtara.ru/derevyannye-yashiki", "OSB / ОСП CRATES ENGINEERING FUNNEL": "WOODEN CRATES ENGINEERING FUNNEL", "NNOVTARA · OSB / ОСП CRATES ANALYTICS ENGINE": "NNOVTARA · WOODEN CRATES ANALYTICS ENGINE", "__NNOVTARA_OSB_BODY_V1__": "__NNOVTARA_WOOD_BODY_V1__", "['[NnovTara OSB]']": "['[NnovTara WOOD]']", "'osb_crates'": "'wood_crates'", "'Ящики из OSB (ОСП)'": "'Деревянные ящики'", "'OSB_CONTENT_VIEW'": "'WOOD_CONTENT_VIEW'", "'OSB_SECTION_ENGAGED'": "'WOOD_SECTION_ENGAGED'", "'OSB_IMAGE_CLICK'": "'WOOD_IMAGE_CLICK'", "'OSB_SCROLL_'": "'WOOD_SCROLL_'", "'OSB_ENGAGED_'": "'WOOD_ENGAGED_'", "'OSB_READY'": "'WOOD_READY'", "'OSB_CONFIG_COMPLETE'": "'WOOD_CONFIG_COMPLETE'", } for a, b in replacements.items(): text = text.replace(a, b) # --- Replace CONTENT MAP entirely --- content_map = r""" var CONTENT_POINTS = [ { key: 'hero', kind: 'section', name: 'Деревянные ящики на заказ для оборудования и промышленных грузов', match: /деревянные ящики на заказ.*оборудован.*промышленн.*груз/i }, { key: 'task_variants', kind: 'section', name: 'Деревянный ящик может решать разные задачи', match: /деревянный ящик может решать разные задачи/i }, { key: 'solid_board_crate', kind: 'variant', name: 'Плотный дощатый ящик', match: /^плотный дощатый ящик$/i }, { key: 'lattice_wood_crate', kind: 'variant', name: 'Решётчатый деревянный ящик', match: /^реш[её]тчатый деревянный ящик$/i }, { key: 'reinforced_wood_crate', kind: 'variant', name: 'Усиленный деревянный ящик', match: /^усиленный деревянный ящик$/i }, { key: 'drawing_spec_crate', kind: 'variant', name: 'Ящик по чертежу или ТЗ', match: /^ящик по чертежу или тз$/i }, { key: 'cargo_first', kind: 'section', name: 'Деревянный ящик начинается не со стенок. Он начинается с груза.', match: /деревянный ящик начинается не со стенок.*начинается с груза/i }, { key: 'cargo', kind: 'engineering', name: 'ГРУЗ', match: /^груз$/i }, { key: 'supports', kind: 'engineering', name: 'ОПОРЫ', match: /^опоры$/i }, { key: 'base', kind: 'engineering', name: 'ОСНОВАНИЕ', match: /^основание$/i }, { key: 'fixation', kind: 'engineering', name: 'ФИКСАЦИЯ', match: /^фиксация$/i }, { key: 'frame', kind: 'engineering', name: 'КАРКАС', match: /^каркас$/i }, { key: 'shell', kind: 'engineering', name: 'ОБОЛОЧКА', match: /^оболочка$/i }, { key: 'same_dimensions', kind: 'section', name: 'Одинаковые габариты ещё не означают одинаковый ящик', match: /одинаковые габариты.*не означают одинаковый ящик/i }, { key: 'heavy_compact', kind: 'load_case', name: 'Тяжёлый компактный груз', match: /^тяж[её]лый компактный груз$/i }, { key: 'high_cargo', kind: 'load_case', name: 'Высокий груз', match: /^высокий груз$/i }, { key: 'long_cargo', kind: 'load_case', name: 'Удлинённый груз', match: /^удлин[её]нный груз$/i }, { key: 'complex_shape', kind: 'load_case', name: 'Груз сложной формы', match: /^груз сложной формы$/i }, { key: 'base_section', kind: 'section', name: 'Работа деревянного ящика начинается с основания', match: /работа деревянного ящика начинается с основания/i }, { key: 'skids', kind: 'base_element', name: 'Полозья', match: /^полозья$/i }, { key: 'cross_members', kind: 'base_element', name: 'Поперечные связи', match: /^поперечные связи$/i }, { key: 'support_zones', kind: 'base_element', name: 'Опорные зоны', match: /^опорные зоны$/i }, { key: 'fixation_points', kind: 'base_element', name: 'Места фиксации', match: /^места фиксации$/i }, { key: 'frame_section', kind: 'section', name: 'Каркас работает там, где одной обшивки недостаточно', match: /каркас работает там.*одной обшивки недостаточно/i }, { key: 'vertical_posts', kind: 'frame_element', name: 'Вертикальные стойки', match: /^вертикальные стойки$/i }, { key: 'horizontal_members', kind: 'frame_element', name: 'Горизонтальные связи', match: /^горизонтальные связи$/i }, { key: 'braces', kind: 'frame_element', name: 'Раскосы', match: /^раскосы$/i }, { key: 'local_reinforcement', kind: 'frame_element', name: 'Локальные усиления', match: /^локальные усиления$/i }, { key: 'fixation_section', kind: 'section', name: 'Даже прочный ящик не исправит плохо закреплённый груз', match: /даже прочный ящик не исправит.*плохо закрепл[её]нный груз/i }, { key: 'wood_stops', kind: 'fixation', name: 'Деревянные упоры', match: /^деревянные упоры$/i }, { key: 'spacers', kind: 'fixation', name: 'Распорки', match: /^распорки$/i }, { key: 'bolt_mount', kind: 'fixation', name: 'Болтовое крепление', match: /^болтовое крепление$/i }, { key: 'supports_pads', kind: 'fixation', name: 'Ложементы и прокладки', match: /^ложементы и прокладки$/i }, { key: 'when_wood', kind: 'section', name: 'Когда особенно нужен деревянный ящик', match: /когда особенно нужен деревянный ящик/i }, { key: 'new_equipment', kind: 'use_case', name: 'Отгрузка нового оборудования', match: /^отгрузка нового оборудования$/i }, { key: 'repair_shipping', kind: 'use_case', name: 'Отправка агрегата в ремонт', match: /^отправка агрегата в ремонт$/i }, { key: 'used_equipment', kind: 'use_case', name: 'Перевозка Б/У оборудования', match: /^перевозка б\/у оборудования$/i }, { key: 'prototype', kind: 'use_case', name: 'Изготавливается опытное изделие', match: /^изготавливается опытное изделие$/i }, { key: 'cargo_types', kind: 'section', name: 'Что перевозят в деревянных ящиках', match: /что перевозят в деревянных ящиках/i }, { key: 'special_products', kind: 'cargo_type', name: 'Специзделия и ответственные комплекты', match: /^специзделия и ответственные комплекты$/i }, { key: 'motors_gearboxes', kind: 'cargo_type', name: 'Электродвигатели и редукторы', match: /^электродвигатели и редукторы$/i }, { key: 'pumps_units', kind: 'cargo_type', name: 'Насосы и агрегаты', match: /^насосы и агрегаты$/i }, { key: 'molds_tooling', kind: 'cargo_type', name: 'Пресс-формы и оснастка', match: /^пресс-формы и оснастка$/i }, { key: 'electrical', kind: 'cargo_type', name: 'Электротехническое оборудование', match: /^электротехническое оборудование$/i }, { key: 'custom_products', kind: 'cargo_type', name: 'Нестандартные изделия', match: /^нестандартные изделия$/i }, { key: 'series', kind: 'section', name: 'От единичного ящика до повторяемой серии', match: /от единичного ящика до повторяемой серии/i }, { key: 'one_crate', kind: 'series', name: '1 штука', match: /^1 штука$/i }, { key: 'one_off', kind: 'series', name: 'Разовая задача', match: /^разовая задача$/i }, { key: 'repeat_supply', kind: 'series', name: 'Повторяющиеся поставки', match: /^повторяющиеся поставки$/i }, { key: 'documentation', kind: 'section', name: 'Есть готовая документация — работаем по ней', match: /есть готовая документация.*работаем по ней/i }, { key: 'crate_drawing', kind: 'documentation', name: 'Есть чертёж ящика', match: /^есть черт[её]ж ящика$/i }, { key: 'cargo_drawing', kind: 'documentation', name: 'Есть чертёж груза', match: /^есть черт[её]ж груза$/i }, { key: 'photo_dimensions', kind: 'documentation', name: 'Есть только фото и размеры', match: /^есть только фото и размеры$/i }, { key: 'calculation', kind: 'section', name: 'Что нужно для расчёта', match: /что нужно для расч[её]та/i }, { key: 'calc_cargo', kind: 'calculation', name: 'Что требуется упаковать', match: /^что требуется упаковать$/i }, { key: 'calc_dimensions_mass', kind: 'calculation', name: 'Размеры и масса', match: /^размеры и масса$/i }, { key: 'calc_quantity', kind: 'calculation', name: 'Количество тары', match: /^количество тары$/i }, { key: 'calc_docs', kind: 'calculation', name: 'Фотография или документация', match: /^фотография или документация$/i }, { key: 'calc_transport', kind: 'calculation', name: 'Перевозка и погрузка', match: /^перевозка и погрузка$/i }, { key: 'faq', kind: 'section', name: 'Частые вопросы', match: /^частые вопросы$/i }, { key: 'faq_calc', kind: 'faq_question', name: 'Что нужно прислать, чтобы вы рассчитали деревянный ящик?', match: /что нужно прислать.*рассчитали деревянный ящик/i }, { key: 'faq_dimensions', kind: 'faq_question', name: 'Можно ли рассчитать ящик только по длине, ширине и высоте груза?', match: /можно ли рассчитать ящик только по длине.*ширине.*высоте/i }, { key: 'faq_base', kind: 'faq_question', name: 'Как определяется, каким должно быть основание деревянного ящика?', match: /как определяется.*основание деревянного ящика/i }, { key: 'faq_bolts', kind: 'faq_question', name: 'Обязательно ли крепить оборудование к основанию болтами?', match: /обязательно ли крепить оборудование.*болт/i }, { key: 'faq_fixation', kind: 'faq_question', name: 'Как сделать так, чтобы оборудование не двигалось внутри ящика при перевозке?', match: /как сделать так.*оборудование не двигалось внутри ящика/i }, { key: 'faq_forklift', kind: 'faq_question', name: 'Можно ли сделать ящик так, чтобы грузить его погрузчиком с нужной стороны?', match: /можно ли сделать ящик.*погрузчиком.*нужной стороны/i }, { key: 'faq_heavy_loading', kind: 'faq_question', name: 'Как упаковывается тяжёлое оборудование, которое невозможно просто опустить в готовый ящик?', match: /как упаковывается тяж[её]лое оборудование.*готовый ящик/i }, { key: 'faq_drawing', kind: 'faq_question', name: 'Можете изготовить деревянный ящик по нашему чертежу или техническому заданию?', match: /можете изготовить деревянный ящик.*чертеж.*техническ/i }, { key: 'faq_series', kind: 'faq_question', name: 'Можно сначала сделать один ящик, а потом повторять его серийно?', match: /можно сначала сделать один ящик.*серийно/i }, { key: 'faq_moisture', kind: 'faq_question', name: 'Защитит ли деревянный ящик оборудование от дождя, влаги и длительного хранения на улице?', match: /защитит ли деревянный ящик.*дожд.*влаг.*улиц/i }, { key: 'final_cta', kind: 'section', name: 'Есть груз? С него и начнём.', match: /есть груз.*с него и начн[её]м/i } ];""" text = re.sub( r" var CONTENT_POINTS = \[\n.*?\n \];\n\n\n\n /\* =====================================================\n DEBUG", content_map + "\n\n\n\n /* =====================================================\n DEBUG", text, count=1, flags=re.S ) # --- Rewrite the specific CTA classifier block --- start = text.index(" /* -------------------------------------------------\n SPECIFIC CTA FIRST") end = text.index(" /* -------------------------------------------------\n CONTACTS", start) cta_block = r""" /* ------------------------------------------------- SPECIFIC CTA FIRST ------------------------------------------------- */ if ( lower.indexOf( 'получить предварительный расч' ) !== -1 ) { return { event: 'CTA_PRELIMINARY_CALC', conversion: true }; } if ( lower.indexOf( 'подобрать конструкцию' ) !== -1 ) { return { event: 'CTA_SELECT_CONSTRUCTION', conversion: true }; } if ( lower.indexOf( 'обсудить фиксацию' ) !== -1 ) { return { event: 'CTA_FIXATION', conversion: true, channel: 'max' }; } if ( lower.indexOf( 'показать свой груз' ) !== -1 ) { return { event: 'CTA_SHOW_CARGO', conversion: true }; } if ( lower.indexOf( 'рассчитать один ящик' ) !== -1 ) { return { event: 'CTA_ONE_CRATE', conversion: true }; } if ( lower.indexOf( 'обсудить серийный выпуск' ) !== -1 ) { return { event: 'CTA_SERIES', conversion: true }; } if ( lower.indexOf( 'отправить параметры груза' ) !== -1 || lower.indexOf( 'отправить данные о грузе' ) !== -1 ) { return { event: 'CTA_CARGO', conversion: true }; } if ( lower.indexOf( 'обсудим конструкцию' ) !== -1 || lower.indexOf( 'обсудить конструкцию' ) !== -1 ) { return { event: 'CTA_DISCUSS_CONSTRUCTION', conversion: true, channel: 'max' }; } """ text = text[:start] + cta_block + text[end:] # --- Replace product navigation segment so current page isn't counted as a nav target --- # Existing FANER block is good. Replace wooden-page nav block with OSB nav. text = text.replace( """ if ( href.indexOf( '/derevyannye-yashiki' ) !== -1 ) { return { event: 'PRODUCT_NAV', product: 'Деревянные ящики', conversion: false }; }""", """ if ( href.indexOf( '/yashiki-osb' ) !== -1 ) { return { event: 'PRODUCT_NAV', product: 'Ящики из OSB (ОСП)', conversion: false }; }""" ) # Comment cleanup text = text.replace( " / NNOVTARA · OSB / ОСП CRATES PAGE · COMPLETE BODY", " / NNOVTARA · WOODEN CRATES PAGE · COMPLETE BODY" ) # Version/date for the new body text = re.sub(r"Версия:\s*\d{2}\.\d{2}\.\d{4}", "Версия: 13.09.2026", text, count=1) out = Path("/mnt/data/NnovTara_derevyannye-yashiki_BODY_13-09-2026.txt") out.write_text(text, encoding="utf-8") print(f"Готово: {out.name}") print(f"Строк: {len(text.splitlines())}") print(f"Размер: {out.stat().st_size/1024:.1f} KB")