featured_cars.blade.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. {{--
  2. Blade-шаблон блока «Витрина автомобилей».
  3. $data:
  4. label — надпись над заголовком
  5. heading — заголовок секции
  6. car_ids — массив ID авто (int[]) в нужном порядке
  7. Рендерит карточки в том порядке, в котором они выбраны в админке.
  8. Запрашивает актуальные данные из БД при каждой сборке HTML для кеша.
  9. --}}
  10. @php
  11. $carIds = array_filter(array_map('intval', $data['car_ids'] ?? []));
  12. // Загружаем авто одним запросом, затем упорядочиваем по выбранному порядку
  13. $carsById = $carIds ? \App\Models\Car::whereIn('id', $carIds)->get()->keyBy('id') : collect();
  14. $orderedCars = collect($carIds)->map(fn ($id) => $carsById->get($id))->filter();
  15. $fuelLabels = ['petrol' => 'Бензин', 'diesel' => 'Дизель', 'hybrid' => 'Гибрид', 'electric' => 'Электро', 'gas' => 'Газ'];
  16. $countryFlags = [
  17. 'Япония' => '🇯🇵', 'Германия' => '🇩🇪', 'США' => '🇺🇸',
  18. 'Южная Корея' => '🇰🇷', 'Китай' => '🇨🇳', 'Швеция' => '🇸🇪',
  19. 'Франция' => '🇫🇷', 'Великобритания' => '🇬🇧', 'Италия' => '🇮🇹',
  20. ];
  21. @endphp
  22. @if ($orderedCars->isNotEmpty())
  23. <section class="cars-section">
  24. <div class="container">
  25. @if (($data['label'] ?? '') || ($data['heading'] ?? ''))
  26. <div class="sh reveal">
  27. @if ($data['label'] ?? '')
  28. <div class="sh-label">{{ $data['label'] }}</div>
  29. @endif
  30. @if ($data['heading'] ?? '')
  31. <h2>{{ $data['heading'] }}</h2>
  32. @endif
  33. </div>
  34. @endif
  35. <div class="cars-scroll stagger">
  36. @foreach ($orderedCars as $car)
  37. @include('pages.partials._car_card', [
  38. 'car' => $car,
  39. 'fuelLabels' => $fuelLabels,
  40. 'countryFlags' => $countryFlags,
  41. ])
  42. @endforeach
  43. </div>
  44. </div>
  45. </section>
  46. @endif