BMW

* Шаблон страницы BMW с табами для группировки моделей * Группирует модели по: M-серия, BMW i, X, 8-серия, 5, 4, 3, 2 */ // Убеждаемся, что переменные определены if (!isset($subcategories)) { $subcategories = get_terms(array( 'taxonomy' => 'product_cat', 'hide_empty' => false, 'parent' => $category_id, 'orderby' => 'name', 'order' => 'ASC', )); } if (!isset($category_name)) { $category_name = $current_cat->name; } // Группируем модели по категориям - точное соответствие оригиналу cfa-carbon.com $bmw_groups = array( 'M-серия' => array(), 'BMW i' => array(), 'Х' => array(), '8-серия' => array(), '5' => array(), '4' => array(), '3' => array(), '2' => array(), ); // Маппинг моделей по табам (как на оригинале cfa-carbon.com) $tab_mapping = array( // M-серия 'BMW M2 G87' => 'M-серия', 'BMW M3 G80' => 'M-серия', 'BMW M3 G81 Touring' => 'M-серия', 'BMW M4 G82' => 'M-серия', 'BMW M4 G83 Cabrio' => 'M-серия', 'BMW M5 G90' => 'M-серия', 'BMW M5 G99 Touring' => 'M-серия', 'BMW M5 F90 LCI' => 'M-серия', 'BMW M5 F90' => 'M-серия', 'BMW M8 F92 Coupe' => 'M-серия', 'BMW M8 F91 Cabrio' => 'M-серия', 'BMW M8 F93 GC' => 'M-серия', 'BMW XM G09' => 'M-серия', 'BMW X3M LCI F97' => 'M-серия', 'BMW X4M LCI F98' => 'M-серия', 'BMW X5M F95' => 'M-серия', 'BMW X5M F95 LCI' => 'M-серия', 'BMW X6M F96' => 'M-серия', 'BMW X6M F96 LCI' => 'M-серия', // BMW i 'BMW i4 M50' => 'BMW i', // Х-серия 'BMW Х3 G01 LCI' => 'Х', 'BMW Х4 G02 LCI' => 'Х', 'BMW Х5 G05 LCI' => 'Х', 'BMW Х6 G06 LCI' => 'Х', 'BMW X5 G05' => 'Х', 'BMW X6 G06' => 'Х', // 8-серия 'BMW 8 Coupe' => '8-серия', 'BMW 8 Gran Coupe' => '8-серия', // 5-серия 'BMW 5 LCI G30' => '5', // 4-серия 'BMW 4 Coupe' => '4', 'BMW 4 Cabrio' => '4', 'BMW 4 Gran Coupe' => '4', // 3-серия 'BMW G20 LCI' => '3', 'BMW 3 G20' => '3', 'BMW G21 LCI Touring' => '3', // 2-серия 'BMW M2 G42 Coupe' => '2', ); foreach ($subcategories as $subcategory) { $name = $subcategory->name; // Сначала проверяем точное соответствие в маппинге if (isset($tab_mapping[$name])) { $bmw_groups[$tab_mapping[$name]][] = $subcategory; } else { // Fallback логика для новых категорий if (preg_match('/^BMW\s+(M2|M3|M4|M5|M8|XM|X[3-6]M)/i', $name)) { $bmw_groups['M-серия'][] = $subcategory; } elseif (stripos($name, 'i4') !== false || stripos($name, 'i7') !== false || stripos($name, 'iX') !== false) { $bmw_groups['BMW i'][] = $subcategory; } elseif (preg_match('/^BMW\s+[ХX][3-6]\s/i', $name) && !preg_match('/[ХX][3-6]M/i', $name)) { $bmw_groups['Х'][] = $subcategory; } elseif (preg_match('/^BMW\s+8/i', $name) && stripos($name, 'M8') === false) { $bmw_groups['8-серия'][] = $subcategory; } elseif (preg_match('/^BMW\s+5/i', $name) && stripos($name, 'M5') === false && stripos($name, 'X5') === false) { $bmw_groups['5'][] = $subcategory; } elseif (preg_match('/^BMW\s+4/i', $name) && stripos($name, 'M4') === false && stripos($name, 'X4') === false) { $bmw_groups['4'][] = $subcategory; } elseif (preg_match('/^BMW\s+(3|G20|G21)/i', $name) && stripos($name, 'M3') === false && stripos($name, 'X3') === false) { $bmw_groups['3'][] = $subcategory; } elseif (preg_match('/^BMW\s+(2|G42)/i', $name) && stripos($name, 'M2 G87') === false) { $bmw_groups['2'][] = $subcategory; } else { // По умолчанию в M-серию $bmw_groups['M-серия'][] = $subcategory; } } } // Удаляем пустые группы $bmw_groups = array_filter($bmw_groups, function($group) { return !empty($group); }); ?>