@extends('front.layouts.marketplace') @section('title', $seoTitle . ' | Mariachis.co') @section('meta_description', $seoDescription) @section('body_page', 'city') @section('body_class', 'font-sans text-slate-900 antialiased city-viator') @section('content') @push('styles') @endpush @php $isCountry = $mode === 'country'; $isZone = $mode === 'zone'; $isCity = in_array($mode, ['city', 'city_category', 'zone'], true); $countryLabel = $countryName ?: 'Colombia'; $countrySlugValue = $countrySlug ?: \Illuminate\Support\Str::slug($countryLabel); $countryLandingUrl = route('seo.landing.slug', ['slug' => $countrySlugValue]); $citySlugValue = $citySlug ?: ($cityName ? \Illuminate\Support\Str::slug($cityName) : null); $heroContextLabel = $isZone ? 'Zona local' : ($isCountry ? 'Pais' : ($isCity ? 'Ciudad' : 'Categoria')); $heroContextName = $isZone ? ($zoneName ? $zoneName.', '.$cityName : $cityName) : ($cityName ?: ($eventType?->name ?: $countryLabel)); $scopeLabel = $zoneName ?: ($cityName ?: ($eventType?->name ?: $countryLabel)); $currentPath = request()->url(); $resultsDisplay = $totalResults >= 600 ? '600+' : number_format($totalResults, 0, ',', '.'); $activeFilterCount = collect([ $selectedFilters['event'] ?? null, $selectedFilters['city'] ?? null, $selectedFilters['service'] ?? null, $selectedFilters['budget'] ?? null, ])->filter()->count(); $showCityFilter = ! $isCity && ! $isZone && $filterOptions['cities']->isNotEmpty(); @endphp @php $publicFallbackLogoImage = asset('marketplace/assets/logo-wordmark-390.webp'); @endphp

{{ $h1 }}

@if(!empty($subtitle))

{{ $subtitle }}

@endif
@if($showCityFilter)
@endif
Limpiar
@forelse($profiles as $profile) @php $profileName = $profile->business_name ?: $profile->user?->display_name; $photo = $profile->photos->firstWhere('is_featured', true) ?? $profile->photos->first(); $photoUrl = $photo?->urlForVariant('thumb') ?: $publicFallbackLogoImage; $profileUrl = route('mariachi.public.show', ['slug' => $profile->slug]); $coverage = $profile->serviceAreas->pluck('city_name')->take(2)->join(' · '); $priceLabel = $profile->base_price ? 'Desde $'.number_format((float) $profile->base_price, 0, ',', '.') : 'Cotizacion directa'; $isVip = $profile->hasPremiumMarketplaceBadge(); @endphp @empty
No encontramos anuncios en este momento para {{ $heroContextName ?: 'esta zona' }}.
@endforelse
@if($profiles->hasPages())
{{ $profiles->onEachSide(1)->links('vendor.pagination.marketplace') }}
@endif
@if($isCountry)

Exploracion nacional

Ciudades destacadas en {{ $countryLabel }}

Enlaces internos por ciudad para facilitar navegacion y cobertura SEO local.

@if($featuredCountryCities->isNotEmpty())
@foreach($featuredCountryCities as $city) Mariachis en {{ $city['name'] }} ({{ $city['count'] }}) @endforeach
@else
Aun no hay suficientes ciudades publicadas para destacar.
@endif

Cobertura por ciudad

Nuestras ciudades en {{ $countryLabel }}

Indice alfabetico generado automaticamente desde los anuncios activos.

@if($countryCitiesByLetter->isNotEmpty())
@foreach($countryCitiesByLetter as $letter => $cities) @endforeach
@else
No hay ciudades disponibles para construir el indice.
@endif
@elseif($nearbyZones->isNotEmpty() && $citySlugValue)

Exploracion local

Otras zonas cercanas

@if($citySlugValue) Ver toda {{ $cityName }} @endif
@foreach($nearbyZones as $zone) {{ $zone['name'] }} ({{ $zone['count'] }}) @endforeach
@endif

Confianza local

Opiniones en {{ $scopeLabel }}

Resenas publicadas despues de moderacion, con respuesta del proveedor cuando aplica.

@if($cityReviews->isNotEmpty())
@foreach($cityReviews as $review) @php $reviewMariachiName = $review->mariachiListing?->title ?: $review->mariachiProfile?->business_name ?: $review->mariachiProfile?->user?->display_name; $defaultReviewListing = $review->mariachiProfile?->resolveDefaultListing(); $reviewProfileUrl = $review->mariachiListing?->slug ? route('mariachi.public.show', ['slug' => $review->mariachiListing->slug]) : ($defaultReviewListing?->isApprovedForMarketplace() && $defaultReviewListing?->slug ? route('mariachi.public.show', ['slug' => $defaultReviewListing->slug]) : null); @endphp

{{ $review->clientUser?->display_name ?: 'Cliente' }}

{{ $review->created_at->format('Y-m-d') }}

{{ $review->rating }}/5 · {{ str_repeat('★', $review->rating) }}
{{ $review->verification_label }} @if($review->event_type) {{ $review->event_type }} @endif @if($review->event_date) Evento: {{ $review->event_date->format('Y-m-d') }} @endif
@if($review->title)

{{ $review->title }}

@endif

{{ \Illuminate\Support\Str::limit($review->comment, 180) }}

@if($review->photos->isNotEmpty())
@foreach($review->photos->take(3) as $photo) Foto de resena @endforeach
@endif

{{ $reviewMariachiName ?: 'Mariachi' }}

@if($reviewProfileUrl) Abrir perfil @endif
@if($review->mariachi_reply && $review->mariachi_reply_visible)

Respuesta del mariachi

{{ \Illuminate\Support\Str::limit($review->mariachi_reply, 120) }}

@endif
@endforeach
@else

Aun no hay opiniones publicas en este contexto

Las reseñas apareceran aqui cuando sean aprobadas por moderacion.

@endif

Personalizacion

Vistos recientemente

Abrir historial
@if($recentViews->isNotEmpty()) @else

Aun no hay historial reciente en este navegador

Cuando visites otros anuncios activos, apareceran aqui automaticamente.

@endif

Ayuda rapida

Preguntas frecuentes

@foreach($faqItems as $index => $faq)
@endforeach

Visibilidad orgánica

Busquedas populares con datos reales

Bloque reutilizado del home para conectar ciudades, eventos y presupuesto con enlaces internos.

@forelse($popularCities as $city) Mariachis en {{ $city['name'] }} @empty Sin datos suficientes todavia @endforelse

Contenido editorial

Blog filtrado por {{ $scopeLabel }}

Articulos relacionados con ciudad, zona o tipo de evento para reforzar SEO long tail.

Ver blog completo
@if($relatedBlogPosts->isNotEmpty())
@foreach($relatedBlogPosts as $post) @php $cityLabel = $post->primary_city_name ?: ($cityName ?: 'Colombia'); $zoneLabel = $post->primary_zone_name; $eventLabel = $post->eventTypes->pluck('name')->take(2)->join(' · ') ?: ($post->primary_event_type_name ?: 'Blog'); @endphp @endforeach
@else

Aun no hay articulos para este contexto

Cuando publiquemos contenidos locales como "Los mejores mariachis para bodas en {{ $scopeLabel }}", apareceran aqui.

@endif
@endsection @push('scripts') @endpush