Основная работа была сфокусирована на серверном рендеринге JSON-LD внутри тега <script type="application/ld+json"> в секции <head> шаблона товара. Разработчики интегрировали логику, которая на основе ID товара запрашивала все необходимые атрибуты из БД и формировала объект JSON-LD:
json
// Псевдокод серверной логики для генерации Product Schema
$productId = $template->getProductId();
$productData = DB::getProductDetails($productId);
$schema = [
"@context" => "https://schema.org",
"@type" => "Product",
"@id" => "https://techcore.com/catalog/" . $productData['url_slug'],
"name" => $productData['product_name'],
"sku" => $productData['sku'],
"gtin" => $productData['barcode'], // Важное поле для ИИ
// ... другие поля
];
Наиболее сложным было гарантировать актуальность поля availability. Была настроена серверная проверка в реальном времени: если складской остаток (stock_qty) был > 0, устанавливалось "InStock". В противном случае — "OutOfStock".
Наш LMS (Learning Management System, в данном случае — система управления отзывами) возвращала данные в виде общего среднего балла и общего числа голосов. Мы создали вложенный объект:
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": $productData['avg_rating'], // e.g., "4.8"
"bestRating": "5",
"reviewCount": $productData['total_reviews']
}
Важное примечание: Мы сознательно не стали размечать отдельные отзывы на странице листинга (что часто приводит к ошибкам), сконцентрировавшись только на агрегированном рейтинге.