\n\n\n\t]+src=["\\']([^"\\']+)["\\']#i', $html, $matches)) {\n\t\t\treturn html_entity_decode(trim($matches[1]), ENT_QUOTES, 'UTF-8');\n\t\t}\n\n\t\treturn '';\n\t}\n\n\tfunction aisort_meta_asset_url($value, $baseUrl) {\n\t\t$value = trim((string) $value);\n\t\tif ($value === '') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (preg_match('#^https?://#i', $value)) {\n\t\t\treturn $value;\n\t\t}\n\n\t\tif (strpos($value, '//') === 0) {\n\t\t\treturn 'https:' . $value;\n\t\t}\n\n\t\tif ($baseUrl === '') {\n\t\t\treturn $value[0] === '/' ? $value : '/' . ltrim($value, '/');\n\t\t}\n\n\t\tif ($value[0] === '/') {\n\t\t\treturn rtrim($baseUrl, '/') . $value;\n\t\t}\n\n\t\treturn rtrim($baseUrl, '/') . '/' . ltrim($value, '/');\n\t}\n\n\tfunction aisort_meta_category_slug($value) {\n\t\t$value = strtolower(trim((string) $value));\n\t\t$value = preg_replace('/[^a-z0-9]+/', '-', $value);\n\t\treturn trim((string) $value, '-');\n\t}\n\n\tfunction aisort_meta_category_label($value) {\n\t\t$value = trim((string) $value);\n\t\tif ($value === '') {\n\t\t\treturn '';\n\t\t}\n\n\t\t$parts = preg_split('/\\-+/', $value);\n\t\t$parts = array_map(function ($part) {\n\t\t\tif ($part === '' ) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tif ($part === strtoupper($part) || strlen($part) <= 3) {\n\t\t\t\treturn strtoupper($part);\n\t\t\t}\n\n\t\t\treturn ucfirst(strtolower($part));\n\t\t}, $parts);\n\n\t\treturn trim(implode(' ', array_filter($parts)));\n\t}\n\n\tfunction aisort_meta_tag_slug($value) {\n\t\treturn aisort_meta_category_slug($value);\n\t}\n\n\tfunction aisort_meta_tag_hidden($value) {\n\t\treturn in_array(aisort_meta_tag_slug($value), array(\n\t\t\t'aisort-insights',\n\t\t\t'aisort-selection-guide',\n\t\t), true);\n\t}\n\n\tfunction aisort_meta_tag_label($value) {\n\t\tswitch (aisort_meta_tag_slug($value)) {\n\t\t\tcase 'sorting-platform-comparison':\n\t\t\t\treturn 'Platform Comparison';\n\t\t\tcase 'optical-sorter-selection':\n\t\t\t\treturn 'Optical Sorter Selection';\n\t\t\tcase 'equipment-renewal-policy':\n\t\t\t\treturn 'Equipment Renewal Policy';\n\t\t\tcase 'green-sorting-center':\n\t\t\t\treturn 'Green Sorting Center';\n\t\t\tcase 'feedstock-quality':\n\t\t\t\treturn 'Feedstock Quality';\n\t\t\tcase 'bottle-to-bottle':\n\t\t\t\treturn 'Bottle-to-Bottle';\n\t\t\tcase 'pet-purity':\n\t\t\t\treturn 'PET Purity';\n\t\t\tcase 'multi-modal-detection':\n\t\t\t\treturn 'Multi-Modal Detection';\n\t\t\tcase 'mixed-plastic-recovery':\n\t\t\t\treturn 'Mixed-Plastic Recovery';\n\t\t\tcase 'multisensor-sorting':\n\t\t\t\treturn 'Multisensor Sorting';\n\t\t\tcase 'compact-sorting':\n\t\t\t\treturn 'Compact Sorting';\n\t\t\tcase 'decentralized-recycling':\n\t\t\t\treturn 'Decentralized Recycling';\n\t\t\tcase 'ai-sorting-center':\n\t\t\t\treturn 'AI Sorting Center';\n\t\t}\n\n\t\treturn aisort_meta_category_label(aisort_meta_tag_slug($value));\n\t}\n\n\tfunction aisort_meta_section_override($page, $baseUrl) {\n\t\t$path = trim((string) $page->path(), '/');\n\t\t$slug = trim((string) $page->slug(), '/');\n\t\t$title = strtolower(aisort_meta_clean_title($page->title()));\n\t\t$supportPatterns = '/(maintenance|installation|spare-parts|service-contract|training|consultation|remote-monitoring|support|service)/';\n\t\t$technologyPatterns = '/(technology|comparison|explained|accuracy|future|trends|certification|specs|calculator|guide)/';\n\n\t\t$solutionSlugs = array(\n\t\t\t'solutions',\n\t\t\t'plastic-recycling-solutions',\n\t\t\t'waste-management-automation',\n\t\t\t'industries-applications',\n\t\t\t'plastic-waste-value-solution',\n\t\t\t'bottle-to-bottle-solution',\n\t\t\t'closed-loop-recycling',\n\t\t\t'small-recycling-plant',\n\t\t\t'medium-recycling-facility',\n\t\t\t'large-scale-sorting-plant',\n\t\t\t'existing-plant-modernization',\n\t\t\t'sorting-system-retrofit',\n\t\t\t'chemical-recycling-sorting',\n\t\t);\n\n\t\t$aboutSlugs = array(\n\t\t\t'about-us',\n\t\t\t'about-aisort',\n\t\t\t'faq',\n\t\t);\n\n\t\t$caseSlugs = array(\n\t\t\t'cases',\n\t\t);\n\n\t\t$supportSlugs = array(\n\t\t\t'service',\n\t\t\t'sorting-machine-maintenance',\n\t\t\t'sorting-machine-installation',\n\t\t\t'spare-parts-global',\n\t\t\t'service-contract',\n\t\t\t'sorting-training',\n\t\t\t'ai-model-training',\n\t\t\t'remote-monitoring',\n\t\t\t'sorting-consultation',\n\t\t);\n\n\t\t$technologySlugs = array(\n\t\t\t'technology',\n\t\t\t'optical-sorter-buying-guide',\n\t\t\t'sorting-technology-comparison',\n\t\t\t'plastic-recycling-technology',\n\t\t\t'ai-sorting-explained',\n\t\t\t'sorting-accuracy-guide',\n\t\t\t'recycling-plant-design',\n\t\t\t'roi-calculator-sorting',\n\t\t\t'sorting-machine-specs',\n\t\t\t'future-sorting-technology',\n\t\t\t'recycling-industry-trends',\n\t\t\t'sorting-machine-certification',\n\t\t\t'export-equipment-guide',\n\t\t);\n\n\t\tif ($slug === 'products' || strpos($path, 'products/') === 0) {\n\t\t\treturn array(\n\t\t\t\t'name' => 'Products',\n\t\t\t\t'url' => aisort_meta_asset_url(URL_PUBLIC . 'products.html', $baseUrl),\n\t\t\t);\n\t\t}\n\n\t\tif (in_array($slug, $solutionSlugs, true)\n\t\t\t|| strpos($slug, 'solution') !== false\n\t\t\t|| strpos($slug, 'recycling-plant') !== false\n\t\t\t|| strpos($slug, 'recycling-facility') !== false\n\t\t\t|| strpos($slug, 'sorting-plant') !== false\n\t\t\t|| strpos($slug, 'retrofit') !== false\n\t\t\t|| strpos($slug, 'modernization') !== false\n\t\t\t|| strpos($slug, 'closed-loop') !== false\n\t\t\t|| strpos($slug, 'chemical-recycling') !== false) {\n\t\t\treturn array(\n\t\t\t\t'name' => 'Solutions',\n\t\t\t\t'url' => aisort_meta_asset_url(URL_PUBLIC . 'solutions.html', $baseUrl),\n\t\t\t);\n\t\t}\n\n\t\tif (in_array($slug, $technologySlugs, true) || (preg_match($technologyPatterns, $slug) && !preg_match($supportPatterns, $slug))) {\n\t\t\treturn array(\n\t\t\t\t'name' => 'Technology',\n\t\t\t\t'url' => aisort_meta_asset_url(URL_PUBLIC . 'technology.html', $baseUrl),\n\t\t\t);\n\t\t}\n\n\t\tif (in_array($slug, $supportSlugs, true) || preg_match($supportPatterns, $slug) || strpos($title, 'support') !== false) {\n\t\t\treturn array(\n\t\t\t\t'name' => 'Support',\n\t\t\t\t'url' => aisort_meta_asset_url(URL_PUBLIC . 'service.html', $baseUrl),\n\t\t\t);\n\t\t}\n\n\t\tif (in_array($slug, $aboutSlugs, true)) {\n\t\t\treturn array(\n\t\t\t\t'name' => 'About',\n\t\t\t\t'url' => aisort_meta_asset_url(URL_PUBLIC . 'about-us.html', $baseUrl),\n\t\t\t);\n\t\t}\n\n\t\tif (in_array($slug, $caseSlugs, true) || strpos($slug, 'case') !== false) {\n\t\t\treturn array(\n\t\t\t\t'name' => 'Cases',\n\t\t\t\t'url' => aisort_meta_asset_url(URL_PUBLIC . 'cases.html', $baseUrl),\n\t\t\t);\n\t\t}\n\n\t\tif (preg_match('/(sorting-machine|sorting-system|sorter|optical-sorter|gantry-robot|disc-screen|evaluation-machine|robot-picking-system|air-jet-sorting-system|tower-optical-sorter|vision-sorter|fusion-sorter|hyperspectral)/', $slug)\n\t\t\t&& !preg_match('/(maintenance|installation|spare-parts|service-contract|training|consultation|supplier|manufacturer|roi|cost|guide|comparison|explained|accuracy|future|trends|certification|specs|calculator)/', $slug)\n\t\t\t&& strpos($title, 'support') === false) {\n\t\t\treturn array(\n\t\t\t\t'name' => 'Products',\n\t\t\t\t'url' => aisort_meta_asset_url(URL_PUBLIC . 'products.html', $baseUrl),\n\t\t\t);\n\t\t}\n\n\t\tif ((strpos($slug, 'recycling-equipment') !== false || strpos($slug, 'equipment') !== false || strpos($slug, 'manufacturer') !== false || strpos($slug, 'supplier') !== false)\n\t\t\t&& !preg_match($supportPatterns, $slug)\n\t\t\t&& !preg_match($technologyPatterns, $slug)\n\t\t\t&& !in_array($slug, $solutionSlugs, true)) {\n\t\t\treturn array(\n\t\t\t\t'name' => 'Products',\n\t\t\t\t'url' => aisort_meta_asset_url(URL_PUBLIC . 'products.html', $baseUrl),\n\t\t\t);\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction aisort_meta_extract_category($html) {\n\t\t$html = (string) $html;\n\t\tif ($html && preg_match('#
\\s*.*?\\s*(.*?)#si', $html, $matches)) {\n\t\t\treturn trim(strip_tags(html_entity_decode($matches[1], ENT_QUOTES, 'UTF-8')));\n\t\t}\n\n\t\treturn '';\n\t}\n\n\tfunction aisort_meta_iso8601($value) {\n\t\t$value = trim((string) $value);\n\t\tif ($value === '') {\n\t\t\treturn '';\n\t\t}\n\n\t\t$timestamp = strtotime($value);\n\t\tif ($timestamp === false) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn date('c', $timestamp);\n\t}\n\n\tfunction aisort_meta_insights_category_image($value) {\n\t\tswitch (aisort_meta_category_slug($value)) {\n\t\t\tcase 'system-design':\n\t\t\t\treturn URL_PUBLIC . 'images/recycling_facility_1774760557012-opt.jpg';\n\t\t\tcase 'technology':\n\t\t\t\treturn URL_PUBLIC . 'images/ai_sorting_robot_1774760543764-opt.jpg';\n\t\t\tcase 'circular-economy':\n\t\t\t\treturn URL_PUBLIC . 'images/plastic_flakes_sorting_1774761211810-opt.jpg';\n\t\t\tcase 'policy-signals':\n\t\t\t\treturn URL_PUBLIC . 'images/j1-opt.png';\n\t\t\tcase 'selection-guide':\n\t\t\t\treturn URL_PUBLIC . 'images/sorting_machine_product_1774761185997-opt.jpg';\n\t\t}\n\n\t\treturn '';\n\t}\n\n\tfunction aisort_meta_clean_title($value) {\n\t\t$value = trim(strip_tags(html_entity_decode((string) $value, ENT_QUOTES, 'UTF-8')));\n\t\tif ($value === '') {\n\t\t\treturn '';\n\t\t}\n\n\t\t$value = preg_replace('/\\s*\\|\\s*AISORT Insights$/', '', $value);\n\t\t$value = preg_replace('/\\s*\\|\\s*Xingyao Robotics$/', '', $value);\n\t\t$value = preg_replace('/\\s*\\|\\s*AISORT$/', '', $value);\n\t\t$value = preg_replace('/^AISORT\\s+/', '', $value);\n\n\t\treturn trim((string) $value);\n\t}\n\n\tfunction aisort_meta_add_breadcrumb(&$items, $name, $url) {\n\t\t$name = trim((string) $name);\n\t\t$url = trim((string) $url);\n\t\tif ($name === '') {\n\t\t\treturn;\n\t\t}\n\n\t\t$last = end($items);\n\t\tif (is_array($last) && isset($last['name'], $last['item']) && $last['name'] === $name && $last['item'] === $url) {\n\t\t\treturn;\n\t\t}\n\n\t\t$items[] = array(\n\t\t\t'name' => $name,\n\t\t\t'item' => $url,\n\t\t);\n\t}\n\n\tfunction aisort_meta_breadcrumb_list($items, $metaUrlRaw) {\n\t\t$list = array();\n\t\tforeach (array_values($items) as $index => $item) {\n\t\t\t$list[] = array(\n\t\t\t\t'@type' => 'ListItem',\n\t\t\t\t'position' => $index + 1,\n\t\t\t\t'name' => $item['name'],\n\t\t\t\t'item' => $item['item'] !== '' ? $item['item'] : $metaUrlRaw,\n\t\t\t);\n\t\t}\n\n\t\treturn array(\n\t\t\t'@type' => 'BreadcrumbList',\n\t\t\t'@id' => $metaUrlRaw . '#breadcrumb',\n\t\t\t'itemListElement' => $list,\n\t\t);\n\t}\n\n\tfunction aisort_meta_extract_faq_items($html) {\n\t\t$html = (string) $html;\n\t\tif ($html === '' || strpos($html, 'faq-answer-card') === false) {\n\t\t\treturn array();\n\t\t}\n\n\t\t$items = array();\n\t\tif (preg_match_all('#
]*>\\s*]*>(.*?)(.*?)
#si', $html, $matches, PREG_SET_ORDER)) {\n\t\t\tforeach ($matches as $match) {\n\t\t\t\t$question = trim(strip_tags(html_entity_decode($match[1], ENT_QUOTES, 'UTF-8')));\n\t\t\t\t$answer = trim(preg_replace('/\\s+/', ' ', strip_tags(html_entity_decode($match[2], ENT_QUOTES, 'UTF-8'))));\n\n\t\t\t\tif ($question === '' || $answer === '') {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t$items[] = array(\n\t\t\t\t\t'@type' => 'Question',\n\t\t\t\t\t'name' => $question,\n\t\t\t\t\t'acceptedAnswer' => array(\n\t\t\t\t\t\t'@type' => 'Answer',\n\t\t\t\t\t\t'text' => $answer,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn $items;\n\t}\n\n\tfunction aisort_meta_extract_product_specs($html) {\n\t\t$html = (string) $html;\n\t\tif ($html === '') {\n\t\t\treturn array();\n\t\t}\n\n\t\t$items = array();\n\t\tif (preg_match_all('#\\s*]*>(.*?)\\s*]*>(.*?)\\s*#si', $html, $matches, PREG_SET_ORDER)) {\n\t\t\tforeach ($matches as $match) {\n\t\t\t\t$name = trim(strip_tags(html_entity_decode($match[1], ENT_QUOTES, 'UTF-8')));\n\t\t\t\t$value = trim(preg_replace('/\\s+/', ' ', strip_tags(html_entity_decode($match[2], ENT_QUOTES, 'UTF-8'))));\n\n\t\t\t\tif ($name === '' || $value === '') {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t$items[] = array(\n\t\t\t\t\t'@type' => 'PropertyValue',\n\t\t\t\t\t'name' => $name,\n\t\t\t\t\t'value' => $value,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn $items;\n\t}\n\n\t$metaTitleRaw = trim($this->title());\n\tif ($metaTitleRaw === '') {\n\t\t$metaTitleRaw = 'AISORT';\n\t}\n\t$metaDescriptionRaw = trim($this->description());\n\tif ($metaDescriptionRaw === '') {\n\t\t$metaDescriptionRaw = 'AISORT industrial optical sorting, spectral sorting and robotic recovery systems from Xingyao Robotics.';\n\t}\n\n\t$requestedCategorySlug = '';\n\t$requestedCategoryLabel = '';\n\t$requestedTagSlug = '';\n\t$requestedTagLabel = '';\n\tif ((int) $this->id() === 4 && isset($_GET['category'])) {\n\t\t$requestedCategorySlug = aisort_meta_category_slug($_GET['category']);\n\t\t$requestedCategoryLabel = aisort_meta_category_label($requestedCategorySlug);\n\t\tif ($requestedCategorySlug !== '' && $requestedCategoryLabel !== '') {\n\t\t\t$metaTitleRaw = $requestedCategoryLabel . ' Insights | AISORT';\n\t\t\t$metaDescriptionRaw = 'Browse AISORT insights filed under ' . $requestedCategoryLabel . ', including sorting system strategy, recovery engineering and circular materials topics.';\n\t\t}\n\t}\n\tif ((int) $this->id() === 4 && isset($_GET['tag'])) {\n\t\t$requestedTagSlug = aisort_meta_tag_slug($_GET['tag']);\n\t\t$requestedTagLabel = aisort_meta_tag_label($requestedTagSlug);\n\t\tif ($requestedTagSlug !== '' && $requestedTagLabel !== '' && !aisort_meta_tag_hidden($requestedTagSlug)) {\n\t\t\t$requestedCategorySlug = '';\n\t\t\t$requestedCategoryLabel = '';\n\t\t\t$metaTitleRaw = $requestedTagLabel . ' Insights | AISORT';\n\t\t\t$metaDescriptionRaw = 'Browse AISORT insights tagged with ' . $requestedTagLabel . ', including sorting line engineering, recovery operations and materials-specific guidance.';\n\t\t} else {\n\t\t\t$requestedTagSlug = '';\n\t\t\t$requestedTagLabel = '';\n\t\t}\n\t}\n\n\t$metaTitle = htmlspecialchars($metaTitleRaw, ENT_QUOTES, 'UTF-8');\n\t$metaDescription = htmlspecialchars($metaDescriptionRaw, ENT_QUOTES, 'UTF-8');\n\t$metaUrlRaw = $this->url();\n\tif ((int) $this->id() === 4) {\n\t\t$metaUrlRaw = URL_PUBLIC . 'articles/';\n\t}\n\t$metaHostRaw = '';\n\tif (!empty($_SERVER['HTTP_X_FORWARDED_HOST'])) {\n\t\t$metaHostParts = explode(',', $_SERVER['HTTP_X_FORWARDED_HOST']);\n\t\t$metaHostRaw = trim($metaHostParts[0]);\n\t}\n\telseif (!empty($_SERVER['HTTP_HOST'])) {\n\t\t$metaHostRaw = $_SERVER['HTTP_HOST'];\n\t}\n\telseif (!empty($_SERVER['SERVER_NAME'])) {\n\t\t$metaHostRaw = $_SERVER['SERVER_NAME'];\n\t}\n\n\t$metaScheme = 'http';\n\tif (!empty($_SERVER['HTTP_X_FORWARDED_PROTO'])) {\n\t\t$metaSchemeParts = explode(',', $_SERVER['HTTP_X_FORWARDED_PROTO']);\n\t\t$metaScheme = trim($metaSchemeParts[0]);\n\t}\n\telseif (!empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off') {\n\t\t$metaScheme = 'https';\n\t}\n\telseif (!empty($_SERVER['REQUEST_SCHEME'])) {\n\t\t$metaScheme = $_SERVER['REQUEST_SCHEME'];\n\t}\n\telseif (!empty($_SERVER['SERVER_PORT']) && (int) $_SERVER['SERVER_PORT'] === 443) {\n\t\t$metaScheme = 'https';\n\t}\n\n\t$metaScheme = strtolower($metaScheme) === 'https' ? 'https' : 'http';\n\t$metaHost = preg_replace('/[^A-Za-z0-9\\.\\-:\\[\\]]/', '', $metaHostRaw);\n\t$metaBaseUrl = $metaHost !== '' ? $metaScheme . '://' . $metaHost : '';\n\tif ($metaHost !== '' && !preg_match('#^https?://#i', $metaUrlRaw)) {\n\t\t$metaUrlRaw = '/' . ltrim($metaUrlRaw, '/');\n\t\t$metaUrlRaw = $metaScheme . '://' . $metaHost . $metaUrlRaw;\n\t}\n\tif ((int) $this->id() === 4 && $requestedTagSlug !== '') {\n\t\t$metaUrlRaw .= (strpos($metaUrlRaw, '?') === false ? '?' : '&') . 'tag=' . rawurlencode($requestedTagSlug);\n\t}\n\telseif ((int) $this->id() === 4 && $requestedCategorySlug !== '') {\n\t\t$metaUrlRaw .= (strpos($metaUrlRaw, '?') === false ? '?' : '&') . 'category=' . rawurlencode($requestedCategorySlug);\n\t}\n\t$metaUrl = htmlspecialchars($metaUrlRaw, ENT_QUOTES, 'UTF-8');\n\t$metaType = (int) $this->parentId() === 4 ? 'article' : 'website';\n\t$articleCategory = (int) $this->parentId() === 4 ? aisort_meta_extract_category((string) $this->content()) : '';\n\t$faqItems = aisort_meta_extract_faq_items((string) $this->content());\n\t$productProperties = aisort_meta_extract_product_specs((string) $this->content());\n\t$isStructuredProductPage = trim((string) $this->slug()) !== 'products'\n\t\t&& ($this->hasContent('product_summary') || strpos((string) $this->content(), 'geo-page-type--product') !== false);\n\t$isStructuredServicePage = strpos((string) $this->content(), 'geo-page-type--service') !== false;\n\t$metaImageRaw = '';\n\tforeach (array('og_image', 'cover_image', 'feature_image', 'hero_image', 'share_image') as $partName) {\n\t\tif ($this->hasContent($partName)) {\n\t\t\t$metaImageRaw = trim(strip_tags(html_entity_decode($this->content($partName), ENT_QUOTES, 'UTF-8')));\n\t\t\tif ($metaImageRaw !== '') {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif ($metaImageRaw === '' && $articleCategory !== '') {\n\t\t$metaImageRaw = aisort_meta_insights_category_image($articleCategory);\n\t}\n\tif ($metaImageRaw === '' && (int) $this->id() === 4 && $requestedCategoryLabel !== '') {\n\t\t$metaImageRaw = aisort_meta_insights_category_image($requestedCategoryLabel);\n\t}\n\tif ($metaImageRaw === '') {\n\t\t$metaImageRaw = aisort_meta_extract_first_image((string) $this->content());\n\t}\n\tif ($metaImageRaw === '') {\n\t\t$metaImageRaw = URL_PUBLIC . 'images/slider-image.jpg';\n\t}\n\t$metaImageUrl = aisort_meta_asset_url($metaImageRaw, $metaBaseUrl);\n\t$metaImage = htmlspecialchars($metaImageUrl, ENT_QUOTES, 'UTF-8');\n\t$metaImageAlt = htmlspecialchars(trim($this->title()) !== '' ? trim($this->title()) . ' | AISORT' : 'AISORT industrial sorting systems', ENT_QUOTES, 'UTF-8');\n\t$organizationId = rtrim(($metaBaseUrl !== '' ? $metaBaseUrl : $metaUrlRaw), '/') . '/#organization';\n\t$websiteId = rtrim(($metaBaseUrl !== '' ? $metaBaseUrl : $metaUrlRaw), '/') . '/#website';\n\t$homeUrl = $metaBaseUrl !== '' ? rtrim($metaBaseUrl, '/') . '/' : '/';\n\t$insightsUrl = aisort_meta_asset_url(URL_PUBLIC . 'articles/', $metaBaseUrl);\n\t$contactPageUrl = aisort_meta_asset_url(URL_PUBLIC . 'contact.html', $metaBaseUrl);\n\t$organizationLogoUrl = aisort_meta_asset_url(URL_PUBLIC . 'images/slider-image.jpg', $metaBaseUrl);\n\t$structuredGraph = array(\n\t\tarray(\n\t\t\t'@type' => 'Organization',\n\t\t\t'@id' => $organizationId,\n\t\t\t'name' => 'AISORT',\n\t\t\t'alternateName' => 'Xingyao Robotics',\n\t\t\t'description' => 'AISORT industrial optical sorting, spectral sorting and robotic recovery systems from Xingyao Robotics.',\n\t\t\t'url' => $metaBaseUrl !== '' ? rtrim($metaBaseUrl, '/') . '/' : $metaUrlRaw,\n\t\t\t'email' => 'sales@aisort.com',\n\t\t\t'telephone' => '+86 185 5109 9969',\n\t\t\t'areaServed' => 'Global',\n\t\t\t'logo' => array(\n\t\t\t\t'@type' => 'ImageObject',\n\t\t\t\t'url' => $organizationLogoUrl,\n\t\t\t),\n\t\t\t'address' => array(\n\t\t\t\t'@type' => 'PostalAddress',\n\t\t\t\t'streetAddress' => 'Building 7, Gongyanhui Tech Park, Wujin High-Tech Zone',\n\t\t\t\t'addressLocality' => 'Changzhou',\n\t\t\t\t'addressRegion' => 'Jiangsu',\n\t\t\t\t'addressCountry' => 'CN',\n\t\t\t),\n\t\t\t'contactPoint' => array(\n\t\t\t\tarray(\n\t\t\t\t\t'@type' => 'ContactPoint',\n\t\t\t\t\t'contactType' => 'sales',\n\t\t\t\t\t'telephone' => '+86 185 5109 9969',\n\t\t\t\t\t'email' => 'sales@aisort.com',\n\t\t\t\t\t'url' => $contactPageUrl,\n\t\t\t\t\t'availableLanguage' => array('en', 'zh'),\n\t\t\t\t),\n\t\t\t),\n\t\t),\n\t\tarray(\n\t\t\t'@type' => 'WebSite',\n\t\t\t'@id' => $websiteId,\n\t\t\t'name' => 'AISORT',\n\t\t\t'alternateName' => 'Xingyao Robotics',\n\t\t\t'url' => $homeUrl,\n\t\t\t'inLanguage' => $__lang,\n\t\t\t'publisher' => array('@id' => $organizationId),\n\t\t)\n\t);\n\t$breadcrumbItems = array();\n\taisort_meta_add_breadcrumb($breadcrumbItems, 'Home', $homeUrl);\n\n\tif ((int) $this->parentId() === 4) {\n\t\t$pdo = new PDO(DB_DSN, DB_USER, DB_PASS);\n\t\t$pageStmt = $pdo->prepare('SELECT created_on, published_on, updated_on FROM wolf_page WHERE id = :id LIMIT 1');\n\t\t$pageStmt->execute(array('id' => (int) $this->id()));\n\t\t$pageMeta = $pageStmt->fetch(PDO::FETCH_ASSOC) ?: array();\n\t\t$articleStructuredData = array(\n\t\t\t'@type' => 'Article',\n\t\t\t'@id' => $metaUrlRaw . '#article',\n\t\t\t'headline' => $metaTitleRaw,\n\t\t\t'description' => $metaDescriptionRaw,\n\t\t\t'url' => $metaUrlRaw,\n\t\t\t'mainEntityOfPage' => array(\n\t\t\t\t'@type' => 'WebPage',\n\t\t\t\t'@id' => $metaUrlRaw,\n\t\t\t),\n\t\t\t'inLanguage' => $__lang,\n\t\t\t'author' => array('@id' => $organizationId),\n\t\t\t'publisher' => array('@id' => $organizationId),\n\t\t);\n\n\t\t$datePublished = aisort_meta_iso8601($pageMeta['published_on'] ?? ($pageMeta['created_on'] ?? ''));\n\t\t$dateModified = aisort_meta_iso8601($pageMeta['updated_on'] ?? ($pageMeta['published_on'] ?? ($pageMeta['created_on'] ?? '')));\n\n\t\tif ($datePublished !== '') {\n\t\t\t$articleStructuredData['datePublished'] = $datePublished;\n\t\t}\n\t\tif ($dateModified !== '') {\n\t\t\t$articleStructuredData['dateModified'] = $dateModified;\n\t\t}\n\t\tif ($articleCategory !== '') {\n\t\t\t$articleStructuredData['articleSection'] = $articleCategory;\n\t\t}\n\t\tif ($metaImageUrl !== '') {\n\t\t\t$articleStructuredData['image'] = array($metaImageUrl);\n\t\t}\n\n\t\t$structuredGraph[] = $articleStructuredData;\n\t\taisort_meta_add_breadcrumb($breadcrumbItems, 'Insights', $insightsUrl);\n\t\tif ($articleCategory !== '') {\n\t\t\taisort_meta_add_breadcrumb($breadcrumbItems, $articleCategory, $insightsUrl . '?category=' . rawurlencode(aisort_meta_category_slug($articleCategory)));\n\t\t}\n\t\taisort_meta_add_breadcrumb($breadcrumbItems, aisort_meta_clean_title($metaTitleRaw), $metaUrlRaw);\n\t}\n\telseif ((int) $this->id() === 4) {\n\t\t$collectionStructuredData = array(\n\t\t\t'@type' => 'CollectionPage',\n\t\t\t'@id' => $metaUrlRaw . '#collection',\n\t\t\t'name' => $metaTitleRaw,\n\t\t\t'description' => $metaDescriptionRaw,\n\t\t\t'url' => $metaUrlRaw,\n\t\t\t'inLanguage' => $__lang,\n\t\t\t'publisher' => array('@id' => $organizationId),\n\t\t);\n\n\t\tif ($requestedTagLabel !== '') {\n\t\t\t$collectionStructuredData['about'] = array(\n\t\t\t\t'@type' => 'Thing',\n\t\t\t\t'name' => $requestedTagLabel,\n\t\t\t);\n\t\t}\n\t\telseif ($requestedCategoryLabel !== '') {\n\t\t\t$collectionStructuredData['about'] = array(\n\t\t\t\t'@type' => 'Thing',\n\t\t\t\t'name' => $requestedCategoryLabel,\n\t\t\t);\n\t\t}\n\t\tif ($metaImageUrl !== '') {\n\t\t\t$collectionStructuredData['image'] = array($metaImageUrl);\n\t\t}\n\n\t\t$structuredGraph[] = $collectionStructuredData;\n\t\taisort_meta_add_breadcrumb($breadcrumbItems, 'Insights', $insightsUrl);\n\t\tif ($requestedTagLabel !== '') {\n\t\t\taisort_meta_add_breadcrumb($breadcrumbItems, $requestedTagLabel, $metaUrlRaw);\n\t\t}\n\t\telseif ($requestedCategoryLabel !== '') {\n\t\t\taisort_meta_add_breadcrumb($breadcrumbItems, $requestedCategoryLabel, $metaUrlRaw);\n\t\t}\n\t}\n\telseif ($this->path() !== '') {\n\t\t$sectionOverride = aisort_meta_section_override($this, $metaBaseUrl);\n\t\tif ($isStructuredProductPage && $sectionOverride && $sectionOverride['name'] === 'Products') {\n\t\t\t$productName = $this->hasContent('product_title') ? trim(strip_tags($this->content('product_title'))) : aisort_meta_clean_title($metaTitleRaw);\n\t\t\t$productSummary = $this->hasContent('product_summary') ? trim(strip_tags($this->content('product_summary'))) : $metaDescriptionRaw;\n\t\t\t$productSchema = array(\n\t\t\t\t'@type' => 'Product',\n\t\t\t\t'@id' => $metaUrlRaw . '#product',\n\t\t\t\t'name' => $productName !== '' ? $productName : aisort_meta_clean_title($metaTitleRaw),\n\t\t\t\t'description' => $productSummary !== '' ? $productSummary : $metaDescriptionRaw,\n\t\t\t\t'url' => $metaUrlRaw,\n\t\t\t\t'brand' => array(\n\t\t\t\t\t'@type' => 'Brand',\n\t\t\t\t\t'name' => 'AISORT',\n\t\t\t\t),\n\t\t\t\t'manufacturer' => array('@id' => $organizationId),\n\t\t\t);\n\n\t\t\tif ($metaImageUrl !== '') {\n\t\t\t\t$productSchema['image'] = array($metaImageUrl);\n\t\t\t}\n\t\t\tif ($productProperties) {\n\t\t\t\t$productSchema['additionalProperty'] = $productProperties;\n\t\t\t}\n\n\t\t\t$structuredGraph[] = $productSchema;\n\t\t}\n\t\telseif (($sectionOverride && $sectionOverride['name'] === 'Solutions') || ($sectionOverride && $sectionOverride['name'] === 'Support' && $isStructuredServicePage)) {\n\t\t\t$serviceName = $this->hasContent('hero_title') ? trim(strip_tags($this->content('hero_title'))) : aisort_meta_clean_title($metaTitleRaw);\n\t\t\t$serviceSummary = $metaDescriptionRaw;\n\t\t\t$serviceSchema = array(\n\t\t\t\t'@type' => 'Service',\n\t\t\t\t'@id' => $metaUrlRaw . '#service',\n\t\t\t\t'name' => $serviceName !== '' ? $serviceName : aisort_meta_clean_title($metaTitleRaw),\n\t\t\t\t'description' => $serviceSummary,\n\t\t\t\t'url' => $metaUrlRaw,\n\t\t\t\t'provider' => array('@id' => $organizationId),\n\t\t\t\t'brand' => array(\n\t\t\t\t\t'@type' => 'Brand',\n\t\t\t\t\t'name' => 'AISORT',\n\t\t\t\t),\n\t\t\t\t'areaServed' => 'Global',\n\t\t\t);\n\n\t\t\tif ($metaImageUrl !== '') {\n\t\t\t\t$serviceSchema['image'] = array($metaImageUrl);\n\t\t\t}\n\n\t\t\t$structuredGraph[] = $serviceSchema;\n\t\t}\n\t\telseif ($sectionOverride && $sectionOverride['name'] === 'Products' && trim((string) $this->slug()) === 'products') {\n\t\t\t$structuredGraph[] = array(\n\t\t\t\t'@type' => 'CollectionPage',\n\t\t\t\t'@id' => $metaUrlRaw . '#collection',\n\t\t\t\t'name' => aisort_meta_clean_title($metaTitleRaw),\n\t\t\t\t'description' => $metaDescriptionRaw,\n\t\t\t\t'url' => $metaUrlRaw,\n\t\t\t\t'inLanguage' => $__lang,\n\t\t\t\t'publisher' => array('@id' => $organizationId),\n\t\t\t);\n\t\t}\n\t\telseif ($sectionOverride && $sectionOverride['name'] === 'Cases' && trim((string) $this->slug()) === 'cases') {\n\t\t\t$structuredGraph[] = array(\n\t\t\t\t'@type' => 'CollectionPage',\n\t\t\t\t'@id' => $metaUrlRaw . '#collection',\n\t\t\t\t'name' => aisort_meta_clean_title($metaTitleRaw),\n\t\t\t\t'description' => $metaDescriptionRaw,\n\t\t\t\t'url' => $metaUrlRaw,\n\t\t\t\t'inLanguage' => $__lang,\n\t\t\t\t'publisher' => array('@id' => $organizationId),\n\t\t\t);\n\t\t}\n\t\telseif (trim((string) $this->slug()) === 'about-us') {\n\t\t\t$structuredGraph[] = array(\n\t\t\t\t'@type' => 'AboutPage',\n\t\t\t\t'@id' => $metaUrlRaw . '#about',\n\t\t\t\t'name' => aisort_meta_clean_title($metaTitleRaw),\n\t\t\t\t'description' => $metaDescriptionRaw,\n\t\t\t\t'url' => $metaUrlRaw,\n\t\t\t\t'inLanguage' => $__lang,\n\t\t\t\t'about' => array('@id' => $organizationId),\n\t\t\t);\n\t\t}\n\t\telseif (trim((string) $this->slug()) === 'contact') {\n\t\t\t$structuredGraph[] = array(\n\t\t\t\t'@type' => 'ContactPage',\n\t\t\t\t'@id' => $metaUrlRaw . '#contact-page',\n\t\t\t\t'name' => aisort_meta_clean_title($metaTitleRaw),\n\t\t\t\t'description' => $metaDescriptionRaw,\n\t\t\t\t'url' => $metaUrlRaw,\n\t\t\t\t'inLanguage' => $__lang,\n\t\t\t\t'about' => array('@id' => $organizationId),\n\t\t\t);\n\t\t}\n\t\tif ($sectionOverride) {\n\t\t\taisort_meta_add_breadcrumb($breadcrumbItems, $sectionOverride['name'], $sectionOverride['url']);\n\t\t\tif (rtrim($sectionOverride['url'], '/') !== rtrim($metaUrlRaw, '/')) {\n\t\t\t\taisort_meta_add_breadcrumb($breadcrumbItems, aisort_meta_clean_title($metaTitleRaw), $metaUrlRaw);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t$parent = $this->parent();\n\t\tif ($parent && (int) $parent->id() > 1) {\n\t\t\taisort_meta_add_breadcrumb($breadcrumbItems, aisort_meta_clean_title($parent->title()), aisort_meta_asset_url($parent->url(), $metaBaseUrl));\n\t\t}\n\n\t\taisort_meta_add_breadcrumb($breadcrumbItems, aisort_meta_clean_title($metaTitleRaw), $metaUrlRaw);\n\t\t}\n\t}\n\n\tif ($faqItems) {\n\t\t$structuredGraph[] = array(\n\t\t\t'@type' => 'FAQPage',\n\t\t\t'@id' => $metaUrlRaw . '#faq',\n\t\t\t'url' => $metaUrlRaw,\n\t\t\t'name' => $metaTitleRaw,\n\t\t\t'inLanguage' => $__lang,\n\t\t\t'mainEntity' => $faqItems,\n\t\t);\n\t}\n\n\tif ($breadcrumbItems) {\n\t\t$structuredGraph[] = aisort_meta_breadcrumb_list($breadcrumbItems, $metaUrlRaw);\n\t}\n\n\t$structuredData = array(\n\t\t'@context' => 'https://schema.org',\n\t\t'@graph' => $structuredGraph,\n\t);\n\t?>\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n \n\n
\n
\n
\n AISORT\n by Xingyao Robotics\n
\n\n \n \n\n \n
\n
\n

Ai Тяжелый Портальный Робот | AISORT

>>

Как использовать эту страницу

>

Практические маркеры соответствия

Фокус страницыAI Heavy Duty Gantry Robot
Типичная рольПоддержка шорт-листа продукции и проверки соответствия
Наилучшее использованиеОценка на раннем этапе перед детальным инженерным анализом
Критерий принятия решенияСырьё, роль в линии, пропускная способность и целевой показатель на последующих этапах
Стиль интеграцииАвтономный модуль или более широкая линейка AISORT
Следующий шагПерейти на страницу продукта, решения, FAQ или примера внедрения на основе уверенности в шорт-листе

Когда не следует использовать эту страницу как единственный ответ

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

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

Часто задаваемые вопросы

Эти краткие ответы призваны помочь покупателям перейти от общего исследования к более чёткому шорт-листу AISORT.

Когда следует использовать эту страницу типа продукта?

Быстрый ответ: используйте её, когда главное решение — стоит ли включать этот класс платформы в шорт-лист для вашего потока и роли в линии.

Страница является инструментом проверки соответствия перед более глубоким инженерным обсуждением.

Что покупатель должен сравнить далее?

Быстрый ответ: сравните роль в линии, сложность потока и цель на последующих этапах с соседними платформами AISORT или страницами решений.

Обычно это более ценно, чем сравнение отдельных характеристик без контекста проекта.

Когда необходима рекомендация с учётом специфики предприятия?

Быстрый ответ: когда шорт-лист сокращён до одного или двух реалистичных маршрутов, а оставшиеся вопросы касаются интеграции, риска или коммерческой целесообразности.

Именно здесь общее содержание перестаёт быть достаточным.

\n\n