@version(2) @load('css/lodging.css') @load('js/lodging.js') @php // 숙소 유형 표시 이름. 출력식 안에서 동적 속성을 읽지 않도록 여기서 미리 만든다 $ldg_type_labels = [ 'hotel' => $lang->lodging_type_hotel, 'motel' => $lang->lodging_type_motel, 'pension' => $lang->lodging_type_pension, 'guesthouse' => $lang->lodging_type_guesthouse, 'resort' => $lang->lodging_type_resort, ]; $ldg_mid = $module_info->mid; $ldg_today = date('Y-m-d'); $ldg_tomorrow = date('Y-m-d', strtotime('+1 day')); $ldg_in = $checkin !== '' ? substr($checkin, 0, 4) . '-' . substr($checkin, 4, 2) . '-' . substr($checkin, 6, 2) : ''; $ldg_out = $checkout !== '' ? substr($checkout, 0, 4) . '-' . substr($checkout, 4, 2) . '-' . substr($checkout, 6, 2) : ''; $ldg_base = ['mid' => $ldg_mid, 'act' => 'dispLodgingIndex']; if ($stay_type === 'dayuse') { $ldg_base['stay_type'] = 'dayuse'; } if ($checkin !== '') { $ldg_base['checkin'] = $checkin; } if ($checkout !== '' && $stay_type !== 'dayuse') { $ldg_base['checkout'] = $checkout; } if ($person > 0) { $ldg_base['person'] = $person; } if ($q !== '') { $ldg_base['q'] = $q; } if ($sort !== '') { $ldg_base['sort'] = $sort; } if (!function_exists('ldg_chip_url')) { function ldg_chip_url(array $base, array $over): string { $params = array_merge($base, $over); $pairs = []; foreach ($params as $ldg_k => $ldg_v) { if ($ldg_v === '' || $ldg_v === null) { continue; } $pairs[] = rawurlencode($ldg_k) . '=' . rawurlencode((string)$ldg_v); } return getUrl('') . (strpos(getUrl(''), '?') === false ? '?' : '&') . implode('&', $pairs); } } $ldg_sorts = [ '' => $lang->lodging_sort_default, 'price_asc' => $lang->lodging_sort_price_asc, 'price_desc' => $lang->lodging_sort_price_desc, 'rating' => $lang->lodging_sort_rating, 'reviews' => $lang->lodging_sort_reviews, ]; $ldg_date_label = ''; if ($checkin !== '') { $ldg_date_label = $stay_type === 'dayuse' ? zdate($checkin, 'm.d') . ' ' . $lang->lodging_dayuse : zdate($checkin, 'm.d') . ' ~ ' . zdate($checkout, 'm.d') . ' (' . sprintf($lang->lodging_nights, $nights) . ')'; } $ldg_groups = []; $ldg_hero = []; $ldg_region_count = []; $ldg_region_thumb = []; $ldg_has_dayuse = false; if (!$searching) { $ldg_popular = $property_list; usort($ldg_popular, function ($a, $b) { return [$b->review->average, $b->review->count] <=> [$a->review->average, $a->review->count]; }); $ldg_cheap = array_values(array_filter($property_list, function ($p) { return (int)$p->min_price > 0; })); usort($ldg_cheap, function ($a, $b) { return $a->min_price <=> $b->min_price; }); $ldg_dayuse_props = array_values(array_filter($property_list, function ($p) { return !empty($p->has_dayuse); })); $ldg_has_dayuse = count($ldg_dayuse_props) > 0; foreach ($ldg_popular as $ldg_hp) { if ($ldg_hp->thumbnail_url !== '' && count($ldg_hero) < 4) { $ldg_hero[] = $ldg_hp; } } foreach ($property_list as $ldg_rp) { if ($ldg_rp->region === '') { continue; } $ldg_region_count[$ldg_rp->region] = ($ldg_region_count[$ldg_rp->region] ?? 0) + 1; if (!isset($ldg_region_thumb[$ldg_rp->region]) && $ldg_rp->thumbnail_url !== '') { $ldg_region_thumb[$ldg_rp->region] = $ldg_rp->thumbnail_url; } } if (count($ldg_popular)) { $ldg_groups[] = ['title' => $lang->lodging_popular_now, 'desc' => $lang->lodging_popular_now_desc, 'more' => ldg_chip_url($ldg_base, ['sort' => 'rating']), 'items' => array_slice($ldg_popular, 0, 8), 'rail' => true]; } if (count($ldg_cheap)) { $ldg_groups[] = ['title' => $lang->lodging_deals_now, 'desc' => $lang->lodging_deals_now_desc, 'more' => ldg_chip_url($ldg_base, ['sort' => 'price_asc']), 'items' => array_slice($ldg_cheap, 0, 8), 'rail' => true]; } if ($ldg_has_dayuse) { $ldg_groups[] = ['title' => $lang->lodging_dayuse_picks, 'desc' => $lang->lodging_dayuse_picks_desc, 'more' => ldg_chip_url($ldg_base, ['stay_type' => 'dayuse']), 'items' => array_slice($ldg_dayuse_props, 0, 8), 'rail' => true]; } } else { $ldg_groups[] = ['title' => '', 'desc' => '', 'more' => '', 'items' => $property_list, 'rail' => false]; } $ldg_cats = [ ['hotel', $lang->lodging_type_hotel, 'M4 20V8l8-5 8 5v12h-5v-5H9v5H4zm5-9h2V9H9v2zm4 0h2V9h-2v2z'], ['motel', $lang->lodging_type_motel, 'M3 18V7h2v7h6V9h8a3 3 0 0 1 3 3v6h-2v-3H5v3H3zm5-5a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5z'], ['pension', $lang->lodging_type_pension, 'M12 3 2 12h3v8h5v-6h4v6h5v-8h3L12 3z'], ['guesthouse', $lang->lodging_type_guesthouse, 'M4 4h16v16H4V4zm2 2v5h5V6H6zm7 0v5h5V6h-5zM6 13v5h5v-5H6zm7 0v5h5v-5h-5z'], ['resort', $lang->lodging_type_resort, 'M12 2a6 6 0 0 0-6 6c0 4 6 10 6 10s6-6 6-10a6 6 0 0 0-6-6zm0 8.5A2.5 2.5 0 1 1 12 5.5a2.5 2.5 0 0 1 0 5zM4 20h16v2H4z'], ]; @endphp
@if (!$searching)
@foreach ($ldg_hero as $ldg_i => $ldg_hp)
@endforeach
{{ $lang->lodging }} · {{ sprintf($lang->lodging_result_count, $property_total) }}

{{ $lang->lodging_hero_title }}

{{ $lang->lodging_hero_desc }}

@if (count($ldg_hero) > 1)
{{ sprintf($lang->lodging_hero_slide_of, 1, count($ldg_hero)) }}
@endif
@if (!$is_logged) {{ $lang->lodging_signup_coupon_title }}{{ $lang->lodging_signup_coupon_desc }} {{ $lang->lodging_signup_coupon_btn }} @else {{ $lang->lodging_member_benefit_title }}{{ $lang->lodging_member_benefit_desc }} {{ $lang->lodging_benefits }} @endif @else
{{ $lang->lodging_by_type }}
{{ $lang->lodging_type_all }} @foreach (['hotel', 'motel', 'pension', 'guesthouse', 'resort'] as $ldg_t) @if (in_array($ldg_t, $type_list, true)) {{ $ldg_type_labels[$ldg_t] }} @endif @endforeach
@if (count($region_list) > 1)
{{ $lang->lodging_popular_regions }}
{{ $lang->lodging_region_all }} @foreach ($region_list as $ldg_r) {{ $ldg_r }} @endforeach
@endif

{{ sprintf($lang->lodging_result_count, count($property_list)) }} @if ($ldg_date_label !== ''){{ $ldg_date_label }}@if ($person > 0) · {{ sprintf($lang->lodging_person_count, $person) }}@endif@endif

@foreach (array_merge($ldg_base, ['type' => $type, 'region' => $region]) as $ldg_k => $ldg_v) @if ($ldg_k !== 'sort' && $ldg_v !== '')@endif @endforeach {{ $lang->lodging_reset_filter }}
@endif @foreach ($ldg_groups as $ldg_gi => $ldg_g)
@if ($ldg_g['title'] !== '')

{{ $ldg_g['title'] }}

{{ $ldg_g['desc'] }}

{{ $lang->lodging_view_all }}
@endif
@if ($ldg_g['rail'])@endif @if ($ldg_g['rail'])@endif
@if ($ldg_gi === 0 && count($ldg_region_count) > 1)

{{ $lang->lodging_by_region_title }}

@endif @endforeach @if (!$searching) @php $ldg_news_events = []; $ldg_news_notices = []; $ldg_event_info = ModuleModel::getModuleInfoByMid('event'); $ldg_notice_info = ModuleModel::getModuleInfoByMid('notice'); $ldg_today8 = date('Ymd'); if (is_object($ldg_event_info) && !empty($ldg_event_info->module_srl)) { $ldg_ev_out = DocumentModel::getDocumentList((object)['module_srl' => (int)$ldg_event_info->module_srl, 'list_count' => 12, 'sort_index' => 'list_order', 'order_type' => 'asc']); foreach ($ldg_ev_out->toBool() && is_array($ldg_ev_out->data) ? $ldg_ev_out->data : [] as $ldg_evd) { $ldg_ev_s = substr(preg_replace('/[^0-9]/', '', (string)$ldg_evd->getExtraEidValue('event_start')), 0, 8); $ldg_ev_e = substr(preg_replace('/[^0-9]/', '', (string)$ldg_evd->getExtraEidValue('event_end')), 0, 8); if ($ldg_ev_e !== '' && $ldg_today8 > $ldg_ev_e) { continue; } $ldg_news_events[] = ['doc' => $ldg_evd, 'start' => $ldg_ev_s, 'end' => $ldg_ev_e, 'upcoming' => $ldg_ev_s !== '' && $ldg_today8 < $ldg_ev_s]; if (count($ldg_news_events) >= 4) { break; } } usort($ldg_news_events, function ($a, $b) { return (int)$a['upcoming'] <=> (int)$b['upcoming']; }); } if (is_object($ldg_notice_info) && !empty($ldg_notice_info->module_srl)) { $ldg_nt_out = DocumentModel::getDocumentList((object)['module_srl' => (int)$ldg_notice_info->module_srl, 'list_count' => 5, 'sort_index' => 'list_order', 'order_type' => 'asc']); $ldg_news_notices = $ldg_nt_out->toBool() && is_array($ldg_nt_out->data) ? array_values($ldg_nt_out->data) : []; } @endphp @if (count($ldg_news_events) || count($ldg_news_notices))
@if (count($ldg_news_events)) @endif @if (count($ldg_news_notices))

{{ $lang->lodging_notices }}

{{ $lang->lodging_view_all }}
@endif
@endif @endif