{{-- 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())
@if(($data['label'] ?? '') || ($data['heading'] ?? '') || ($data['subtext'] ?? ''))
@if($data['label'] ?? '')
{{ $data['label'] }}
@endif @if($data['heading'] ?? '')

{{ $data['heading'] }}

@endif @if($data['subtext'] ?? '')

{{ $data['subtext'] }}

@endif
@endif
@endif