| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- {{--
- Blade-шаблон блока «Сетка услуг».
- $data:
- label — надпись над заголовком
- heading — заголовок секции
- subtext — описание секции
- service_ids — массив ID конкретных услуг; если пусто — берутся последние N
- limit — максимум услуг при режиме «последние» (по умолчанию 8)
- Теги услуги — ID из таблицы dict_values (раздел countries + service_tags).
- Каждый элемент — ссылка на /services/{slug}.
- --}}
- @php
- use App\Models\DictValue;
- use App\Models\Service;
- $ids = array_filter(array_map('intval', $data['service_ids'] ?? []));
- $limit = max(1, (int) ($data['limit'] ?? 8));
- if (!empty($ids)) {
- $services = Service::active()
- ->whereIn('id', $ids)
- ->orderByRaw('FIELD(id, ' . implode(',', $ids) . ')')
- ->get();
- } else {
- $services = Service::active()
- ->orderBy('sort_order')
- ->orderBy('title')
- ->limit($limit)
- ->get();
- }
- // Собираем все нужные ID тегов одним запросом
- $allTagIds = $services->flatMap(fn ($s) => array_map('intval', $s->tags ?? []))->unique()->filter()->values();
- $tagDict = DictValue::whereIn('id', $allTagIds)->get(['id','value','flag'])
- ->keyBy('id');
- @endphp
- @if($services->isNotEmpty())
- <section class="section sec-alt">
- <div class="container">
- @if(($data['label'] ?? '') || ($data['heading'] ?? '') || ($data['subtext'] ?? ''))
- <div class="sh reveal">
- @if($data['label'] ?? '')
- <div class="sh-label">{{ $data['label'] }}</div>
- @endif
- @if($data['heading'] ?? '')
- <h2>{{ $data['heading'] }}</h2>
- @endif
- @if($data['subtext'] ?? '')
- <p>{{ $data['subtext'] }}</p>
- @endif
- </div>
- @endif
- <div class="svc-grid stagger">
- @foreach($services as $i => $svc)
- <a href="{{ route('services.show', $svc->slug) }}" class="svc-item">
- <div class="svc-n">{{ str_pad($i + 1, 2, '0', STR_PAD_LEFT) }}</div>
- <div class="svc-body">
- <h3>
- @if($svc->icon) {{ $svc->icon }} @endif
- {{ $svc->title }}
- </h3>
- @if($svc->excerpt)
- <p>{{ $svc->excerpt }}</p>
- @endif
- @php $tagIds = array_map('intval', $svc->tags ?? []); @endphp
- @if(!empty($tagIds))
- <div class="svc-tags">
- @foreach($tagIds as $tid)
- @if($tagDict->has($tid))
- <span class="svc-tag">
- {{ $tagDict[$tid]->flag }}
- {{ $tagDict[$tid]->value }}
- </span>
- @endif
- @endforeach
- </div>
- @endif
- </div>
- </a>
- @endforeach
- </div>
- </div>
- </section>
- @endif
|