// Codex: extended Schema.org for copper GOST/TU landing pages. AddEventHandler('main', 'OnEndBufferContent', 'CodexCopperGostLandingsExtendedSchema'); function CodexCopperGostSchemaPages(): array { return [ 'med-gost-1173-06' => ['name' => 'Медь ГОСТ 1173-06', 'label' => 'ГОСТ 1173-06', 'url' => '/catalog/med/med-gost-1173-06/', 'count' => 10995], 'med-gost-495-92' => ['name' => 'Медь ГОСТ 495-92', 'label' => 'ГОСТ 495-92', 'url' => '/catalog/med/med-gost-495-92/', 'count' => 9016], 'med-gost-1535-2006' => ['name' => 'Медь ГОСТ 1535-2006', 'label' => 'ГОСТ 1535-2006', 'url' => '/catalog/med/med-gost-1535-2006/', 'count' => 3222], 'med-gost-1535-2016' => ['name' => 'Медь ГОСТ 1535-2016', 'label' => 'ГОСТ 1535-2016', 'url' => '/catalog/med/med-gost-1535-2016/', 'count' => 2807], 'med-gost-1173-2006' => ['name' => 'Медь ГОСТ 1173-2006', 'label' => 'ГОСТ 1173-2006', 'url' => '/catalog/med/med-gost-1173-2006/', 'count' => 1940], 'med-gost-434-78' => ['name' => 'Медь ГОСТ 434-78', 'label' => 'ГОСТ 434-78', 'url' => '/catalog/med/med-gost-434-78/', 'count' => 1743], 'med-gost-617-90' => ['name' => 'Медь ГОСТ 617-90', 'label' => 'ГОСТ 617-90', 'url' => '/catalog/med/med-gost-617-90/', 'count' => 1413], 'med-gost-6613-86' => ['name' => 'Медь ГОСТ 6613-86', 'label' => 'ГОСТ 6613-86', 'url' => '/catalog/med/med-gost-6613-86/', 'count' => 1298], 'med-gost-1535-91' => ['name' => 'Медь ГОСТ 1535-91', 'label' => 'ГОСТ 1535-91', 'url' => '/catalog/med/med-gost-1535-91/', 'count' => 1255], 'med-gost-20707-2015' => ['name' => 'Медь ГОСТ 20707-2015', 'label' => 'ГОСТ 20707-2015', 'url' => '/catalog/med/med-gost-20707-2015/', 'count' => 1216], 'med-tu-1844-021-00195363-2000' => ['name' => 'Медь ТУ 1844-021-00195363-2000', 'label' => 'ТУ 1844-021-00195363-2000', 'url' => '/catalog/med/med-tu-1844-021-00195363-2000/', 'count' => 925], 'med-gost-10988-75' => ['name' => 'Медь ГОСТ 10988-75', 'label' => 'ГОСТ 10988-75', 'url' => '/catalog/med/med-gost-10988-75/', 'count' => 873], 'med-gost-1535-2016-13' => ['name' => 'Медь ГОСТ 1535-2016', 'label' => 'ГОСТ 1535-2016', 'url' => '/catalog/med/med-gost-1535-2016-13/', 'count' => 869], 'med-tu-48-21-164-83' => ['name' => 'Медь ТУ 48-21-164-83', 'label' => 'ТУ 48-21-164-83', 'url' => '/catalog/med/med-tu-48-21-164-83/', 'count' => 852], 'med-gost-1173-93' => ['name' => 'Медь ГОСТ 1173-93', 'label' => 'ГОСТ 1173-93', 'url' => '/catalog/med/med-gost-1173-93/', 'count' => 730], ]; } function CodexCopperGostSchemaSortament(): array { return [ ['name' => 'медный лист', 'url' => '/catalog/mednyy_list/'], ['name' => 'медная лента', 'url' => '/catalog/mednaya_lenta/'], ['name' => 'медная труба', 'url' => '/catalog/truba_mednaya/'], ['name' => 'медный круг', 'url' => '/catalog/mednyy_krug/'], ['name' => 'медный пруток', 'url' => '/catalog/mednyy_prutok/'], ['name' => 'медная проволока', 'url' => '/catalog/mednaya_provoloka/'], ['name' => 'медная шина', 'url' => '/catalog/mednaya_shina/'], ['name' => 'медная плита', 'url' => '/catalog/mednaya_plita/'], ['name' => 'медная полоса', 'url' => '/catalog/mednaya_polosa/'], ['name' => 'медная фольга', 'url' => '/catalog/mednaya_folga/'], ]; } function CodexCopperGostLandingsExtendedSchema(&$content): void { if (!is_string($content) || $content === '' || strpos($content, 'data-codex-schema="copper-gost-extended"') !== false) return; $path = (string)($_SERVER['CODEX_COPPER_MARK_PROXY_PATH'] ?? parse_url((string)($_SERVER['REQUEST_URI'] ?? ''), PHP_URL_PATH)); $path = rtrim($path, '/') . '/'; if (!preg_match('#^/catalog/med/([^/]+)/$#', $path, $m)) return; $pages = CodexCopperGostSchemaPages(); if (empty($pages[$m[1]])) return; $page = $pages[$m[1]]; $url = CodexCopperMarkSchemaAbs($path); $host = 'https://' . CodexCopperMarkSchemaHost(); $sortament = CodexCopperGostSchemaSortament(); $related = array_values($pages); $related = array_values(array_filter($related, static function($item) use ($page) { return $item['label'] !== $page['label']; })); $related = array_slice($related, 0, 12); $graph = [ ['@type' => 'CollectionPage', '@id' => $url . '#collection', 'url' => $url, 'name' => $page['name'], 'isPartOf' => ['@type' => 'CollectionPage', '@id' => $host . '/catalog/med/#collection', 'name' => 'Медь'], 'about' => ['@id' => $url . '#standard'], 'mainEntity' => ['@id' => $url . '#offer-catalog']], ['@type' => 'DefinedTerm', '@id' => $url . '#standard', 'name' => $page['label'], 'termCode' => $page['label'], 'inDefinedTermSet' => ['@type' => 'DefinedTermSet', 'name' => 'ГОСТ и ТУ для меди']], ['@type' => 'OfferCatalog', '@id' => $url . '#offer-catalog', 'name' => 'Медный прокат ' . $page['label'], 'numberOfItems' => (int)$page['count'], 'itemListElement' => array_map(static function($item) { return ['@type' => 'OfferCatalog', 'name' => $item['name'], 'url' => CodexCopperMarkSchemaAbs($item['url'])]; }, $sortament)], CodexCopperMarkSchemaItemList($url . '#sortament', 'Сортамент меди ' . $page['label'], $sortament), CodexCopperMarkSchemaItemList($url . '#related-gosts', 'Связанные ГОСТ и ТУ', $related), ['@type' => 'HowTo', '@id' => $url . '#howto', 'name' => 'Как заказать медь ' . $page['label'], 'step' => [['@type' => 'HowToStep', 'name' => 'Указать норматив', 'text' => 'Укажите ' . $page['label'] . ' или приложите спецификацию.'], ['@type' => 'HowToStep', 'name' => 'Выбрать материал', 'text' => 'Укажите марку меди, форму проката, размер и количество.'], ['@type' => 'HowToStep', 'name' => 'Получить расчет', 'text' => 'Передайте требования к сертификатам, резке и доставке.']]], ['@type' => 'FAQPage', '@id' => $url . '#faq', 'mainEntity' => [ ['@type' => 'Question', 'name' => 'Почему товары по ' . $page['label'] . ' вынесены отдельно?', 'acceptedAnswer' => ['@type' => 'Answer', 'text' => 'Так проще выбрать медный прокат по нормативу из карточки товара.']], ['@type' => 'Question', 'name' => 'Можно ли заменить ' . $page['label'] . ' другим нормативом?', 'acceptedAnswer' => ['@type' => 'Answer', 'text' => 'Замену согласовывают по чертежу, марке меди, форме проката, условиям эксплуатации и документам качества.']], ['@type' => 'Question', 'name' => 'Что влияет на цену меди по ' . $page['label'] . '?', 'acceptedAnswer' => ['@type' => 'Answer', 'text' => 'Цена зависит от формы проката, марки, размера, массы партии, наличия, состояния поставки, резки, упаковки, сертификатов и доставки.']], ]], ]; $script = ''; if (stripos($content, '') !== false) $content = preg_replace('##i', $script . "\n", $content, 1); } ?>
[RuntimeException] Could not start session because headers have already been sent. "/var/www/www-root/data/www/oboronspecsplav.ru/local/php_interface/codex_copper_mark_landings_schema.php":113. (0) /var/www/www-root/data/www/oboronspecsplav.ru/bitrix/modules/main/lib/session/session.php:143 #0: Bitrix\Main\Session\Session->start /var/www/www-root/data/www/oboronspecsplav.ru/bitrix/modules/main/lib/session/kernelsessionproxy.php:47 #1: Bitrix\Main\Session\KernelSessionProxy->start /var/www/www-root/data/www/oboronspecsplav.ru/bitrix/modules/main/include.php:182 #2: require_once(string) /var/www/www-root/data/www/oboronspecsplav.ru/bitrix/modules/main/include/prolog_before.php:19 #3: require_once(string) /var/www/www-root/data/www/oboronspecsplav.ru/bitrix/modules/main/include/prolog.php:10 #4: require_once(string) /var/www/www-root/data/www/oboronspecsplav.ru/bitrix/header.php:1 #5: require(string) /var/www/www-root/data/www/oboronspecsplav.ru/marochnik/index.php:3 #6: include_once(string) /var/www/www-root/data/www/oboronspecsplav.ru/bitrix/modules/main/include/urlrewrite.php:128 #7: include_once(string) /var/www/www-root/data/www/oboronspecsplav.ru/bitrix/urlrewrite.php:2 ----------