Корневая папка: /home/d/docdelux/tech-stc.ru/public_html/hub
Всего папок: 17
Всего файлов: 25
Общий размер: 150,353 байт
Создано: 2026-06-23 04:55:35
<?php /** * Универсальный шаблон для страниц хабов (только калькуляторы) * /hub/_templates/hub-template.php */ // Подавляем предупреждение IDE о необъявленной переменной /** @var array $config */ // Защита от отсутствия конфига if (!isset($config) || !is_array($config)) { $config = []; } $protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://'; $host = $_SERVER['HTTP_HOST']; $uri = $_SERVER['REQUEST_URI']; $canonicalUrl = $protocol . $host . $uri; $siteUrl = $protocol . $host; $pageTitle = $config['title'] ?? 'Хаб | ТЕХСТАНДАРТ'; $description = $config['description'] ?? ''; $h1 = $config['h1'] ?? 'Хаб'; $keywords = $config['keywords'] ?? ''; // ========== ГЕНЕРАЦИЯ HTML-КОНТЕНТА ========== ob_start(); ?> <div class="hub-container"> <!-- Вступление --> <?php if (!empty($config['intro_text'])): ?> <div class="hub-intro mb-5"> <p class="text-lead"><?= htmlspecialchars($config['intro_text']) ?></p> </div> <?php endif; ?> <!-- Блок: Калькуляторы --> <?php if (!empty($config['calculators'])): ?> <div class="categories-grid"> <?php foreach ($config['calculators'] as $calc): ?> <?php // Генерируем slug из последней части URL $slug = basename(rtrim($calc['url'], '/')); ?> <a href="<?= htmlspecialchars($calc['url']) ?>" class="categories-card"> <span class="categories-card-name"><?= htmlspecialchars($calc['title']) ?></span> <span class="categories-card-slug"><?= htmlspecialchars($slug) ?></span> </a> <?php endforeach; ?> </div> <?php else: ?> <div class="alert alert--info">Калькуляторы временно отсутствуют</div> <?php endif; ?> </div> <?php $htmlContent = ob_get_clean(); // ========== JSON-LD МИКРОРАЗМЕТКА ========== $jsonLd = []; // 1. WebPage $jsonLd[] = [ '@context' => 'https://schema.org', '@type' => 'WebPage', '@id' => $canonicalUrl, 'name' => $pageTitle, 'description' => $description, 'url' => $canonicalUrl, 'inLanguage' => 'ru-RU', 'dateModified' => date('Y-m-d'), 'isPartOf' => [ '@type' => 'WebSite', 'name' => 'Tech-stc.ru', 'url' => $siteUrl ], 'breadcrumb' => ['@id' => $canonicalUrl . '#breadcrumb'] ]; // 2. BreadcrumbList $jsonLd[] = [ '@context' => 'https://schema.org', '@type' => 'BreadcrumbList', '@id' => $canonicalUrl . '#breadcrumb', 'itemListElement' => [ ['@type' => 'ListItem', 'position' => 1, 'name' => 'Главная', 'item' => $siteUrl . '/'], ['@type' => 'ListItem', 'position' => 2, 'name' => $config['breadcrumb_name'] ?? $h1, 'item' => $canonicalUrl] ] ]; // 3. CollectionPage $jsonLd[] = [ '@context' => 'https://schema.org', '@type' => 'CollectionPage', 'name' => $h1, 'description' => $description, 'url' => $canonicalUrl ]; // 4. Organization $jsonLd[] = [ '@context' => 'https://schema.org', '@type' => 'Organization', '@id' => $siteUrl . '#organization', 'name' => 'ТЕХСТАНДАРТ', 'url' => $siteUrl, 'logo' => $siteUrl . '/assets/images/logo.png', 'sameAs' => [ 'https://rutube.ru/channel/29434378/', 'https://t.me/techchsanel', 'https://vk.com/techstandart' ] ]; // 5. WebSite + SearchAction $jsonLd[] = [ '@context' => 'https://schema.org', '@type' => 'WebSite', '@id' => $siteUrl . '#website', 'url' => $siteUrl, 'name' => 'ТЕХСТАНДАРТ', 'description' => 'Отраслевая платформа цифрового прототипирования', 'potentialAction' => [ '@type' => 'SearchAction', 'target' => [ '@type' => 'EntryPoint', 'urlTemplate' => $siteUrl . '/system/search/search.php?q={search_term_string}' ], 'query-input' => 'required name=search_term_string' ] ]; // ========== ПОДГОТОВКА ДАННЫХ ДЛЯ renderModule ========== // Проверяем, нужно ли добавлять "| ТЕХСТАНДАРТ" к заголовку $finalTitle = (strpos($pageTitle, 'ТЕХСТАНДАРТ') === false) ? $pageTitle . ' | ТЕХСТАНДАРТ' : $pageTitle; $pageData = [ 'title' => $finalTitle, 'description' => $description, 'h1' => $h1, 'content' => $htmlContent, 'breadcrumb' => [ ['name' => 'Главная', 'url' => '/'], ['name' => $config['breadcrumb_name'] ?? $h1, 'url' => ''] ], 'template' => 'default', 'canonical_url' => $canonicalUrl, 'robots' => 'index, follow', 'keywords' => $keywords, 'og_title' => $finalTitle, 'og_description' => $description, 'og_image' => 'https://tech-stc.ru/assets/images/og/hub-og.jpg', 'og_type' => 'website', 'json_ld' => $jsonLd ]; require_once $_SERVER['DOCUMENT_ROOT'] . '/shell/render.php'; renderModule($pageData);
<?php declare(strict_types=1); require_once $_SERVER['DOCUMENT_ROOT'] . '/regulations/lib/loader.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/shell/json-ld-hub-generator.php'; // 1. Загружаем данные из 4-х нормативов $tempData = NormLoader::getTable('sp-131-13330-2020', 'appendix-a'); $frostData = NormLoader::getTable('sp-131-13330-2020', 'appendix-v'); $snowData = NormLoader::getTable('sp-20-13330-2016', 'appendix-m'); $windData = NormLoader::getTable('sp-20-13330-2016', 'appendix-n'); $cities = []; // 2. Базовый список городов if ($tempData && !empty($tempData['rows'])) { foreach ($tempData['rows'] as $row) { $city = trim((string)$row[0]); $cities[$city] = [ 'name' => $city, 't_ne' => $row[1] ?? '—', 'frost_sand' => '—', 'frost_loam' => '—', 'frost_clay' => '—', 'snow_s0' => '—', 'snow_dist' => '—', 'wind_w0' => '—', 'wind_dist' => '—', ]; } } // 3. Обогащаем данными if ($frostData && !empty($frostData['rows'])) { foreach ($frostData['rows'] as $row) { $city = trim((string)$row[0]); if (isset($cities[$city])) { $cities[$city]['frost_sand'] = $row[1] ?? '—'; $cities[$city]['frost_loam'] = $row[2] ?? '—'; $cities[$city]['frost_clay'] = $row[3] ?? '—'; } } } if ($snowData && !empty($snowData['rows'])) { foreach ($snowData['rows'] as $row) { $city = trim((string)$row[0]); if (isset($cities[$city])) { $cities[$city]['snow_s0'] = $row[1] ?? '—'; $cities[$city]['snow_dist'] = $row[2] ?? '—'; } } } if ($windData && !empty($windData['rows'])) { foreach ($windData['rows'] as $row) { $city = trim((string)$row[0]); if (isset($cities[$city])) { $cities[$city]['wind_w0'] = $row[1] ?? '—'; $cities[$city]['wind_dist'] = $row[2] ?? '—'; } } } ksort($cities, SORT_NATURAL | SORT_FLAG_CASE); $totalCities = count($cities); // 4. Генерация HTML ob_start(); ?> <div class="hub-container"> <p class="lead">Сводные климатические параметры для инженерных расчётов: температуры, глубина промерзания грунтов, снеговые и ветровые нагрузки (СП 131.13330.2020, СП 20.13330.2016).</p> <!-- Блок калькуляторов --> <div class="card mb-6"> <div class="card__body"> <h3> Инженерные расчёты </h3> <div class="btn-group flex-wrap"> <a href="/engineering-calculators/foundations/foundation-calculation-depth-laying/" class="btn btn-primary btn-sm"> Глубина заложения фундамента </a> <a href="/engineering-calculators/engineering-systems/heating-calculator-heat-loss-home/" class="btn btn-outline btn-sm"> Теплопотери дома </a> <a href="/engineering-calculators/roofing/roof-calculator-snow-load/" class="btn btn-outline btn-sm"> Снеговая нагрузка на кровлю </a> </div> </div> </div> <!-- Блок методик расчётов --> <div class="card mb-6"> <div class="card__body"> <h3 class="card__title hub-card-title"> Методики расчётов </h3> <div class="btn-group flex-wrap"> <a href="/guides/foundation/foundation-reinforcement-calculation.php" class="btn btn-outline btn-sm"> Расчёт армирования фундамента </a> <a href="/guides/foundation/concrete-calculation.php" class="btn btn-outline btn-sm"> Расчёт бетона для фундамента </a> <a href="/guides/foundation/blind-area-calculation.php" class="btn btn-outline btn-sm"> Расчёт отмостки </a> <a href="/guides/roof/flat-roof-calculation.php" class="btn btn-outline btn-sm"> Расчёт плоской кровли </a> <a href="/guides/water/water-consumption-calculation.php" class="btn btn-outline btn-sm"> Расчёт водопотребления </a> </div> </div> </div> <!-- Поиск --> <div class="hub-search-box"> <i class="bi bi-search hub-search-icon"></i> <input type="text" id="citySearch" class="hub-search-input" placeholder="Введите название города..." onkeyup="filterTable()"> </div> <!-- Сводная таблица --> <div class="table-responsive"> <table class="norm-table table-sticky-first-col" id="climateTable"> <thead> <tr> <th>Город</th> <th class="numeric">t<sub>н.е</sub>, °С</th> <th>Промерзание (песок), м</th> <th>Промерзание (суглинок), м</th> <th>Промерзание (глина), м</th> <th class="numeric">Снег S₀, кПа</th> <th>Снег. район</th> <th class="numeric">Ветер w₀, кПа</th> <th>Ветр. район</th> </tr> </thead> <tbody> <?php foreach ($cities as $city): ?> <tr> <td><?= htmlspecialchars($city['name']) ?></td> <td class="numeric"><?= htmlspecialchars($city['t_ne']) ?></td> <td class="numeric"><?= htmlspecialchars($city['frost_sand']) ?></td> <td class="numeric"><?= htmlspecialchars($city['frost_loam']) ?></td> <td class="numeric"><?= htmlspecialchars($city['frost_clay']) ?></td> <td class="numeric"><?= htmlspecialchars($city['snow_s0']) ?></td> <td><?= htmlspecialchars($city['snow_dist']) ?></td> <td class="numeric"><?= htmlspecialchars($city['wind_w0']) ?></td> <td><?= htmlspecialchars($city['wind_dist']) ?></td> </tr> <?php endforeach; ?> </tbody> </table> </div> <div class="mt-4 text-muted"> * Найдено городов: <span id="cityCount"><?= $totalCities ?></span>. Данные взяты напрямую из приложений СП. </div> </div> <script> function filterTable() { const input = document.getElementById('citySearch'); const filter = input.value.toLowerCase(); const table = document.getElementById('climateTable'); const tr = table.getElementsByTagName('tr'); let visibleCount = 0; for (let i = 1; i < tr.length; i++) { const td = tr[i].getElementsByTagName('td')[0]; if (td) { const txtValue = td.textContent || td.innerText; if (txtValue.toLowerCase().indexOf(filter) > -1) { tr[i].style.display = ''; visibleCount++; } else { tr[i].style.display = 'none'; } } } document.getElementById('cityCount').textContent = visibleCount; } </script> <?php $htmlContent = ob_get_clean(); // 5. SEO и рендеринг $protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://'; $host = $_SERVER['HTTP_HOST']; $uri = $_SERVER['REQUEST_URI']; $canonicalUrl = $protocol . $host . $uri; // Вызов генератора микроразметки с ПОЛНЫМИ параметрами $jsonLd = generateHubJsonLd([ 'title' => 'Климат и нагрузки по городам РФ', 'description' => 'Температуры, промерзание, снег, ветер', 'url' => $canonicalUrl, 'item_count' => $totalCities, 'hub_type' => 'dataset', 'source_norms' => ['СП 131.13330.2020', 'СП 20.13330.2016'], 'spatial_coverage' => 'Россия', 'breadcrumb' => [ ['name' => 'Главная', 'url' => '/'], ['name' => 'Климат и нагрузки', 'url' => ''], ], // ПОЛНАЯ МИКРОРАЗМЕТКА: 'include_website' => true, 'date_published' => '2024-01-15', 'search_url' => 'https://tech-stc.ru/hub/climate-and-loads/?search={search_term_string}', 'tables' => [ [ 'name' => 'Климатические параметры по городам РФ', 'description' => 'Температура холодной пятидневки, глубина промерзания грунтов, снеговая и ветровая нагрузки', 'citation' => 'СП 131.13330.2020, СП 20.13330.2016', 'rows' => $totalCities, 'columns' => 9, ], ], 'variable_measured' => [ 'Температура холодной пятидневки (°С)', 'Глубина промерзания песков (м)', 'Глубина промерзания суглинков (м)', 'Глубина промерзания глин (м)', 'Снеговая нагрузка (кПа)', 'Снеговой район', 'Ветровая нагрузка (кПа)', 'Ветровой район', ], ]); $pageData = [ 'title' => 'Климат и нагрузки по городам РФ (СП 131, СП 20) | ТЕХСТАНДАРТ', 'description' => 'Сводная таблица климатических параметров: температура, глубина промерзания грунтов, снеговые и ветровые нагрузки для всех крупных городов России.', 'h1' => 'Справочник климата и нагрузок по городам РФ', 'content' => $htmlContent, 'breadcrumb' => [ ['name' => 'Главная', 'url' => '/'], ['name' => 'Климат и нагрузки', 'url' => ''] ], 'template' => 'default', 'canonical_url' => $canonicalUrl, 'robots' => 'index, follow', 'keywords' => 'глубина промерзания грунта, снеговая нагрузка по городам, ветровая нагрузка, температура холодной пятидневки, сп 131, сп 20', 'json_ld' => $jsonLd ]; require_once $_SERVER['DOCUMENT_ROOT'] . '/shell/render.php'; renderModule($pageData);
<?php declare(strict_types=1); require_once $_SERVER['DOCUMENT_ROOT'] . '/regulations/lib/loader.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/shell/json-ld-hub-generator.php'; // 1. Загружаем данные из СП 63 $concreteData = NormLoader::getTable('sp-63-13330-2018', 'appendix-a'); $rebarData = NormLoader::getTable('sp-63-13330-2018', 'appendix-b'); $coverData = NormLoader::getTable('sp-63-13330-2018', 'appendix-v'); $concreteGrades = []; $rebarGrades = []; $coverLayers = []; // 2. Бетон: классы и марки if ($concreteData && !empty($concreteData['rows'])) { foreach ($concreteData['rows'] as $row) { $concreteGrades[] = [ 'class' => $row[0] ?? '—', 'grade' => $row[1] ?? '—', 'tensile_class' => $row[2] ?? '—', 'tensile_grade' => $row[3] ?? '—', 'e_modulus' => $row[4] ?? '—', ]; } } // 3. Арматура: классы и характеристики if ($rebarData && !empty($rebarData['rows'])) { foreach ($rebarData['rows'] as $row) { $rebarGrades[] = [ 'class' => $row[0] ?? '—', 'diameter' => $row[1] ?? '—', 'r_sn' => $row[2] ?? '—', 'r_s' => $row[3] ?? '—', 'r_sc' => $row[4] ?? '—', 'e_s' => $row[5] ?? '—', ]; } } // 4. Защитные слои бетона if ($coverData && !empty($coverData['rows'])) { foreach ($coverData['rows'] as $row) { $coverLayers[] = [ 'structure' => $row[0] ?? '—', 'conditions' => $row[1] ?? '—', 'cover_b15_b25' => $row[2] ?? '—', 'cover_b30_plus' => $row[3] ?? '—', ]; } } $totalConcrete = count($concreteGrades); $totalRebar = count($rebarGrades); $totalCover = count($coverLayers); // 5. Генерация HTML ob_start(); ?> <div class="hub-container"> <p class="lead">Справочник бетона и арматуры по СП 63.13330.2018: классы бетона, классы арматурной стали, защитные слои бетона для железобетонных конструкций.</p> <!-- Блок калькуляторов --> <div class="card mb-6"> <div class="card__body"> <h3 class="card__title hub-card-title"> Расчёты железобетонных конструкций </h3> <div class="btn-group flex-wrap"> <a href="/engineering-calculators/foundations/foundation-calculation-reinforcement-tape-foundation/" class="btn btn-primary btn-sm"> Армирование ленточного фундамента </a> <a href="/engineering-calculators/structures/beams-calculator-reinforcement/" class="btn btn-outline btn-sm"> Расчёт армирования балок </a> <a href="/engineering-calculators/foundations/foundation-calculation-pile-foundation/" class="btn btn-outline btn-sm"> Расчёт свайного фундамента </a> </div> </div> </div> <!-- Блок методик расчётов --> <div class="card mb-6"> <div class="card__body"> <h3 class="card__title hub-card-title"> Методики расчётов </h3> <div class="btn-group flex-wrap"> <a href="/guides/foundation/foundation-reinforcement-calculation.php" class="btn btn-outline btn-sm"> Расчёт армирования фундамента </a> <a href="/guides/foundation/concrete-calculation.php" class="btn btn-outline btn-sm"> Расчёт бетона для фундамента </a> <a href="/guides/foundation/blind-area-calculation.php" class="btn btn-outline btn-sm"> Расчёт отмостки </a> <a href="/guides/roof/flat-roof-calculation.php" class="btn btn-outline btn-sm"> Расчёт плоской кровли </a> <a href="/guides/water/water-consumption-calculation.php" class="btn btn-outline btn-sm"> Расчёт водопотребления </a> </div> </div> </div> <!-- Поиск --> <div class="hub-search-box"> <i class="bi bi-search hub-search-icon"></i> <input type="text" id="materialSearch" class="hub-search-input" placeholder="Введите класс бетона, арматуры или тип конструкции..." onkeyup="filterTables()"> </div> <!-- Таблица 1: Классы бетона --> <h2 class="mt-5 mb-3">Классы и марки бетона (приложение А СП 63.13330)</h2> <div class="table-responsive"> <table class="norm-table" id="concreteTable"> <thead> <tr> <th>Класс бетона (B)</th> <th class="numeric">Марка (M), кгс/см²</th> <th>Класс растяжения (Bt)</th> <th class="numeric">Марка растяжения, кгс/см²</th> <th class="numeric">Модуль упругости E_b, МПа</th> </tr> </thead> <tbody> <?php foreach ($concreteGrades as $item): ?> <tr data-material-name="<?= htmlspecialchars(strtolower($item['class'])) ?>"> <td class="material-name"><?= htmlspecialchars($item['class']) ?></td> <td class="numeric"><?= htmlspecialchars($item['grade']) ?></td> <td><?= htmlspecialchars($item['tensile_class']) ?></td> <td class="numeric"><?= htmlspecialchars($item['tensile_grade']) ?></td> <td class="numeric"><?= htmlspecialchars($item['e_modulus']) ?></td> </tr> <?php endforeach; ?> </tbody> </table> </div> <!-- Таблица 2: Классы арматуры --> <h2 class="mt-5 mb-3">Классы арматурной стали (приложение Б СП 63.13330)</h2> <div class="table-responsive"> <table class="norm-table" id="rebarTable"> <thead> <tr> <th>Класс арматуры</th> <th>Диаметр, мм</th> <th class="numeric">R_sn, МПа</th> <th class="numeric">R_s, МПа</th> <th class="numeric">R_sc, МПа</th> <th class="numeric">E_s, МПа</th> </tr> </thead> <tbody> <?php foreach ($rebarGrades as $item): ?> <tr data-material-name="<?= htmlspecialchars(strtolower($item['class'])) ?>"> <td class="material-name"><?= htmlspecialchars($item['class']) ?></td> <td><?= htmlspecialchars($item['diameter']) ?></td> <td class="numeric"><?= htmlspecialchars($item['r_sn']) ?></td> <td class="numeric"><?= htmlspecialchars($item['r_s']) ?></td> <td class="numeric"><?= htmlspecialchars($item['r_sc']) ?></td> <td class="numeric"><?= htmlspecialchars($item['e_s']) ?></td> </tr> <?php endforeach; ?> </tbody> </table> </div> <!-- Таблица 3: Защитные слои бетона --> <h2 class="mt-5 mb-3">Защитные слои бетона (приложение В СП 63.13330)</h2> <div class="table-responsive"> <table class="norm-table" id="coverTable"> <thead> <tr> <th>Тип конструкции</th> <th>Условия эксплуатации</th> <th class="numeric">Защитный слой, мм (B15-B25)</th> <th class="numeric">Защитный слой, мм (B30+)</th> </tr> </thead> <tbody> <?php foreach ($coverLayers as $item): ?> <tr data-material-name="<?= htmlspecialchars(strtolower($item['structure'])) ?>"> <td class="material-name"><?= htmlspecialchars($item['structure']) ?></td> <td><?= htmlspecialchars($item['conditions']) ?></td> <td class="numeric"><?= htmlspecialchars($item['cover_b15_b25']) ?></td> <td class="numeric"><?= htmlspecialchars($item['cover_b30_plus']) ?></td> </tr> <?php endforeach; ?> </tbody> </table> </div> <div class="mt-4 text-muted"> * Найдено классов бетона: <span id="concreteCount"><?= $totalConcrete ?></span> | Классов арматуры: <span id="rebarCount"><?= $totalRebar ?></span> | Типов конструкций: <span id="coverCount"><?= $totalCover ?></span> </div> </div> <script> function filterTables() { const input = document.getElementById('materialSearch'); const filter = input.value.trim().toLowerCase(); const concreteTable = document.getElementById('concreteTable'); const rebarTable = document.getElementById('rebarTable'); const coverTable = document.getElementById('coverTable'); const concreteRows = concreteTable.querySelectorAll('tbody tr'); const rebarRows = rebarTable.querySelectorAll('tbody tr'); const coverRows = coverTable.querySelectorAll('tbody tr'); let concreteVisible = 0; let rebarVisible = 0; let coverVisible = 0; concreteRows.forEach(row => { const nameCell = row.querySelector('td.material-name'); if (nameCell) { const text = nameCell.textContent.trim().toLowerCase(); if (filter === '' || text.indexOf(filter) > -1) { row.style.display = ''; concreteVisible++; } else { row.style.display = 'none'; } } }); rebarRows.forEach(row => { const nameCell = row.querySelector('td.material-name'); if (nameCell) { const text = nameCell.textContent.trim().toLowerCase(); if (filter === '' || text.indexOf(filter) > -1) { row.style.display = ''; rebarVisible++; } else { row.style.display = 'none'; } } }); coverRows.forEach(row => { const nameCell = row.querySelector('td.material-name'); if (nameCell) { const text = nameCell.textContent.trim().toLowerCase(); if (filter === '' || text.indexOf(filter) > -1) { row.style.display = ''; coverVisible++; } else { row.style.display = 'none'; } } }); document.getElementById('concreteCount').textContent = concreteVisible; document.getElementById('rebarCount').textContent = rebarVisible; document.getElementById('coverCount').textContent = coverVisible; } </script> <?php $htmlContent = ob_get_clean(); // 6. SEO $protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://'; $host = $_SERVER['HTTP_HOST']; $uri = $_SERVER['REQUEST_URI']; $canonicalUrl = $protocol . $host . $uri; $jsonLd = generateHubJsonLd([ 'title' => 'Справочник бетона и арматуры: классы, марки, расчётные сопротивления, защитные слои | ТЕХСТАНДАРТ', 'description' => 'Таблицы по СП 63.13330.2018: классы и марки бетона, классы арматурной стали (А240, А400, А500), расчётные сопротивления, защитные слои бетона.', 'url' => $canonicalUrl, 'item_count' => $totalConcrete + $totalRebar + $totalCover, 'hub_type' => 'dataset', 'dataset_name' => 'Бетон и арматура Российской Федерации: классы и характеристики', 'source_norms' => ['СП 63.13330.2018 Бетонные и железобетонные конструкции'], 'spatial_coverage' => 'Россия', 'keywords' => 'классы бетона, марка бетона, класс арматуры, расчётное сопротивление арматуры, защитный слой бетона, А400, А500', 'breadcrumb' => [ ['name' => 'Главная', 'url' => '/'], ['name' => 'Справочники', 'url' => '/hubs/'], ['name' => 'Бетон и арматура', 'url' => ''], ], 'include_website' => true, 'date_published' => '2024-01-15', 'search_url' => 'https://tech-stc.ru/hub/concrete-rebar/?search={search_term_string}', 'tables' => [ [ 'name' => 'Классы и марки бетона', 'description' => 'Классы бетона по прочности на сжатие B7.5-B60, марки M100-M700, классы на растяжение Bt0.8-Bt4.8', 'citation' => 'СП 63.13330.2018 приложение А', 'rows' => $totalConcrete, 'columns' => 5, ], [ 'name' => 'Классы арматурной стали', 'description' => 'Классы арматуры А240, А400, А500, А600, А800, А1000: нормативные и расчётные сопротивления, модуль упругости', 'citation' => 'СП 63.13330.2018 приложение Б', 'rows' => $totalRebar, 'columns' => 6, ], [ 'name' => 'Защитные слои бетона', 'description' => 'Минимальные защитные слои бетона для конструкций в различных условиях эксплуатации', 'citation' => 'СП 63.13330.2018 приложение В', 'rows' => $totalCover, 'columns' => 4, ], ], 'variable_measured' => [ 'Класс бетона по прочности на сжатие (B)', 'Марка бетона по прочности на сжатие (M)', 'Класс бетона по прочности на растяжение (Bt)', 'Модуль упругости бетона (E_b)', 'Нормативное сопротивление арматуры (R_sn)', 'Расчётное сопротивление арматуры растяжению (R_s)', 'Расчётное сопротивление арматуры сжатию (R_sc)', 'Модуль упругости арматуры (E_s)', 'Защитный слой бетона', ], ]); $pageData = [ 'title' => 'Справочник бетона и арматуры: классы, марки, расчётные сопротивления, защитные слои | ТЕХСТАНДАРТ', 'description' => 'Таблицы по СП 63.13330.2018: классы и марки бетона, классы арматурной стали (А240, А400, А500), расчётные сопротивления, защитные слои бетона.', 'h1' => 'Справочник бетона и арматуры', 'content' => $htmlContent, 'breadcrumb' => [ ['name' => 'Главная', 'url' => '/'], ['name' => 'Справочники', 'url' => '/hubs/'], ['name' => 'Бетон и арматура', 'url' => ''] ], 'template' => 'default', 'canonical_url' => $canonicalUrl, 'robots' => 'index, follow', 'keywords' => 'классы бетона, марка бетона, класс арматуры, расчётное сопротивление арматуры, защитный слой бетона, А400, А500', 'json_ld' => $jsonLd ]; require_once $_SERVER['DOCUMENT_ROOT'] . '/shell/render.php'; renderModule($pageData);
<?php return [ 'title' => 'Строительные и отделочные материалы | ТЕХСТАНДАРТ', 'description' => 'Калькуляторы для расчёта строительных материалов: теплоизоляция, кровля, фасады, древесина, отделка.', 'h1' => 'Строительные материалы: теплоизоляция, кровля, фасады, древесина', 'breadcrumb_name' => 'Строительные материалы', 'keywords' => 'строительные материалы, утеплитель, кровля, фасад, пиломатериалы, отделка', 'intro_text' => 'Калькуляторы для расчёта строительных материалов: теплоизоляция стен, кровельные материалы, фасады, пиломатериалы, отделочные материалы.', 'calculators' => [ // Теплоизоляция ['title' => 'Теплотехнический расчёт наружных стен', 'url' => '/engineering-calculators/structures/walls-calculation-thermal-conductivity-walls/'], ['title' => 'Расчёт толщины утеплителя для стен', 'url' => '/engineering-calculators/structures/walls-calculation-insulation-walls/'], ['title' => 'Утепление цоколя и отмостки', 'url' => '/engineering-calculators/materials/insulated-sand-apron-calculator/'], // Кровля ['title' => 'Расчёт площади кровли и материалов', 'url' => '/engineering-calculators/materials/roof-calculator-area/'], ['title' => 'Калькулятор металлочерепицы', 'url' => '/engineering-calculators/materials/metal-roof-panels-calculator/'], // Фасады ['title' => 'Расчёт вентилируемого фасада', 'url' => '/engineering-calculators/materials/ventilated-facade-cladding-calculator/'], // Древесина ['title' => 'Калькулятор объёма пиломатериалов', 'url' => '/engineering-calculators/wooden/sawn-timber-calculator/'], ['title' => 'Расчёт усушки древесины', 'url' => '/engineering-calculators/wooden/wood-shrinkage-calculator/'], ['title' => 'Объём оцилиндрованного бревна', 'url' => '/engineering-calculators/wooden/round-timber-volume-calculator/'], // Отделка ['title' => 'Расчёт керамической плитки на стены', 'url' => '/engineering-calculators/structures/wall-calculation-ceramic-tiles/'], ['title' => 'Калькулятор ламината', 'url' => '/engineering-calculators/structures/floor-calculation-laminate/'], ['title' => 'Расчёт гипсокартона на стены', 'url' => '/engineering-calculators/structures/walls-calculation-drywall-on-walls/'], ], ];
<?php $config = require __DIR__ . '/config.php'; require_once __DIR__ . '/../_templates/hub-template.php';
<?php declare(strict_types=1); require_once $_SERVER['DOCUMENT_ROOT'] . '/regulations/lib/loader.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/shell/json-ld-hub-generator.php'; // 1. Загружаем данные из нормативов $waterData = NormLoader::getTable('sp-30-13330-2020', 'appendix-a'); $sewageData = NormLoader::getTable('sp-32-13330-2018', 'appendix-b'); $ventData = NormLoader::getTable('sp-60-13330-2020', 'appendix-e'); // 2. Формируем структуру категорий $categories = [ 'water' => [ 'name' => 'Водоснабжение (СП 30.13330.2020)', 'description' => 'Нормы расхода воды санитарно-техническими приборами', 'calc_url' => '/engineering-calculators/engineering-systems/water-consumption-calculator/', 'calc_text' => 'Рассчитать расход воды', 'headers' => ['Прибор/потребитель', 'Хол. вода (л/с)', 'Гор. вода (л/с)', 'Общий (л/с)', 'Примечание'], 'rows' => [], 'rows_count' => 0, ], 'sewage' => [ 'name' => 'Канализация (СП 32.13330.2018)', 'description' => 'Уклоны и скорости в канализационных трубах', 'calc_url' => '/engineering-calculators/engineering-systems/septic-tank-volume-and-installation-calculator/', 'calc_text' => 'Рассчитать объем септика', 'headers' => ['Диаметр трубы (Ду, мм)', 'Мин. уклон', 'Опт. уклон', 'Мин. скорость (м/с)', 'Макс. скорость (м/с)'], 'rows' => [], 'rows_count' => 0, ], 'ventilation' => [ 'name' => 'Вентиляция (СП 60.13330.2020)', 'description' => 'Нормы воздухообмена в помещениях', 'calc_url' => '/engineering-calculators/engineering-systems/ventilation-mechanical-supply-exhaust-recuperation/', 'calc_text' => 'Расчет приточно-вытяжной вентиляции', 'headers' => ['Помещение', 'На 1 м² (м³/ч)', 'На человека (м³/ч)', 'Кратность (1/ч)'], 'rows' => [], 'rows_count' => 0, ] ]; // 3. Наполняем категории данными if ($waterData && !empty($waterData['rows'])) { $categories['water']['rows'] = array_slice($waterData['rows'], 0, 20); $categories['water']['rows_count'] = count($categories['water']['rows']); } if ($sewageData && !empty($sewageData['rows'])) { $categories['sewage']['rows'] = array_slice($sewageData['rows'], 0, 15); $categories['sewage']['rows_count'] = count($categories['sewage']['rows']); } if ($ventData && !empty($ventData['rows'])) { $startRow = (isset($ventData['rows'][0][0]) && stripos((string)$ventData['rows'][0][0], 'помещение') !== false) ? 1 : 0; $categories['ventilation']['rows'] = array_slice($ventData['rows'], $startRow, 15); $categories['ventilation']['rows_count'] = count($categories['ventilation']['rows']); } $totalCategories = count(array_filter($categories, fn($c) => !empty($c['rows']))); // 4. Генерация HTML ob_start(); ?> <div class="hub-container"> <p class="lead">Ключевые расчетные параметры из актуальных СП: нормы расхода воды, уклоны канализации, кратность воздухообмена для проектирования инженерных систем.</p> <!-- Блок калькуляторов --> <div class="card mb-6"> <div class="card__body"> <h3 class="card__title hub-card-title"> Инженерные расчёты </h3> <div class="btn-group flex-wrap"> <a href="/engineering-calculators/engineering-systems/water-consumption-calculator/" class="btn btn-primary btn-sm"> Расход воды </a> <a href="/engineering-calculators/engineering-systems/septic-tank-volume-and-installation-calculator/" class="btn btn-outline btn-sm"> Объем септика </a> <a href="/engineering-calculators/engineering-systems/ventilation-mechanical-supply-exhaust-recuperation/" class="btn btn-outline btn-sm"> Вентиляция </a> </div> </div> </div> <!-- Блок методик расчётов --> <div class="card mb-6"> <div class="card__body"> <h3 class="card__title hub-card-title"> Методики расчётов </h3> <div class="btn-group flex-wrap"> <a href="/guides/foundation/foundation-reinforcement-calculation.php" class="btn btn-outline btn-sm"> Расчёт армирования фундамента </a> <a href="/guides/foundation/concrete-calculation.php" class="btn btn-outline btn-sm"> Расчёт бетона для фундамента </a> <a href="/guides/foundation/blind-area-calculation.php" class="btn btn-outline btn-sm"> Расчёт отмостки </a> <a href="/guides/roof/flat-roof-calculation.php" class="btn btn-outline btn-sm"> Расчёт плоской кровли </a> <a href="/guides/water/water-consumption-calculation.php" class="btn btn-outline btn-sm"> Расчёт водопотребления </a> </div> </div> </div> <!-- Таблицы нормативов --> <?php foreach ($categories as $catKey => $catData): ?> <?php if (empty($catData['rows'])) continue; ?> <div class="card mb-6"> <div class="card__body"> <h2 class="card__title hub-card-title" style="margin: 0 0 0.5rem 0; font-size: 1.25rem;"> <?= htmlspecialchars($catData['name']) ?> </h2> <p class="text-muted" style="margin-bottom: 1rem;"><?= htmlspecialchars($catData['description']) ?></p> <div class="btn-group flex-wrap" style="margin-bottom: 1rem;"> <a href="<?= htmlspecialchars($catData['calc_url']) ?>" class="btn btn-outline btn-sm"> <?= htmlspecialchars($catData['calc_text']) ?> </a> </div> <div class="table-responsive"> <table class="norm-table"> <thead> <tr> <?php foreach ($catData['headers'] as $header): ?> <th><?= htmlspecialchars($header) ?></th> <?php endforeach; ?> </tr> </thead> <tbody> <?php foreach ($catData['rows'] as $row): ?> <tr> <?php foreach ($row as $cell): ?> <td><?= htmlspecialchars((string)$cell) ?></td> <?php endforeach; ?> </tr> <?php endforeach; ?> </tbody> </table> </div> </div> </div> <?php endforeach; ?> <div class="mt-4 text-muted"> * Отображено нормативных таблиц: <span id="categoryCount"><?= $totalCategories ?></span>. Данные взяты напрямую из приложений СП. </div> </div> <?php $htmlContent = ob_get_clean(); // 5. SEO $protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://'; $host = $_SERVER['HTTP_HOST']; $uri = $_SERVER['REQUEST_URI']; $canonicalUrl = $protocol . $host . $uri; $pageTitle = 'Справочник инженерных норм (СП 30, 32, 60) | ТЕХСТАНДАРТ'; $pageDescription = 'Расчетные параметры из СП: нормы расхода воды, уклоны канализационных труб, кратность воздухообмена для проектирования.'; $pageKeywords = 'уклон канализации, расход воды норма, кратность воздухообмена, сп 30, сп 32, сп 60'; $jsonLd = generateHubJsonLd([ 'title' => $pageTitle, 'description' => $pageDescription, 'url' => $canonicalUrl, 'item_count' => $totalCategories, 'hub_type' => 'dataset', 'dataset_name' => 'Инженерные нормы: водоснабжение, канализация, вентиляция', 'source_norms' => ['СП 30.13330.2020', 'СП 32.13330.2018', 'СП 60.13330.2020'], 'spatial_coverage' => 'Россия', 'keywords' => $pageKeywords, 'breadcrumb' => [ ['name' => 'Главная', 'url' => '/'], ['name' => 'Справочники', 'url' => '/hubs/'], ['name' => 'Инженерные нормы', 'url' => ''], ], 'include_website' => true, 'date_published' => '2024-01-15', 'search_url' => 'https://tech-stc.ru/hub/engineering-norms/?search={search_term_string}', 'tables' => [ [ 'name' => 'Нормы расхода воды', 'description' => 'Расход воды санитарно-техническими приборами', 'citation' => 'СП 30.13330.2020 приложение А', 'rows' => $categories['water']['rows_count'], 'columns' => 5, ], [ 'name' => 'Уклоны и скорости в канализационных трубах', 'description' => 'Минимальные и оптимальные уклоны, скорости движения стоков', 'citation' => 'СП 32.13330.2018 приложение Б', 'rows' => $categories['sewage']['rows_count'], 'columns' => 5, ], [ 'name' => 'Нормы воздухообмена', 'description' => 'Кратность воздухообмена в помещениях различного назначения', 'citation' => 'СП 60.13330.2020 приложение Е', 'rows' => $categories['ventilation']['rows_count'], 'columns' => 4, ], ], 'variable_measured' => [ 'Расход холодной воды (л/с)', 'Расход горячей воды (л/с)', 'Уклон канализационных труб', 'Скорость движения стоков (м/с)', 'Кратность воздухообмена (1/ч)', ], ]); $pageData = [ 'title' => $pageTitle, 'description' => $pageDescription, 'h1' => 'Справочник инженерных норм', 'content' => $htmlContent, 'breadcrumb' => [ ['name' => 'Главная', 'url' => '/'], ['name' => 'Справочники', 'url' => '/hubs/'], ['name' => 'Инженерные нормы', 'url' => ''] ], 'template' => 'default', 'canonical_url' => $canonicalUrl, 'robots' => 'index, follow', 'keywords' => $pageKeywords, 'json_ld' => $jsonLd ]; require_once $_SERVER['DOCUMENT_ROOT'] . '/shell/render.php'; renderModule($pageData);
<?php return [ 'title' => 'Благоустройство участка и ландшафтный дизайн | ТЕХСТАНДАРТ', 'description' => 'Калькуляторы для благоустройства участка: заборы, дорожки, газоны, малые архитектурные формы, освещение, автоматизация полива.', 'h1' => 'Благоустройство участка: заборы, дорожки, газоны, освещение', 'breadcrumb_name' => 'Благоустройство участка', 'keywords' => 'благоустройство участка, забор, дорожки, газон, беседка, освещение, автополив', 'intro_text' => 'Калькуляторы для благоустройства участка: расчёт заборов, дорожек, газонов, малых архитектурных форм, освещения и автополива.', 'calculators' => [ // Ограждения ['title' => 'Расчёт забора из профлиста', 'url' => '/engineering-calculators/exterior-site/fence-calculation-corrugated-sheet/'], ['title' => 'Калькулятор забора из сетки-рабицы', 'url' => '/engineering-calculators/exterior-site/fence-calculator-chain-link/'], ['title' => 'Расчёт габионного забора', 'url' => '/engineering-calculators/exterior-site/gabion-fence-wire-mesh-stones-calculator/'], ['title' => 'Калькулятор столбов для забора', 'url' => '/engineering-calculators/exterior-site/fence-calculator-pillars/'], ['title' => 'Расчёт длины забора по участку', 'url' => '/engineering-calculators/exterior-site/fence-length-calculator/'], ['title' => 'Забор из евроштакетника', 'url' => '/engineering-calculators/exterior-site/fence-calculator-eurostacker/'], ['title' => 'Металлический штакетник', 'url' => '/engineering-calculators/exterior-site/fence-calculator-metal-fence/'], ['title' => 'Деревянный штакетник', 'url' => '/engineering-calculators/exterior-site/fence-calculator-picket/'], ['title' => 'Забор из поликарбоната', 'url' => '/engineering-calculators/exterior-site/polycarbonate-fence-panel-calculator/'], ['title' => 'Каменный забор', 'url' => '/engineering-calculators/exterior-site/natural-stone-fence-construction-calculator/'], // Дорожки и площадки ['title' => 'Калькулятор тротуарной плитки', 'url' => '/engineering-calculators/exterior-site/garden-path-pavers-calculator/'], ['title' => 'Основание под дорожку (песок + щебень)', 'url' => '/engineering-calculators/exterior-site/sand-gravel-base-for-driveway-calculator/'], ['title' => 'ПГС и песчано-гравийная смесь', 'url' => '/engineering-calculators/exterior-site/sand-crushed-stone-pgs-calculator/'], // Газоны и водоёмы ['title' => 'Рулонный газон или посев семян', 'url' => '/engineering-calculators/exterior-site/lawn-turf-or-seed-calculator/'], ['title' => 'Объём пруда и площадь гидроизоляции', 'url' => '/engineering-calculators/exterior-site/garden-pond-volume-and-liner-calculator/'], ['title' => 'Камни для альпийской горки', 'url' => '/engineering-calculators/exterior-site/alpine-rock-garden-stones-calculator/'], // Малые архитектурные формы ['title' => 'Модульная беседка', 'url' => '/engineering-calculators/exterior-site/modular-gazebo-kit-calculator/'], ['title' => 'Модульный навес (автомобиль/патио)', 'url' => '/engineering-calculators/exterior-site/modular-carport-or-patio-canopy-calculator/'], ['title' => 'Модульная терраса', 'url' => '/engineering-calculators/exterior-site/modular-terrace-deck-kit-calculator/'], ['title' => 'Навес для барбекю', 'url' => '/engineering-calculators/exterior-site/barbecue-area-brick-construction-calculator/'], // Освещение ['title' => 'Освещение дорожек', 'url' => '/engineering-calculators/exterior-site/pathway-lighting-luminaires-calculator/'], ['title' => 'Ландшафтное освещение сада', 'url' => '/engineering-calculators/exterior-site/garden-landscape-lighting-calculator/'], ['title' => 'Уличное освещение участока', 'url' => '/engineering-calculators/exterior-site/outdoor-site-lighting-luminaires-calculator/'], ['title' => 'Автоматизация фонтана', 'url' => '/engineering-calculators/exterior-site/smart-garden-fountain-automation-calculator/'], ['title' => 'Автоматизация освещения', 'url' => '/engineering-calculators/exterior-site/smart-garden-lighting-automation-calculator/'], ['title' => 'Система умного полива', 'url' => '/engineering-calculators/exterior-site/smart-irrigation-with-soil-moisture-sensors-calculator/'], ], ];
<?php $config = require __DIR__ . '/config.php'; require_once __DIR__ . '/../_templates/hub-template.php';
<?php return [ 'title' => 'Фундаменты и земляные работы | ТЕХСТАНДАРТ', 'description' => 'Калькуляторы для расчёта фундаментов: ленточные, плитные, свайные. Земляные работы, армирование, гидроизоляция, дренаж.', 'h1' => 'Фундаменты: ленточные, плитные, свайные. Земляные работы и дренаж', 'breadcrumb_name' => 'Фундаменты и земляные работы', 'keywords' => 'фундамент, ленточный фундамент, плитный фундамент, свайный фундамент, земляные работы, дренаж', 'intro_text' => 'Калькуляторы для расчёта фундаментов: ленточные, плитные, свайные. Земляные работы, армирование, гидроизоляция, дренаж.', 'calculators' => [ // Типы фундаментов ['title' => 'Расчёт ленточного фундамента', 'url' => '/engineering-calculators/foundations/foundation-calculation-tape-foundation/'], ['title' => 'Расчёт монолитной плиты', 'url' => '/engineering-calculators/foundations/foundation-calculation-of-monolithic-slab/'], ['title' => 'Расчёт свайного фундамента', 'url' => '/engineering-calculators/foundations/foundation-calculation-pile-foundation/'], ['title' => 'Плитный фундамент с рёбрами жёсткости', 'url' => '/engineering-calculators/foundations/raft-foundation-with-stiffening-ribs/'], ['title' => 'Утеплённая шведская плита (УШП)', 'url' => '/engineering-calculators/foundations/foundation-calculator-insulated-swedish-slab/'], ['title' => 'Свайно-ленточный фундамент', 'url' => '/engineering-calculators/foundations/pile-strip-foundation-calculator/'], ['title' => 'Фундаментные блоки ФБС с гидроизоляцией', 'url' => '/engineering-calculators/foundations/fbs-block-foundation-with-waterproofing/'], // Армирование ['title' => 'Армирование ленточного фундамента', 'url' => '/engineering-calculators/foundations/foundation-calculation-reinforcement-tape-foundation/'], ['title' => 'Расчёт веса и длины арматуры', 'url' => '/engineering-calculators/foundations/rebar-weight-length-calculator/'], ['title' => 'Армирование углов ленточного фундамента', 'url' => '/engineering-calculators/foundations/foundation-corner-reinforcement-calculator/'], // Гидроизоляция и дренаж ['title' => 'Гидроизоляция подвала', 'url' => '/engineering-calculators/foundations/basement-waterproofing-materials-calculator/'], ['title' => 'Геомембрана для подвала', 'url' => '/engineering-calculators/foundations/basement-geomembrane-waterproofing-calculator/'], // Глубина и нагрузка ['title' => 'Глубина заложения фундамента', 'url' => '/engineering-calculators/foundations/foundation-calculation-depth-laying/'], ['title' => 'Расчёт нагрузки на фундамент', 'url' => '/engineering-calculators/foundations/foundation-calculation-load/'], ['title' => 'Несущая способность грунта', 'url' => '/engineering-calculators/foundations/soil-bearing-capacity-calculator/'], // Земляные работы ['title' => 'Расчёт откосов котлована', 'url' => '/engineering-calculators/foundations/excavation-calculation-excavation-slopes/'], // Осадка ['title' => 'Расчёт осадки фундамента', 'url' => '/engineering-calculators/foundations/foundation-settlement-calculation/'], ], ];
<?php $config = require __DIR__ . '/config.php'; require_once __DIR__ . '/../_templates/hub-template.php';
<?php return [ 'title' => 'Отопление, вентиляция и кондиционирование (HVAC) | ТЕХСТАНДАРТ', 'description' => 'Калькуляторы для систем отопления, вентиляции и кондиционирования: теплопотери, котлы, радиаторы, тёплый пол, воздуховоды.', 'h1' => 'Отопление, вентиляция, кондиционирование: расчёты по нормативам РФ', 'breadcrumb_name' => 'Отопление и вентиляция', 'keywords' => 'отопление, вентиляция, кондиционирование, теплопотери, котёл, радиаторы, тёплый пол', 'intro_text' => 'Калькуляторы для систем отопления, вентиляции и кондиционирования: теплопотери, подбор котла, радиаторов, тёплого пола, воздуховодов.', 'calculators' => [ // Теплопотери и мощность ['title' => 'Теплопотери дома', 'url' => '/engineering-calculators/engineering-systems/heating-calculator-heat-loss-home/'], ['title' => 'Мощность котла отопления', 'url' => '/engineering-calculators/engineering-systems/heating-boiler-power/'], ['title' => 'Теплопотери через окна и двери', 'url' => '/engineering-calculators/engineering-systems/heating-windows-doors-heat-loss/'], ['title' => 'Расчёт тепловой энергии на отопление', 'url' => '/engineering-calculators/engineering-systems/heating-energy-consumption-calculator/'], ['title' => 'Расход газа на отопление дома', 'url' => '/engineering-calculators/engineering-systems/heating-gas-consumption-heating-houses/'], // Насосы и баки ['title' => 'Циркуляционный насос для отопления', 'url' => '/engineering-calculators/engineering-systems/heating-circulation-pump-selection/'], ['title' => 'Расширительный бак', 'url' => '/engineering-calculators/engineering-systems/heating-expansion-tank-calculator/'], // Тёплый пол ['title' => 'Водяной тёплый пол', 'url' => '/engineering-calculators/engineering-systems/heating-water-underfloor-heating/'], // Радиаторы ['title' => 'Расчёт количества секций радиатора', 'url' => '/engineering-calculators/engineering-systems/heating-radiator-sections-calculator/'], ['title' => 'Тепловая завеса', 'url' => '/engineering-calculators/engineering-systems/thermal-curtain-over-door/'], // Вентиляция ['title' => 'Вентиляция с рекуперацией тепла', 'url' => '/engineering-calculators/engineering-systems/ventilation-mechanical-supply-exhaust-recuperation/'], ['title' => 'Естественная вентиляция', 'url' => '/engineering-calculators/engineering-systems/ventilation-natural-air-exchange/'], ['title' => 'Расчёт воздуховодов', 'url' => '/engineering-calculators/engineering-systems/ventilation-duct-sizing-calculator/'], ['title' => 'Канальный нагреватель воздуха', 'url' => '/engineering-calculators/engineering-systems/ventilation-duct-air-heater/'], // Кондиционирование ['title' => 'Подбор сплит-системы', 'url' => '/engineering-calculators/engineering-systems/cooling-split-system-selection/'], ['title' => 'VRF-система кондиционирования', 'url' => '/engineering-calculators/engineering-systems/cooling-vrf-system-design/'], // Дымоудаление ['title' => 'Система дымоудаления', 'url' => '/engineering-calculators/engineering-systems/smoke-extraction-system-installation/'], ['title' => 'Дымовые клапаны', 'url' => '/engineering-calculators/engineering-systems/smoke-dampers-selection/'], ], ];
<?php $config = require __DIR__ . '/config.php'; require_once __DIR__ . '/../_templates/hub-template.php';
<?php declare(strict_types=1); require_once $_SERVER['DOCUMENT_ROOT'] . '/regulations/lib/loader.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/shell/json-ld-hub-generator.php'; // 1. Загружаем данные из СП 50 (приложение Д) $materialsData = NormLoader::getTable('sp-50-13330-2020', 'appendix-d'); $materials = []; // 2. Формируем массив материалов if ($materialsData && !empty($materialsData['rows'])) { foreach ($materialsData['rows'] as $row) { $materials[] = [ 'name' => $row[0] ?? '—', 'density' => $row[1] ?? '—', 'thermal' => $row[2] ?? '—', 'heat_capacity' => $row[3] ?? '—', 'vapor_permeability' => $row[4] ?? '—', ]; } } $totalMaterials = count($materials); // 3. Генерация HTML ob_start(); ?> <div class="hub-container"> <p class="lead">Справочник теплоизоляционных и строительных материалов по СП 50.13330.2020: теплопроводность, плотность, теплоёмкость, паропроницаемость.</p> <!-- Блок калькуляторов --> <div class="card mb-6"> <div class="card__body"> <h3 class="card__title hub-card-title"> Теплотехнические расчёты </h3> <div class="btn-group flex-wrap"> <a href="/engineering-calculators/engineering-systems/heating-calculator-heat-loss-home/" class="btn btn-primary btn-sm"> Теплопотери дома </a> <a href="/engineering-calculators/structures/walls-calculation-insulation-walls/" class="btn btn-outline btn-sm"> Расчёт утепления стен </a> <a href="/engineering-calculators/roofing/attic-insulation-calculator/" class="btn btn-outline btn-sm"> Утепление кровли </a> </div> </div> </div> <!-- Блок методик расчётов --> <div class="card mb-6"> <div class="card__body"> <h3 class="card__title hub-card-title"> Методики расчётов </h3> <div class="btn-group flex-wrap"> <a href="/guides/foundation/foundation-reinforcement-calculation.php" class="btn btn-outline btn-sm"> Расчёт армирования фундамента </a> <a href="/guides/foundation/concrete-calculation.php" class="btn btn-outline btn-sm"> Расчёт бетона для фундамента </a> <a href="/guides/foundation/blind-area-calculation.php" class="btn btn-outline btn-sm"> Расчёт отмостки </a> <a href="/guides/roof/flat-roof-calculation.php" class="btn btn-outline btn-sm"> Расчёт плоской кровли </a> <a href="/guides/water/water-consumption-calculation.php" class="btn btn-outline btn-sm"> Расчёт водопотребления </a> </div> </div> </div> <!-- Поиск --> <div class="hub-search-box"> <i class="bi bi-search hub-search-icon"></i> <input type="text" id="materialSearch" class="hub-search-input" placeholder="Введите название материала (минвата, пенополистирол, кирпич, бетон...)..." onkeyup="filterTable()"> </div> <!-- Таблица: Теплотехнические характеристики материалов --> <div class="table-responsive"> <table class="norm-table" id="materialsTable"> <thead> <tr> <th>Материал</th> <th class="numeric">Плотность ρ, кг/м³</th> <th class="numeric">Теплопроводность λ, Вт/(м·°С)</th> <th class="numeric">Теплоёмкость c, кДж/(кг·°С)</th> <th class="numeric">Паропроницаемость μ, мг/(м·ч·Па)</th> </tr> </thead> <tbody> <?php foreach ($materials as $material): ?> <tr data-material-name="<?= htmlspecialchars(strtolower($material['name'])) ?>"> <td class="material-name"><?= htmlspecialchars($material['name']) ?></td> <td class="numeric"><?= htmlspecialchars($material['density']) ?></td> <td class="numeric"><?= htmlspecialchars($material['thermal']) ?></td> <td class="numeric"><?= htmlspecialchars($material['heat_capacity']) ?></td> <td class="numeric"><?= htmlspecialchars($material['vapor_permeability']) ?></td> </tr> <?php endforeach; ?> </tbody> </table> </div> <div class="mt-4 text-muted"> * Найдено материалов: <span id="materialCount"><?= $totalMaterials ?></span>. Данные по СП 50.13330.2020 (актуализированная версия) приложение Д. Теплопроводность указана для условий эксплуатации А (сухой режим). </div> </div> <script> function filterTable() { const input = document.getElementById('materialSearch'); const filter = input.value.trim().toLowerCase(); const table = document.getElementById('materialsTable'); const rows = table.querySelectorAll('tbody tr'); let visibleCount = 0; rows.forEach(row => { const nameCell = row.querySelector('td.material-name'); if (nameCell) { const text = nameCell.textContent.trim().toLowerCase(); if (filter === '' || text.indexOf(filter) > -1) { row.style.display = ''; visibleCount++; } else { row.style.display = 'none'; } } }); document.getElementById('materialCount').textContent = visibleCount; } </script> <?php $htmlContent = ob_get_clean(); // 4. SEO $protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://'; $host = $_SERVER['HTTP_HOST']; $uri = $_SERVER['REQUEST_URI']; $canonicalUrl = $protocol . $host . $uri; $jsonLd = generateHubJsonLd([ 'title' => 'Справочник теплоизоляционных материалов: теплопроводность, плотность, паропроницаемость | ТЕХСТАНДАРТ', 'description' => 'Таблицы теплотехнических характеристик материалов по СП 50.13330.2020: теплопроводность, плотность, теплоёмкость, паропроницаемость утеплителей, бетона, кирпича, дерева.', 'url' => $canonicalUrl, 'item_count' => $totalMaterials, 'hub_type' => 'dataset', 'dataset_name' => 'Теплотехнические характеристики строительных материалов', 'source_norms' => ['СП 50.13330.2020 Тепловая защита зданий'], 'spatial_coverage' => 'Россия', 'keywords' => 'теплопроводность материалов таблица, коэффициент теплопроводности утеплителей, плотность материалов, паропроницаемость, теплоёмкость', 'breadcrumb' => [ ['name' => 'Главная', 'url' => '/'], ['name' => 'Справочники', 'url' => '/hubs/'], ['name' => 'Теплоизоляционные материалы', 'url' => ''], ], 'include_website' => true, 'date_published' => '2024-01-15', 'search_url' => 'https://tech-stc.ru/hub/insulation-materials/?search={search_term_string}', 'tables' => [ [ 'name' => 'Теплотехнические характеристики строительных материалов', 'description' => 'Плотность, теплопроводность, теплоёмкость, паропроницаемость материалов: минеральная вата, пенополистирол, бетон, кирпич, дерево, газобетон', 'citation' => 'СП 50.13330.2020 приложение Д', 'rows' => $totalMaterials, 'columns' => 5, ], ], 'variable_measured' => [ 'Плотность материала (кг/м³)', 'Теплопроводность (Вт/(м·°С))', 'Удельная теплоёмкость (кДж/(кг·°С))', 'Паропроницаемость (мг/(м·ч·Па))', ], ]); $pageData = [ 'title' => 'Справочник теплоизоляционных материалов: теплопроводность, плотность, паропроницаемость | ТЕХСТАНДАРТ', 'description' => 'Таблицы теплотехнических характеристик материалов по СП 50.13330.2020: теплопроводность, плотность, теплоёмкость, паропроницаемость утеплителей, бетона, кирпича, дерева.', 'h1' => 'Справочник теплоизоляционных материалов', 'content' => $htmlContent, 'breadcrumb' => [ ['name' => 'Главная', 'url' => '/'], ['name' => 'Справочники', 'url' => '/hubs/'], ['name' => 'Теплоизоляционные материалы', 'url' => ''] ], 'template' => 'default', 'canonical_url' => $canonicalUrl, 'robots' => 'index, follow', 'keywords' => 'теплопроводность материалов таблица, коэффициент теплопроводности утеплителей, плотность материалов, паропроницаемость, теплоёмкость', 'json_ld' => $jsonLd ]; require_once $_SERVER['DOCUMENT_ROOT'] . '/shell/render.php'; renderModule($pageData);
<?php declare(strict_types=1); require_once $_SERVER['DOCUMENT_ROOT'] . '/regulations/lib/loader.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/shell/json-ld-hub-generator.php'; // 1. Загружаем данные из СП 24 $soilCapacityData = NormLoader::getTable('sp-24-13330-2011', '7.1'); $materialCapacityData = NormLoader::getTable('sp-24-13330-2011', '7.2'); $workConditionsData = NormLoader::getTable('sp-24-13330-2011', '7.3'); $drivenPilesData = NormLoader::getTable('sp-24-13330-2011', 'appendix-a'); $boredPilesData = NormLoader::getTable('sp-24-13330-2011', 'appendix-b'); // 2. Формируем массивы $soilCapacity = []; $materialCapacity = []; $workConditions = []; $drivenPiles = []; $boredPiles = []; if ($soilCapacityData && !empty($soilCapacityData['rows'])) { foreach ($soilCapacityData['rows'] as $row) { $soilCapacity[] = [ 'soil_type' => $row[0] ?? '—', 'condition' => $row[1] ?? '—', 'r' => $row[2] ?? '—', 'f_i' => $row[3] ?? '—', 'depth' => $row[4] ?? '—', ]; } } if ($materialCapacityData && !empty($materialCapacityData['rows'])) { foreach ($materialCapacityData['rows'] as $row) { $materialCapacity[] = [ 'pile_type' => $row[0] ?? '—', 'section' => $row[1] ?? '—', 'length' => $row[2] ?? '—', 'concrete_class' => $row[3] ?? '—', 'rebar_class' => $row[4] ?? '—', 'capacity' => $row[5] ?? '—', 'notes' => $row[6] ?? '—', ]; } } if ($workConditionsData && !empty($workConditionsData['rows'])) { foreach ($workConditionsData['rows'] as $row) { $workConditions[] = [ 'condition' => $row[0] ?? '—', 'gamma_c' => $row[1] ?? '—', 'notes' => $row[2] ?? '—', ]; } } if ($drivenPilesData && !empty($drivenPilesData['rows'])) { foreach ($drivenPilesData['rows'] as $row) { $drivenPiles[] = [ 'mark' => $row[0] ?? '—', 'section' => $row[1] ?? '—', 'length' => $row[2] ?? '—', 'weight' => $row[3] ?? '—', 'concrete_class' => $row[4] ?? '—', 'rebar' => $row[5] ?? '—', 'volume' => $row[6] ?? '—', ]; } } if ($boredPilesData && !empty($boredPilesData['rows'])) { foreach ($boredPilesData['rows'] as $row) { $boredPiles[] = [ 'diameter' => $row[0] ?? '—', 'length' => $row[1] ?? '—', 'volume' => $row[2] ?? '—', 'rebar_weight' => $row[3] ?? '—', 'concrete_class' => $row[4] ?? '—', 'rebar' => $row[5] ?? '—', 'notes' => $row[6] ?? '—', ]; } } $totalSoilCapacity = count($soilCapacity); $totalMaterialCapacity = count($materialCapacity); $totalWorkConditions = count($workConditions); $totalDrivenPiles = count($drivenPiles); $totalBoredPiles = count($boredPiles); // 3. Генерация HTML ob_start(); ?> <div class="hub-container"> <p class="lead">Справочник свайных фундаментов по СП 24.13330.2011: несущая способность свай по грунту и материалу, коэффициенты условий работы, типовые размеры забивных и буронабивных свай.</p> <!-- Блок калькуляторов --> <div class="card mb-6"> <div class="card__body"> <h3 class="card__title hub-card-title"> Расчёты свайных фундаментов </h3> <div class="btn-group flex-wrap"> <a href="/engineering-calculators/foundations/foundation-calculation-pile-foundation/" class="btn btn-primary btn-sm"> Расчёт свайного фундамента </a> <a href="/engineering-calculators/foundations/pile-load-capacity-for-high-rise-buildings/" class="btn btn-outline btn-sm"> Несущая способность свай </a> <a href="/engineering-calculators/foundations/screw-pile-foundation-for-frame-house-calculator/" class="btn btn-outline btn-sm"> Винтовые сваи </a> </div> </div> </div> <!-- Блок методик расчётов --> <div class="card mb-6"> <div class="card__body"> <h3 class="card__title hub-card-title"> Методики расчётов </h3> <div class="btn-group flex-wrap"> <a href="/guides/foundation/foundation-reinforcement-calculation.php" class="btn btn-outline btn-sm"> Расчёт армирования фундамента </a> <a href="/guides/foundation/concrete-calculation.php" class="btn btn-outline btn-sm"> Расчёт бетона для фундамента </a> <a href="/guides/foundation/blind-area-calculation.php" class="btn btn-outline btn-sm"> Расчёт отмостки </a> <a href="/guides/roof/flat-roof-calculation.php" class="btn btn-outline btn-sm"> Расчёт плоской кровли </a> <a href="/guides/water/water-consumption-calculation.php" class="btn btn-outline btn-sm"> Расчёт водопотребления </a> </div> </div> </div> <!-- Поиск --> <div class="hub-search-box"> <i class="bi bi-search hub-search-icon"></i> <input type="text" id="pileSearch" class="hub-search-input" placeholder="Введите тип грунта, марку сваи или условие..." onkeyup="filterTables()"> </div> <!-- Таблица 1: Несущая способность по грунту --> <h2 class="mt-5 mb-3">Несущая способность свай по грунту F_d (таблица 7.1 СП 24.13330)</h2> <div class="table-responsive"> <table class="norm-table" id="soilCapacityTable"> <thead> <tr> <th>Тип грунта</th> <th>Состояние</th> <th class="numeric">R, кПа</th> <th class="numeric">f_i, кПа</th> <th>Глубина, м</th> </tr> </thead> <tbody> <?php foreach ($soilCapacity as $item): ?> <tr data-search-text="<?= htmlspecialchars(strtolower($item['soil_type'] . ' ' . $item['condition'])) ?>"> <td class="search-cell"><?= htmlspecialchars($item['soil_type']) ?></td> <td><?= htmlspecialchars($item['condition']) ?></td> <td class="numeric"><?= htmlspecialchars($item['r']) ?></td> <td class="numeric"><?= htmlspecialchars($item['f_i']) ?></td> <td><?= htmlspecialchars($item['depth']) ?></td> </tr> <?php endforeach; ?> </tbody> </table> </div> <!-- Таблица 2: Несущая способность по материалу --> <h2 class="mt-5 mb-3">Несущая способность свай по материалу F_d,m (таблица 7.2 СП 24.13330)</h2> <div class="table-responsive"> <table class="norm-table" id="materialCapacityTable"> <thead> <tr> <th>Тип сваи</th> <th>Сечение, мм</th> <th>Длина, м</th> <th>Класс бетона</th> <th>Класс арматуры</th> <th class="numeric">F_d,m, кН</th> <th>Примечания</th> </tr> </thead> <tbody> <?php foreach ($materialCapacity as $item): ?> <tr data-search-text="<?= htmlspecialchars(strtolower($item['pile_type'] . ' ' . $item['section'])) ?>"> <td class="search-cell"><?= htmlspecialchars($item['pile_type']) ?></td> <td><?= htmlspecialchars($item['section']) ?></td> <td><?= htmlspecialchars($item['length']) ?></td> <td><?= htmlspecialchars($item['concrete_class']) ?></td> <td><?= htmlspecialchars($item['rebar_class']) ?></td> <td class="numeric"><?= htmlspecialchars($item['capacity']) ?></td> <td><?= htmlspecialchars($item['notes']) ?></td> </tr> <?php endforeach; ?> </tbody> </table> </div> <!-- Таблица 3: Коэффициенты условий работы --> <h2 class="mt-5 mb-3">Коэффициенты условий работы γ_c (таблица 7.3 СП 24.13330)</h2> <div class="table-responsive"> <table class="norm-table" id="workConditionsTable"> <thead> <tr> <th>Условие работы</th> <th class="numeric">γ_c</th> <th>Примечания</th> </tr> </thead> <tbody> <?php foreach ($workConditions as $item): ?> <tr data-search-text="<?= htmlspecialchars(strtolower($item['condition'])) ?>"> <td class="search-cell"><?= htmlspecialchars($item['condition']) ?></td> <td class="numeric"><?= htmlspecialchars($item['gamma_c']) ?></td> <td><?= htmlspecialchars($item['notes']) ?></td> </tr> <?php endforeach; ?> </tbody> </table> </div> <!-- Таблица 4: Забивные сваи --> <h2 class="mt-5 mb-3">Типовые размеры забивных железобетонных свай (приложение А СП 24.13330)</h2> <div class="table-responsive"> <table class="norm-table" id="drivenPilesTable"> <thead> <tr> <th>Марка сваи</th> <th>Сечение, мм</th> <th>Длина, м</th> <th class="numeric">Масса, т</th> <th>Класс бетона</th> <th>Арматура</th> <th class="numeric">Объём бетона, м³</th> </tr> </thead> <tbody> <?php foreach ($drivenPiles as $item): ?> <tr data-search-text="<?= htmlspecialchars(strtolower($item['mark'] . ' ' . $item['section'])) ?>"> <td class="search-cell"><?= htmlspecialchars($item['mark']) ?></td> <td><?= htmlspecialchars($item['section']) ?></td> <td><?= htmlspecialchars($item['length']) ?></td> <td class="numeric"><?= htmlspecialchars($item['weight']) ?></td> <td><?= htmlspecialchars($item['concrete_class']) ?></td> <td><?= htmlspecialchars($item['rebar']) ?></td> <td class="numeric"><?= htmlspecialchars($item['volume']) ?></td> </tr> <?php endforeach; ?> </tbody> </table> </div> <!-- Таблица 5: Буронабивные сваи --> <h2 class="mt-5 mb-3">Типовые размеры буронабивных свай (приложение Б СП 24.13330)</h2> <div class="table-responsive"> <table class="norm-table" id="boredPilesTable"> <thead> <tr> <th>Диаметр, мм</th> <th>Длина, м</th> <th class="numeric">Объём бетона, м³</th> <th class="numeric">Масса арматуры, кг/м</th> <th>Класс бетона</th> <th>Арматура</th> <th>Примечания</th> </tr> </thead> <tbody> <?php foreach ($boredPiles as $item): ?> <tr data-search-text="<?= htmlspecialchars(strtolower($item['diameter'] . ' ' . $item['notes'])) ?>"> <td class="search-cell"><?= htmlspecialchars($item['diameter']) ?></td> <td><?= htmlspecialchars($item['length']) ?></td> <td class="numeric"><?= htmlspecialchars($item['volume']) ?></td> <td class="numeric"><?= htmlspecialchars($item['rebar_weight']) ?></td> <td><?= htmlspecialchars($item['concrete_class']) ?></td> <td><?= htmlspecialchars($item['rebar']) ?></td> <td><?= htmlspecialchars($item['notes']) ?></td> </tr> <?php endforeach; ?> </tbody> </table> </div> <div class="mt-4 text-muted"> * Найдено записей: грунт: <span id="soilCount"><?= $totalSoilCapacity ?></span> | материал: <span id="materialCount"><?= $totalMaterialCapacity ?></span> | условия: <span id="conditionsCount"><?= $totalWorkConditions ?></span> | забивные: <span id="drivenCount"><?= $totalDrivenPiles ?></span> | буронабивные: <span id="boredCount"><?= $totalBoredPiles ?></span> </div> </div> <script> function filterTables() { const input = document.getElementById('pileSearch'); const filter = input.value.trim().toLowerCase(); const tables = [ 'soilCapacityTable', 'materialCapacityTable', 'workConditionsTable', 'drivenPilesTable', 'boredPilesTable' ]; const counts = {}; tables.forEach(tableId => { const table = document.getElementById(tableId); const rows = table.querySelectorAll('tbody tr'); let visibleCount = 0; rows.forEach(row => { const searchText = row.getAttribute('data-search-text') || ''; if (filter === '' || searchText.indexOf(filter) > -1) { row.style.display = ''; visibleCount++; } else { row.style.display = 'none'; } }); counts[tableId] = visibleCount; }); document.getElementById('soilCount').textContent = counts['soilCapacityTable'] || 0; document.getElementById('materialCount').textContent = counts['materialCapacityTable'] || 0; document.getElementById('conditionsCount').textContent = counts['workConditionsTable'] || 0; document.getElementById('drivenCount').textContent = counts['drivenPilesTable'] || 0; document.getElementById('boredCount').textContent = counts['boredPilesTable'] || 0; } </script> <?php $htmlContent = ob_get_clean(); // 4. SEO $protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://'; $host = $_SERVER['HTTP_HOST']; $uri = $_SERVER['REQUEST_URI']; $canonicalUrl = $protocol . $host . $uri; $jsonLd = generateHubJsonLd([ 'title' => 'Справочник свайных фундаментов: несущая способность, типовые размеры свай | ТЕХСТАНДАРТ', 'description' => 'Таблицы по СП 24.13330.2011: несущая способность свай по грунту и материалу, коэффициенты условий работы, размеры забивных и буронабивных свай.', 'url' => $canonicalUrl, 'item_count' => $totalSoilCapacity + $totalMaterialCapacity + $totalWorkConditions + $totalDrivenPiles + $totalBoredPiles, 'hub_type' => 'dataset', 'dataset_name' => 'Свайные фундаменты: несущая способность и типовые размеры', 'source_norms' => ['СП 24.13330.2011 Свайные фундаменты'], 'spatial_coverage' => 'Россия', 'keywords' => 'несущая способность свай, забивные сваи размеры, буронабивные сваи диаметры, свайный фундамент, СП 24', 'breadcrumb' => [ ['name' => 'Главная', 'url' => '/'], ['name' => 'Справочники', 'url' => '/hubs/'], ['name' => 'Свайные фундаменты', 'url' => ''], ], 'include_website' => true, 'date_published' => '2024-01-15', 'search_url' => 'https://tech-stc.ru/hub/pile-foundation/?search={search_term_string}', 'tables' => [ [ 'name' => 'Несущая способность свай по грунту', 'description' => 'Сопротивление грунта под нижним концом и боковой поверхностью свай', 'citation' => 'СП 24.13330.2011 таблица 7.1', 'rows' => $totalSoilCapacity, 'columns' => 5, ], [ 'name' => 'Несущая способность свай по материалу', 'description' => 'Несущая способность по прочности бетона и арматуры', 'citation' => 'СП 24.13330.2011 таблица 7.2', 'rows' => $totalMaterialCapacity, 'columns' => 7, ], [ 'name' => 'Типовые размеры забивных свай', 'description' => 'Размеры, масса, объём бетона забивных железобетонных свай', 'citation' => 'СП 24.13330.2011 приложение А', 'rows' => $totalDrivenPiles, 'columns' => 7, ], [ 'name' => 'Типовые размеры буронабивных свай', 'description' => 'Диаметры, объём бетона, масса арматуры буронабивных свай', 'citation' => 'СП 24.13330.2011 приложение Б', 'rows' => $totalBoredPiles, 'columns' => 7, ], ], 'variable_measured' => [ 'Сопротивление грунта под нижним концом сваи (R)', 'Сопротивление боковой поверхности (f_i)', 'Несущая способность по материалу (F_d,m)', 'Размеры забивных свай', 'Размеры буронабивных свай', ], ]); $pageData = [ 'title' => 'Справочник свайных фундаментов: несущая способность, типовые размеры свай | ТЕХСТАНДАРТ', 'description' => 'Таблицы по СП 24.13330.2011: несущая способность свай по грунту и материалу, коэффициенты условий работы, размеры забивных и буронабивных свай.', 'h1' => 'Справочник свайных фундаментов', 'content' => $htmlContent, 'breadcrumb' => [ ['name' => 'Главная', 'url' => '/'], ['name' => 'Справочники', 'url' => '/hubs/'], ['name' => 'Свайные фундаменты', 'url' => ''] ], 'template' => 'default', 'canonical_url' => $canonicalUrl, 'robots' => 'index, follow', 'keywords' => 'несущая способность свай, забивные сваи размеры, буронабивные сваи диаметры, свайный фундамент, СП 24', 'json_ld' => $jsonLd ]; require_once $_SERVER['DOCUMENT_ROOT'] . '/shell/render.php'; renderModule($pageData);
<?php declare(strict_types=1); require_once $_SERVER['DOCUMENT_ROOT'] . '/regulations/lib/loader.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/shell/json-ld-hub-generator.php'; // 1. Загружаем данные из СП 17 $slopeData = NormLoader::getTable('sp-17-13330-2017', 'appendix-a'); $snowCoeffData = NormLoader::getTable('sp-17-13330-2017', 'appendix-b'); $slopes = []; $snowCoeffs = []; // 2. Минимальные уклоны кровель if ($slopeData && !empty($slopeData['rows'])) { foreach ($slopeData['rows'] as $row) { $slopes[] = [ 'material' => $row[0] ?? '—', 'slope_percent' => $row[1] ?? '—', 'slope_degrees' => $row[2] ?? '—', 'max_slope_percent' => $row[3] ?? '—', 'notes' => $row[4] ?? '—', ]; } } // 3. Снеговые коэффициенты для кровель if ($snowCoeffData && !empty($snowCoeffData['rows'])) { foreach ($snowCoeffData['rows'] as $row) { $snowCoeffs[] = [ 'roof_type' => $row[0] ?? '—', 'mu' => $row[1] ?? '—', 'ce' => $row[2] ?? '—', 'ct' => $row[3] ?? '—', 'notes' => $row[4] ?? '—', ]; } } $totalSlopes = count($slopes); $totalSnowCoeffs = count($snowCoeffs); // 4. Генерация HTML ob_start(); ?> <div class="hub-container"> <p class="lead">Справочник по кровлям по СП 17.13330.2017: минимальные уклоны кровель для различных покрытий, снеговые коэффициенты для расчёта нагрузок.</p> <!-- Блок калькуляторов --> <div class="card mb-6"> <div class="card__body"> <h3 class="card__title hub-card-title"> Расчёты кровель </h3> <div class="btn-group flex-wrap"> <a href="/engineering-calculators/roofing/roof-calculator-snow-load/" class="btn btn-primary btn-sm"> Снеговая нагрузка </a> <a href="/engineering-calculators/roofing/roof-calculation-of-gable-roof/" class="btn btn-outline btn-sm"> Расчёт двускатной крыши </a> <a href="/engineering-calculators/roofing/roof-calculation-rafters/" class="btn btn-outline btn-sm"> Расчёт стропил </a> </div> </div> </div> <!-- Блок методик расчётов --> <div class="card mb-6"> <div class="card__body"> <h3 class="card__title hub-card-title"> Методики расчётов </h3> <div class="btn-group flex-wrap"> <a href="/guides/foundation/foundation-reinforcement-calculation.php" class="btn btn-outline btn-sm"> Расчёт армирования фундамента </a> <a href="/guides/foundation/concrete-calculation.php" class="btn btn-outline btn-sm"> Расчёт бетона для фундамента </a> <a href="/guides/foundation/blind-area-calculation.php" class="btn btn-outline btn-sm"> Расчёт отмостки </a> <a href="/guides/roof/flat-roof-calculation.php" class="btn btn-outline btn-sm"> Расчёт плоской кровли </a> <a href="/guides/water/water-consumption-calculation.php" class="btn btn-outline btn-sm"> Расчёт водопотребления </a> </div> </div> </div> <!-- Поиск --> <div class="hub-search-box"> <i class="bi bi-search hub-search-icon"></i> <input type="text" id="roofSearch" class="hub-search-input" placeholder="Введите тип покрытия или кровли..." onkeyup="filterTables()"> </div> <!-- Таблица 1: Минимальные уклоны кровель --> <h2 class="mt-5 mb-3">Минимальные уклоны кровель (приложение А СП 17.13330)</h2> <div class="table-responsive"> <table class="norm-table" id="slopeTable"> <thead> <tr> <th>Тип кровельного покрытия</th> <th class="numeric">Минимальный уклон, %</th> <th class="numeric">Минимальный уклон, град.</th> <th class="numeric">Максимальный уклон, %</th> <th>Примечания</th> </tr> </thead> <tbody> <?php foreach ($slopes as $item): ?> <tr data-search-text="<?= htmlspecialchars(strtolower($item['material'])) ?>"> <td class="search-cell"><?= htmlspecialchars($item['material']) ?></td> <td class="numeric"><?= htmlspecialchars($item['slope_percent']) ?></td> <td class="numeric"><?= htmlspecialchars($item['slope_degrees']) ?></td> <td class="numeric"><?= htmlspecialchars($item['max_slope_percent']) ?></td> <td><?= htmlspecialchars($item['notes']) ?></td> </tr> <?php endforeach; ?> </tbody> </table> </div> <!-- Таблица 2: Снеговые коэффициенты --> <h2 class="mt-5 mb-3">Снеговые коэффициенты для кровель (приложение Б СП 17.13330)</h2> <div class="table-responsive"> <table class="norm-table" id="snowCoeffTable"> <thead> <tr> <th>Тип кровли</th> <th class="numeric">Коэффициент формы μ</th> <th class="numeric">Коэффициент выдувания c<sub>e</sub></th> <th class="numeric">Коэффициент теплового сдвига c<sub>t</sub></th> <th>Примечания</th> </tr> </thead> <tbody> <?php foreach ($snowCoeffs as $item): ?> <tr data-search-text="<?= htmlspecialchars(strtolower($item['roof_type'])) ?>"> <td class="search-cell"><?= htmlspecialchars($item['roof_type']) ?></td> <td class="numeric"><?= htmlspecialchars($item['mu']) ?></td> <td class="numeric"><?= htmlspecialchars($item['ce']) ?></td> <td class="numeric"><?= htmlspecialchars($item['ct']) ?></td> <td><?= htmlspecialchars($item['notes']) ?></td> </tr> <?php endforeach; ?> </tbody> </table> </div> <div class="mt-4 text-muted"> * Найдено типов покрытий: <span id="slopeCount"><?= $totalSlopes ?></span> | Типов кровель: <span id="snowCoeffCount"><?= $totalSnowCoeffs ?></span> </div> </div> <script> function filterTables() { const input = document.getElementById('roofSearch'); const filter = input.value.trim().toLowerCase(); const slopeTable = document.getElementById('slopeTable'); const snowCoeffTable = document.getElementById('snowCoeffTable'); const slopeRows = slopeTable.querySelectorAll('tbody tr'); const snowCoeffRows = snowCoeffTable.querySelectorAll('tbody tr'); let slopeVisible = 0; let snowCoeffVisible = 0; slopeRows.forEach(row => { const searchText = row.getAttribute('data-search-text') || ''; if (filter === '' || searchText.indexOf(filter) > -1) { row.style.display = ''; slopeVisible++; } else { row.style.display = 'none'; } }); snowCoeffRows.forEach(row => { const searchText = row.getAttribute('data-search-text') || ''; if (filter === '' || searchText.indexOf(filter) > -1) { row.style.display = ''; snowCoeffVisible++; } else { row.style.display = 'none'; } }); document.getElementById('slopeCount').textContent = slopeVisible; document.getElementById('snowCoeffCount').textContent = snowCoeffVisible; } </script> <?php $htmlContent = ob_get_clean(); // 5. SEO $protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://'; $host = $_SERVER['HTTP_HOST']; $uri = $_SERVER['REQUEST_URI']; $canonicalUrl = $protocol . $host . $uri; $jsonLd = generateHubJsonLd([ 'title' => 'Справочник по кровлям: минимальные уклоны, снеговые коэффициенты | ТЕХСТАНДАРТ', 'description' => 'Таблицы по СП 17.13330.2017: минимальные уклоны кровель для металлочерепицы, профнастила, фальца, рулонных материалов; коэффициенты снеговой нагрузки.', 'url' => $canonicalUrl, 'item_count' => $totalSlopes + $totalSnowCoeffs, 'hub_type' => 'dataset', 'dataset_name' => 'Кровли: уклоны и снеговые коэффициенты', 'source_norms' => ['СП 17.13330.2017 Кровли'], 'spatial_coverage' => 'Россия', 'keywords' => 'минимальный уклон кровли, уклон кровли из профнастила, уклон металлочерепицы, снеговая нагрузка на кровлю, коэффициент формы снега', 'breadcrumb' => [ ['name' => 'Главная', 'url' => '/'], ['name' => 'Справочники', 'url' => '/hubs/'], ['name' => 'Кровли', 'url' => ''], ], 'include_website' => true, 'date_published' => '2024-01-15', 'search_url' => 'https://tech-stc.ru/hub/roofing/?search={search_term_string}', 'tables' => [ [ 'name' => 'Минимальные уклоны кровель', 'description' => 'Минимальные и максимальные уклоны для различных кровельных покрытий', 'citation' => 'СП 17.13330.2017 приложение А', 'rows' => $totalSlopes, 'columns' => 5, ], [ 'name' => 'Снеговые коэффициенты для кровель', 'description' => 'Коэффициенты формы μ, выдувания c_e, теплового сдвига c_t для расчёта снеговой нагрузки', 'citation' => 'СП 17.13330.2017 приложение Б', 'rows' => $totalSnowCoeffs, 'columns' => 5, ], ], 'variable_measured' => [ 'Минимальный уклон (%)', 'Минимальный уклон (градусы)', 'Максимальный уклон (%)', 'Коэффициент формы снега (μ)', 'Коэффициент выдувания (c_e)', 'Коэффициент теплового сдвига (c_t)', ], ]); $pageData = [ 'title' => 'Справочник по кровлям: минимальные уклоны, снеговые коэффициенты | ТЕХСТАНДАРТ', 'description' => 'Таблицы по СП 17.13330.2017: минимальные уклоны кровель для металлочерепицы, профнастила, фальца, рулонных материалов; коэффициенты снеговой нагрузки.', 'h1' => 'Справочник по кровлям', 'content' => $htmlContent, 'breadcrumb' => [ ['name' => 'Главная', 'url' => '/'], ['name' => 'Справочники', 'url' => '/hubs/'], ['name' => 'Кровли', 'url' => ''] ], 'template' => 'default', 'canonical_url' => $canonicalUrl, 'robots' => 'index, follow', 'keywords' => 'минимальный уклон кровли, уклон кровли из профнастила, уклон металлочерепицы, снеговая нагрузка на кровлю, коэффициент формы снега', 'json_ld' => $jsonLd ]; require_once $_SERVER['DOCUMENT_ROOT'] . '/shell/render.php'; renderModule($pageData);
<?php return [ 'title' => 'Умный дом и зелёные технологии | ТЕХСТАНДАРТ', 'description' => 'Калькуляторы для систем умного дома и возобновляемой энергетики: автоматизация, климат-контроль, солнечные панели, энергоэффективность.', 'h1' => 'Умный дом, автоматизация, солнечная энергетика', 'breadcrumb_name' => 'Умный дом и зелёные технологии', 'keywords' => 'умный дом, автоматизация, солнечные панели, энергоэффективность, климат-контроль', 'intro_text' => 'Калькуляторы для систем умного дома: автоматизация освещения, климат-контроль, солнечные панели, энергомониторинг.', 'calculators' => [ // Умный дом ['title' => 'Система умного дома', 'url' => '/engineering-calculators/smart-home-green/smart-home-automation-system-calculator/'], ['title' => 'Мониторинг энергопотребления', 'url' => '/engineering-calculators/smart-home-green/smart-home-energy-monitoring-optimization-calculator/'], ['title' => 'Умная система безопасности', 'url' => '/engineering-calculators/smart-home-green/smart-security-system-sensors-calculator/'], ['title' => 'Умная система полива', 'url' => '/engineering-calculators/smart-home-green/smart-irrigation-with-soil-moisture-sensors-calculator/'], // Климат и вентиляция ['title' => 'Умная вентиляция (CO₂, влажность)', 'url' => '/engineering-calculators/smart-home-green/smart-ventilation-humidity-co2-control-calculator/'], ['title' => 'Климат-контроль в теплице', 'url' => '/engineering-calculators/smart-home-green/smart-greenhouse-climate-control-calculator/'], // Возобновляемая энергия ['title' => 'Солнечные панели (мощность и количество)', 'url' => '/engineering-calculators/smart-home-green/solar-panel-power-and-quantity-calculator/'], ['title' => 'Солнечные коллекторы для ГВС', 'url' => '/engineering-calculators/smart-home-green/solar-water-heater-collectors-calculator/'], ['title' => 'Расчёт энергоэффективности дома', 'url' => '/engineering-calculators/smart-home-green/sustainable-building-leed-breeam-calculator/'], ], ];
<?php $config = require __DIR__ . '/config.php'; require_once __DIR__ . '/../_templates/hub-template.php';
<?php declare(strict_types=1); require_once $_SERVER['DOCUMENT_ROOT'] . '/regulations/lib/loader.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/shell/json-ld-hub-generator.php'; // 1. Загружаем данные из СП 22 $classData = NormLoader::getTable('sp-22-13330-2016', 'appendix-a'); $resistanceData = NormLoader::getTable('sp-22-13330-2016', 'appendix-b'); $soils = []; // 2. Базовый список грунтов из классификации if ($classData && !empty($classData['rows'])) { foreach ($classData['rows'] as $row) { $soilName = trim((string)$row[0]); $soils[$soilName] = [ 'name' => $soilName, 'density' => $row[1] ?? '—', 'friction_angle' => $row[2] ?? '—', 'cohesion' => $row[3] ?? '—', 'deformation_modulus' => $row[4] ?? '—', 'r0_b1_d2' => '—', 'r0_b2_d3' => '—', 'r0_b3_d4' => '—', 'k_coef' => '—', ]; } } // 3. Обогащаем данными сопротивления if ($resistanceData && !empty($resistanceData['rows'])) { foreach ($resistanceData['rows'] as $row) { $soilName = trim((string)$row[0]); if (isset($soils[$soilName])) { $soils[$soilName]['r0_b1_d2'] = $row[1] ?? '—'; $soils[$soilName]['r0_b2_d3'] = $row[2] ?? '—'; $soils[$soilName]['r0_b3_d4'] = $row[3] ?? '—'; $soils[$soilName]['k_coef'] = $row[4] ?? '—'; } } } // 4. Сортируем грунты по типу $order = ['песок', 'супесь', 'суглинок', 'глина']; uksort($soils, function($a, $b) use ($order) { $posA = PHP_INT_MAX; $posB = PHP_INT_MAX; foreach ($order as $idx => $type) { if (stripos($a, $type) !== false) $posA = $idx; if (stripos($b, $type) !== false) $posB = $idx; } return $posA <=> $posB; }); $totalSoils = count($soils); // 5. Генерация HTML ob_start(); ?> <div class="hub-container"> <p class="lead">Справочник грунтов и оснований по СП 22.13330.2016: классификация, физико-механические свойства, расчётное сопротивление R₀ для фундаментов.</p> <!-- Блок калькуляторов --> <div class="card mb-6"> <div class="card__body"> <h3 class="card__title hub-card-title"> Расчёты фундаментов </h3> <div class="btn-group flex-wrap"> <a href="/engineering-calculators/foundations/foundation-calculation-depth-laying/" class="btn btn-primary btn-sm"> Глубина заложения фундамента </a> <a href="/engineering-calculators/foundations/foundation-calculation-tape-foundation/" class="btn btn-outline btn-sm"> Ленточный фундамент </a> <a href="/engineering-calculators/foundations/foundation-calculation-pile-foundation/" class="btn btn-outline btn-sm"> Свайный фундамент </a> </div> </div> </div> <!-- Блок методик расчётов --> <div class="card mb-6"> <div class="card__body"> <h3 class="card__title hub-card-title"> Методики расчётов </h3> <div class="btn-group flex-wrap"> <a href="/guides/foundation/foundation-reinforcement-calculation.php" class="btn btn-outline btn-sm"> Расчёт армирования фундамента </a> <a href="/guides/foundation/concrete-calculation.php" class="btn btn-outline btn-sm"> Расчёт бетона для фундамента </a> <a href="/guides/foundation/blind-area-calculation.php" class="btn btn-outline btn-sm"> Расчёт отмостки </a> <a href="/guides/roof/flat-roof-calculation.php" class="btn btn-outline btn-sm"> Расчёт плоской кровли </a> <a href="/guides/water/water-consumption-calculation.php" class="btn btn-outline btn-sm"> Расчёт водопотребления </a> </div> </div> </div> <!-- Поиск --> <div class="hub-search-box"> <i class="bi bi-search hub-search-icon"></i> <input type="text" id="soilSearch" class="hub-search-input" placeholder="Введите тип грунта..." onkeyup="filterTables()"> </div> <!-- Таблица 1: Классификация грунтов --> <h2 class="mt-5 mb-3">Классификация грунтов (приложение А СП 22.13330)</h2> <div class="table-responsive"> <table class="norm-table" id="classTable"> <thead> <tr> <th>Тип грунта</th> <th class="numeric">Плотность ρ, кг/м³</th> <th class="numeric">Угол трения φ, град</th> <th class="numeric">Сцепление c, кПа</th> <th class="numeric">Модуль деформации E, МПа</th> </tr> </thead> <tbody> <?php foreach ($soils as $soil): ?> <tr data-soil-name="<?= htmlspecialchars($soil['name']) ?>"> <td class="soil-name"><?= htmlspecialchars($soil['name']) ?></td> <td class="numeric"><?= htmlspecialchars($soil['density']) ?></td> <td class="numeric"><?= htmlspecialchars($soil['friction_angle']) ?></td> <td class="numeric"><?= htmlspecialchars($soil['cohesion']) ?></td> <td class="numeric"><?= htmlspecialchars($soil['deformation_modulus']) ?></td> </tr> <?php endforeach; ?> </tbody> </table> </div> <!-- Таблица 2: Расчётное сопротивление R₀ --> <h2 class="mt-5 mb-3">Расчётное сопротивление грунтов R₀ (приложение Б СП 22.13330)</h2> <div class="table-responsive"> <table class="norm-table" id="resistanceTable"> <thead> <tr> <th>Тип грунта</th> <th class="numeric">R₀ при b=1м, d=2м, кПа</th> <th class="numeric">R₀ при b=2м, d=3м, кПа</th> <th class="numeric">R₀ при b=3м, d=4м, кПа</th> <th class="numeric">Коэф. k (b > 6м)</th> </tr> </thead> <tbody> <?php foreach ($soils as $soil): ?> <tr data-soil-name="<?= htmlspecialchars($soil['name']) ?>"> <td class="soil-name"><?= htmlspecialchars($soil['name']) ?></td> <td class="numeric"><?= htmlspecialchars($soil['r0_b1_d2']) ?></td> <td class="numeric"><?= htmlspecialchars($soil['r0_b2_d3']) ?></td> <td class="numeric"><?= htmlspecialchars($soil['r0_b3_d4']) ?></td> <td class="numeric"><?= htmlspecialchars($soil['k_coef']) ?></td> </tr> <?php endforeach; ?> </tbody> </table> </div> <div class="mt-4 text-muted"> * Найдено типов грунтов: <span id="soilCount"><?= $totalSoils ?></span>. Данные по СП 22.13330.2016 (актуализированная версия). </div> </div> <script> function filterTables() { const input = document.getElementById('soilSearch'); const filter = input.value.trim().toLowerCase(); const classTable = document.getElementById('classTable'); const resistanceTable = document.getElementById('resistanceTable'); const classRows = classTable.querySelectorAll('tbody tr'); const resistanceRows = resistanceTable.querySelectorAll('tbody tr'); let visibleCount = 0; // Фильтруем первую таблицу classRows.forEach(row => { const soilNameCell = row.querySelector('td.soil-name'); if (soilNameCell) { const text = soilNameCell.textContent.trim().toLowerCase(); if (filter === '' || text.indexOf(filter) > -1) { row.style.display = ''; visibleCount++; } else { row.style.display = 'none'; } } }); // Фильтруем вторую таблицу (синхронно) resistanceRows.forEach(row => { const soilNameCell = row.querySelector('td.soil-name'); if (soilNameCell) { const text = soilNameCell.textContent.trim().toLowerCase(); if (filter === '' || text.indexOf(filter) > -1) { row.style.display = ''; } else { row.style.display = 'none'; } } }); // Обновляем счётчик document.getElementById('soilCount').textContent = visibleCount; } </script> <?php $htmlContent = ob_get_clean(); // 6. SEO $protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://'; $host = $_SERVER['HTTP_HOST']; $uri = $_SERVER['REQUEST_URI']; $canonicalUrl = $protocol . $host . $uri; $jsonLd = generateHubJsonLd([ 'title' => 'Справочник грунтов и оснований: классификация, расчётное сопротивление R₀ | ТЕХСТАНДАРТ', 'description' => 'Таблицы грунтов по СП 22.13330.2016: классификация песков, супесей, суглинков, глин; расчётное сопротивление R₀ для фундаментов.', 'url' => $canonicalUrl, 'item_count' => $totalSoils, 'hub_type' => 'dataset', 'dataset_name' => 'Грунты Российской Федерации: классификация и расчётное сопротивление', 'source_norms' => ['СП 22.13330.2016 Основания зданий и сооружений'], 'spatial_coverage' => 'Россия', 'keywords' => 'расчётное сопротивление грунта, классификация грунтов, угол внутреннего трения, удельное сцепление, модуль деформации', 'breadcrumb' => [ ['name' => 'Главная', 'url' => '/'], ['name' => 'Справочники', 'url' => '/hubs/'], ['name' => 'Грунты и основания', 'url' => ''], ], 'include_website' => true, 'date_published' => '2024-01-15', 'search_url' => 'https://tech-stc.ru/hub/soil-reference/?search={search_term_string}', 'tables' => [ [ 'name' => 'Классификация грунтов', 'description' => 'Физико-механические свойства грунтов: плотность, угол внутреннего трения, удельное сцепление, модуль деформации', 'citation' => 'СП 22.13330.2016 приложение А', 'rows' => $totalSoils, 'columns' => 5, ], [ 'name' => 'Расчётное сопротивление грунтов R₀', 'description' => 'Нормативные значения сопротивления грунтов при различных ширинах фундамента', 'citation' => 'СП 22.13330.2016 приложение Б', 'rows' => $totalSoils, 'columns' => 5, ], ], 'variable_measured' => [ 'Плотность грунта (кг/м³)', 'Угол внутреннего трения (град)', 'Удельное сцепление (кПа)', 'Модуль деформации (МПа)', 'Расчётное сопротивление R₀ (кПа)', ], ]); $pageData = [ 'title' => 'Справочник грунтов и оснований: классификация, расчётное сопротивление R₀ | ТЕХСТАНДАРТ', 'description' => 'Таблицы грунтов по СП 22.13330.2016: классификация песков, супесей, суглинков, глин; расчётное сопротивление R₀ для фундаментов.', 'h1' => 'Справочник грунтов и оснований', 'content' => $htmlContent, 'breadcrumb' => [ ['name' => 'Главная', 'url' => '/'], ['name' => 'Справочники', 'url' => '/hubs/'], ['name' => 'Грунты и основания', 'url' => ''] ], 'template' => 'default', 'canonical_url' => $canonicalUrl, 'robots' => 'index, follow', 'keywords' => 'расчётное сопротивление грунта, классификация грунтов, угол внутреннего трения, удельное сцепление, модуль деформации', 'json_ld' => $jsonLd ]; require_once $_SERVER['DOCUMENT_ROOT'] . '/shell/render.php'; renderModule($pageData);
<?php return [ 'title' => 'Несущие конструкции и строительная механика | ТЕХСТАНДАРТ', 'description' => 'Калькуляторы для расчёта несущих конструкций: фундаментные плиты, балки, колонны, перекрытия, армирование. Расчёты по СП 63.13330, СП 16.13330, СП 64.13330.', 'h1' => 'Несущие конструкции: балки, колонны, плиты, ростверки', 'breadcrumb_name' => 'Несущие конструкции', 'keywords' => 'несущие конструкции, расчёт балки, фундаментная плита, ростверк, армирование, перекрытие, колонна', 'intro_text' => 'Калькуляторы для расчёта несущих конструкций по нормативам РФ: фундаментные плиты, ростверки, балки, колонны, перекрытия, армирование.', 'calculators' => [ // Фундаменты и ростверки ['title' => 'Фундаментная плита с рёбрами жёсткости', 'url' => '/engineering-calculators/foundations/raft-foundation-with-stiffening-ribs/'], ['title' => 'Ленточный ростверк под сваи', 'url' => '/engineering-calculators/foundations/foundation-beam-calculation/'], // Балки и перекрытия ['title' => 'Деревянная балка перекрытия', 'url' => '/engineering-calculators/timber/wooden-beam-calculator/'], ['title' => 'Стальная балка (двутавр)', 'url' => '/engineering-calculators/metal/steel-beam-calculator/'], ['title' => 'Прогиб балки', 'url' => '/engineering-calculators/structures/beam-deflection-calculator/'], ['title' => 'Монолитное перекрытие', 'url' => '/engineering-calculators/concrete/concrete-slab-calculator/'], // Колонны и армирование ['title' => 'Расчёт колонны железобетонной', 'url' => '/engineering-calculators/concrete/concrete-column-calculator/'], ['title' => 'Расчёт армирования балки', 'url' => '/engineering-calculators/structures/beam-reinforcement-steel-calculator/'], // Лестницы ['title' => 'Расчёт лестницы', 'url' => '/engineering-calculators/stairs/stair-calculator/'], ], ];
<?php $config = require __DIR__ . '/config.php'; require_once __DIR__ . '/../_templates/hub-template.php';
<?php declare(strict_types=1); require_once $_SERVER['DOCUMENT_ROOT'] . '/regulations/lib/loader.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/shell/json-ld-hub-generator.php'; // 1. Загружаем данные из СП 64 $strengthData = NormLoader::getTable('sp-64-13330-2017', 'appendix-a'); $coefficientData = NormLoader::getTable('sp-64-13330-2017', 'appendix-b'); $timberGrades = []; $workCoeffs = []; // 2. Сорта и прочностные характеристики древесины if ($strengthData && !empty($strengthData['rows'])) { foreach ($strengthData['rows'] as $row) { $timberGrades[] = [ 'species' => $row[0] ?? '—', 'grade' => $row[1] ?? '—', 'r_c' => $row[2] ?? '—', 'r_t' => $row[3] ?? '—', 'r_b' => $row[4] ?? '—', 'r_sk' => $row[5] ?? '—', 'e' => $row[6] ?? '—', ]; } } // 3. Коэффициенты условий работы if ($coefficientData && !empty($coefficientData['rows'])) { foreach ($coefficientData['rows'] as $row) { $workCoeffs[] = [ 'condition' => $row[0] ?? '—', 'm' => $row[1] ?? '—', 'notes' => $row[2] ?? '—', ]; } } $totalGrades = count($timberGrades); $totalCoeffs = count($workCoeffs); // 4. Генерация HTML ob_start(); ?> <div class="hub-container"> <p class="lead">Справочник деревянных конструкций по СП 64.13330.2017: расчётные сопротивления древесины различных пород и сортов, коэффициенты условий работы.</p> <!-- Блок калькуляторов --> <div class="card mb-6"> <div class="card__body"> <h3 class="card__title hub-card-title"> Расчёты деревянных конструкций </h3> <div class="btn-group flex-wrap"> <a href="/engineering-calculators/structures/beams-calculator-wooden-beams/" class="btn btn-primary btn-sm"> Расчёт деревянных балок </a> <a href="/engineering-calculators/structures/beams-calculator-glued-beams/" class="btn btn-outline btn-sm"> Клеёные деревянные балки </a> <a href="/engineering-calculators/roofing/roof-calculation-rafters/" class="btn btn-outline btn-sm"> Расчёт стропил </a> </div> </div> </div> <!-- Блок методик расчётов --> <div class="card mb-6"> <div class="card__body"> <h3 class="card__title hub-card-title"> Методики расчётов </h3> <div class="btn-group flex-wrap"> <a href="/guides/foundation/foundation-reinforcement-calculation.php" class="btn btn-outline btn-sm"> Расчёт армирования фундамента </a> <a href="/guides/foundation/concrete-calculation.php" class="btn btn-outline btn-sm"> Расчёт бетона для фундамента </a> <a href="/guides/foundation/blind-area-calculation.php" class="btn btn-outline btn-sm"> Расчёт отмостки </a> <a href="/guides/roof/flat-roof-calculation.php" class="btn btn-outline btn-sm"> Расчёт плоской кровли </a> <a href="/guides/water/water-consumption-calculation.php" class="btn btn-outline btn-sm"> Расчёт водопотребления </a> </div> </div> </div> <!-- Поиск --> <div class="hub-search-box"> <i class="bi bi-search hub-search-icon"></i> <input type="text" id="timberSearch" class="hub-search-input" placeholder="Введите породу древесины или условие..." onkeyup="filterTables()"> </div> <!-- Таблица 1: Сорта и прочностные характеристики --> <h2 class="mt-5 mb-3">Сорта и прочностные характеристики древесины (приложение А СП 64.13330)</h2> <div class="table-responsive"> <table class="norm-table" id="strengthTable"> <thead> <tr> <th>Порода древесины</th> <th>Сорт</th> <th class="numeric">R_c, МПа (сжатие)</th> <th class="numeric">R_t, МПа (растяжение)</th> <th class="numeric">R_b, МПа (изгиб)</th> <th class="numeric">R_sk, МПа (скалывание)</th> <th class="numeric">E, МПа</th> </tr> </thead> <tbody> <?php foreach ($timberGrades as $item): ?> <tr data-search-text="<?= htmlspecialchars(strtolower($item['species'] . ' ' . $item['grade'])) ?>"> <td class="search-cell"><?= htmlspecialchars($item['species']) ?></td> <td><?= htmlspecialchars($item['grade']) ?></td> <td class="numeric"><?= htmlspecialchars($item['r_c']) ?></td> <td class="numeric"><?= htmlspecialchars($item['r_t']) ?></td> <td class="numeric"><?= htmlspecialchars($item['r_b']) ?></td> <td class="numeric"><?= htmlspecialchars($item['r_sk']) ?></td> <td class="numeric"><?= htmlspecialchars($item['e']) ?></td> </tr> <?php endforeach; ?> </tbody> </table> </div> <!-- Таблица 2: Коэффициенты условий работы --> <h2 class="mt-5 mb-3">Коэффициенты условий работы древесины (приложение Б СП 64.13330)</h2> <div class="table-responsive"> <table class="norm-table" id="coeffTable"> <thead> <tr> <th>Условие работы</th> <th class="numeric">Коэффициент m</th> <th>Применение</th> </tr> </thead> <tbody> <?php foreach ($workCoeffs as $item): ?> <tr data-search-text="<?= htmlspecialchars(strtolower($item['condition'])) ?>"> <td class="search-cell"><?= htmlspecialchars($item['condition']) ?></td> <td class="numeric"><?= htmlspecialchars($item['m']) ?></td> <td><?= htmlspecialchars($item['notes']) ?></td> </tr> <?php endforeach; ?> </tbody> </table> </div> <div class="mt-4 text-muted"> * Найдено сортов древесины: <span id="strengthCount"><?= $totalGrades ?></span> | Коэффициентов: <span id="coeffCount"><?= $totalCoeffs ?></span> </div> </div> <script> function filterTables() { const input = document.getElementById('timberSearch'); const filter = input.value.trim().toLowerCase(); const strengthTable = document.getElementById('strengthTable'); const coeffTable = document.getElementById('coeffTable'); const strengthRows = strengthTable.querySelectorAll('tbody tr'); const coeffRows = coeffTable.querySelectorAll('tbody tr'); let strengthVisible = 0; let coeffVisible = 0; strengthRows.forEach(row => { const searchText = row.getAttribute('data-search-text') || ''; if (filter === '' || searchText.indexOf(filter) > -1) { row.style.display = ''; strengthVisible++; } else { row.style.display = 'none'; } }); coeffRows.forEach(row => { const searchText = row.getAttribute('data-search-text') || ''; if (filter === '' || searchText.indexOf(filter) > -1) { row.style.display = ''; coeffVisible++; } else { row.style.display = 'none'; } }); document.getElementById('strengthCount').textContent = strengthVisible; document.getElementById('coeffCount').textContent = coeffVisible; } </script> <?php $htmlContent = ob_get_clean(); // 5. SEO $protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://'; $host = $_SERVER['HTTP_HOST']; $uri = $_SERVER['REQUEST_URI']; $canonicalUrl = $protocol . $host . $uri; $jsonLd = generateHubJsonLd([ 'title' => 'Справочник деревянных конструкций: расчётные сопротивления древесины, коэффициенты условий работы | ТЕХСТАНДАРТ', 'description' => 'Таблицы по СП 64.13330.2017: расчётные сопротивления древесины сосны, ели, лиственницы, дуба по сортам; коэффициенты условий работы m.', 'url' => $canonicalUrl, 'item_count' => $totalGrades + $totalCoeffs, 'hub_type' => 'dataset', 'dataset_name' => 'Древесина: расчётные сопротивления и коэффициенты', 'source_norms' => ['СП 64.13330.2017 Деревянные конструкции'], 'spatial_coverage' => 'Россия', 'keywords' => 'расчётное сопротивление древесины, сорта древесины, модуль упругости древесины, коэффициент условий работы древесины, СП 64', 'breadcrumb' => [ ['name' => 'Главная', 'url' => '/'], ['name' => 'Справочники', 'url' => '/hubs/'], ['name' => 'Древесина', 'url' => ''], ], 'include_website' => true, 'date_published' => '2024-01-15', 'search_url' => 'https://tech-stc.ru/hub/timber/?search={search_term_string}', 'tables' => [ [ 'name' => 'Сорта и прочностные характеристики древесины', 'description' => 'Расчётные сопротивления древесины различных пород и сортов при сжатии, растяжении, изгибе, скалывании', 'citation' => 'СП 64.13330.2017 приложение А', 'rows' => $totalGrades, 'columns' => 7, ], [ 'name' => 'Коэффициенты условий работы древесины', 'description' => 'Коэффициенты m для учёта влажности, температуры, длительности нагрузки и других факторов', 'citation' => 'СП 64.13330.2017 приложение Б', 'rows' => $totalCoeffs, 'columns' => 3, ], ], 'variable_measured' => [ 'Расчётное сопротивление сжатию (R_c)', 'Расчётное сопротивление растяжению (R_t)', 'Расчётное сопротивление изгибу (R_b)', 'Расчётное сопротивление скалыванию (R_sk)', 'Модуль упругости (E)', 'Коэффициент условий работы (m)', ], ]); $pageData = [ 'title' => 'Справочник деревянных конструкций: расчётные сопротивления древесины, коэффициенты условий работы | ТЕХСТАНДАРТ', 'description' => 'Таблицы по СП 64.13330.2017: расчётные сопротивления древесины сосны, ели, лиственницы, дуба по сортам; коэффициенты условий работы m.', 'h1' => 'Справочник деревянных конструкций', 'content' => $htmlContent, 'breadcrumb' => [ ['name' => 'Главная', 'url' => '/'], ['name' => 'Справочники', 'url' => '/hubs/'], ['name' => 'Древесина', 'url' => ''] ], 'template' => 'default', 'canonical_url' => $canonicalUrl, 'robots' => 'index, follow', 'keywords' => 'расчётное сопротивление древесины, сорта древесины, модуль упругости древесины, коэффициент условий работы древесины, СП 64', 'json_ld' => $jsonLd ]; require_once $_SERVER['DOCUMENT_ROOT'] . '/shell/render.php'; renderModule($pageData);
<?php return [ 'title' => 'Водоснабжение и сантехника | ТЕХСТАНДАРТ', 'description' => 'Калькуляторы для систем водоснабжения: расчёт водопотребления, давления, насосные станции, скважины, обратный осмос, защита от протечек.', 'h1' => 'Водоснабжение, насосы, сантехника, очистка воды', 'breadcrumb_name' => 'Водоснабжение и сантехника', 'keywords' => 'водоснабжение, насосная станция, скважина, водопровод, обратный осмос, защита от протечек, сантехника', 'intro_text' => 'Калькуляторы для систем водоснабжения: расчёт водопотребления, давления в трубах, подбор насосных станций, скважин, очистки воды и защиты от протечек.', 'calculators' => [ // Водопотребление и давление ['title' => 'Калькулятор потребления воды на участке', 'url' => '/engineering-calculators/engineering-systems/water-consumption-demand-calculator/'], ['title' => 'Калькулятор водопотребления (суточный)', 'url' => '/engineering-calculators/engineering-systems/water-consumption-calculator/'], ['title' => 'Калькулятор давления в водопроводе', 'url' => '/engineering-calculators/engineering-systems/water-supply-pressure-calculator/'], ['title' => 'Гидравлический расчёт водопровода', 'url' => '/engineering-calculators/engineering-systems/hydraulic-calculation-water-supply/'], ['title' => 'Расчёт потерь воды', 'url' => '/engineering-calculators/engineering-systems/water-loss-calculator/'], ['title' => 'Тепловое расширение трубопровода', 'url' => '/engineering-calculators/engineering-systems/water-supply-pipeline-thermal-expansion/'], // Насосы и станции ['title' => 'Подбор насосной станции', 'url' => '/engineering-calculators/engineering-systems/water-pumping-station-calculator/'], ['title' => 'Автоматизация насосной станции', 'url' => '/engineering-calculators/engineering-systems/smart-water-supply-pumps-calculator/'], // Скважины, колодцы, септики ['title' => 'Объём колодца из бетонных колец', 'url' => '/engineering-calculators/engineering-systems/concrete-rings-for-septic-well-calculator/'], ['title' => 'Расчёт объёма септика', 'url' => '/engineering-calculators/engineering-systems/septic-tank-volume-and-installation-calculator/'], ['title' => 'Сбор дождевой воды', 'url' => '/engineering-calculators/engineering-systems/rainwater-harvesting-system-calculator/'], // Очистка воды ['title' => 'Обратный осмос', 'url' => '/engineering-calculators/engineering-systems/reverse-osmosis-calculator/'], ['title' => 'Обеззараживание воды (хлор, УФ)', 'url' => '/engineering-calculators/engineering-systems/water-disinfection-dosage-calculator/'], // Безопасность ['title' => 'Система защиты от протечек', 'url' => '/engineering-calculators/engineering-systems/water-leak-detection-and-shutoff-system-calculator/'], ], ];
<?php $config = require __DIR__ . '/config.php'; require_once __DIR__ . '/../_templates/hub-template.php';
<?php return [ 'title' => 'Деревянное домостроение и пиломатериалы | ТЕХСТАНДАРТ', 'description' => 'Каталог по деревянному домостроению: срубы, каркасные дома, пиломатериалы, антисептирование, конопатка, сборка. Примеры смет, расчёты расхода, сравнение пород древесины и защитных составов.', 'h1' => 'Деревянное строительство: срубы, каркасники, пиломатериалы, антисептики', 'breadcrumb_name' => 'Деревянное строительство', 'keywords' => 'деревянный дом, сруб, каркасный дом, пиломатериалы, антисептик для дерева, конопатка сруба, брус', 'intro_text' => 'Калькуляторы для деревянного домостроения: расчёт пиломатериалов, объёма бревна, усушки древесины, антисептиков, теплопотерь и конструкций.', 'calculators' => [ ['title' => 'Калькулятор объёма пиломатериалов', 'url' => '/engineering-calculators/wooden/sawn-timber-calculator/'], ['title' => 'Объём оцилиндрованного бревна', 'url' => '/engineering-calculators/wooden/round-timber-volume-calculator/'], ['title' => 'Кубатура доски обрезной', 'url' => '/engineering-calculators/wooden/sawn-timber-calculator/'], ['title' => 'Количество бруса в кубометре', 'url' => '/engineering-calculators/wooden/sawn-timber-calculator/'], ['title' => 'Расчёт леса на сруб', 'url' => '/engineering-calculators/wooden/log-house-materials-calculator/'], ['title' => 'Вес пиломатериалов', 'url' => '/engineering-calculators/wooden/timber-yield-calculator/'], ['title' => 'Расчёт усушки древесины', 'url' => '/engineering-calculators/wooden/wood-shrinkage-calculator/'], ['title' => 'Усадка сруба из бревна', 'url' => '/engineering-calculators/wooden/log-house-materials-calculator/'], ['title' => 'Усадка дома из профилированного бруса', 'url' => '/engineering-calculators/wooden/log-house-materials-calculator/'], ['title' => 'Компенсация усадки в оконных проёмах', 'url' => '/engineering-calculators/wooden/log-house-materials-calculator/'], ['title' => 'Допустимая влажность древесины по СП 64.13330', 'url' => '/engineering-calculators/wooden/wood-moisture-calculator/'], ['title' => 'Теплопотери через деревянные стены', 'url' => '/engineering-calculators/wooden/wooden-walls-heat-loss-calculator/'], ['title' => 'Требуемая толщина бревна по теплопроводности', 'url' => '/engineering-calculators/wooden/log-house-materials-calculator/'], ['title' => 'Теплотехнический расчёт брусового дома', 'url' => '/engineering-calculators/wooden/log-house-materials-calculator/'], ['title' => 'Утепление каркасного дома под дерево', 'url' => '/engineering-calculators/wooden/clt-cross-laminated-timber-house-calculator/'], ['title' => 'Лаги пола из бруса', 'url' => '/engineering-calculators/wooden/wooden-flooring-calculator/'], ['title' => 'Стропильная система крыши', 'url' => '/engineering-calculators/wooden/wooden-stairs-calculator/'], ['title' => 'Обрешётка под металлочерепицу', 'url' => '/engineering-calculators/wooden/wooden-stairs-calculator/'], ['title' => 'Внутренние перегородки из бруса', 'url' => '/engineering-calculators/wooden/log-house-materials-calculator/'], ['title' => 'Балки перекрытия из дерева', 'url' => '/engineering-calculators/wooden/wooden-stairs-calculator/'], ['title' => 'Лестница из дерева', 'url' => '/engineering-calculators/structures/wooden-stairs-calculator/'], ['title' => 'Расход антисептика для древесины', 'url' => '/engineering-calculators/wooden/wood-preservative-calculator/'], ['title' => 'Расход огнебиозащиты', 'url' => '/engineering-calculators/wooden/wood-preservative-calculator/'], ['title' => 'Покраска фасада из дерева', 'url' => '/engineering-calculators/wooden/wood-coating-calculator/'], ['title' => 'Импрегнация древесины', 'url' => '/engineering-calculators/wooden/wood-preservative-calculator/'], ], 'normative_docs' => [], // пусто — не выводим 'guides' => [], // пусто — не выводим 'equipment' => [], // пусто — не выводим ];
<?php $config = require __DIR__ . '/config.php'; require_once __DIR__ . '/../_templates/hub-template.php';