@version(2) @load('./lang') @load('../../assets/narae.css') @load('css/layout.css') @load('js/layout.js') @php $nr = $layout_info; $nr_width = (int)($nr->content_width ?? 1320) ?: 1320; $nr_mode = in_array($nr->color_mode ?? 'light', ['light', 'dark', 'auto'], true) ? $nr->color_mode : 'light'; $nr_toggle = ($nr->mode_toggle ?? 'Y') !== 'N'; $nr_accent = trim((string)($nr->accent_color ?? '')) ?: '#3d5afe'; $nr_accent2 = trim((string)($nr->accent_color_2 ?? '')) ?: '#00c2a8'; if (!preg_match('/^#[0-9a-fA-F]+$/', $nr_accent) || !in_array(strlen($nr_accent), [4, 7, 9], true)) { $nr_accent = '#3d5afe'; } if (!preg_match('/^#[0-9a-fA-F]+$/', $nr_accent2) || !in_array(strlen($nr_accent2), [4, 7, 9], true)) { $nr_accent2 = '#00c2a8'; } // 사용자 정의 언어($user_lang->...)를 쓴 칸은 실제 글로 바꾼다 $nr_arr = (array)$nr; foreach (['logo_text', 'head_cta_text', 'hero_kicker', 'hero_title', 'hero_text', 'hero_btn1_text', 'hero_btn2_text', 'footer_about', 'footer_info', 'copyright'] as $nr_field) { if (!empty($nr_arr[$nr_field])) { $nr_arr[$nr_field] = \Context::replaceUserLang((string)$nr_arr[$nr_field]); } } $nr = (object)$nr_arr; // 채용 모듈과 연결: 회사 · 복리후생 · 공고 · 주소 $nr_rc = null; if (class_exists('\Zittme\Modules\Recruit\Models\Showcase')) { $nr_rc = \Zittme\Modules\Recruit\Models\Showcase::get(trim((string)($nr->recruit_mid ?? '')), 9); } $nr_company = $nr_rc->company ?? null; $nr_jobs_url = $nr_rc->url->jobs ?? getUrl(''); $nr_menu = array_values($gnb->list ?? []); // 페이지 유형: 메뉴 클래스 m(메인) / wide(전체 폭). 없으면 사이트 대문만 메인 $nr_type = 'sub'; $nr_top = null; $nr_cur = null; foreach ($nr_menu as $nr_m) { if (empty($nr_m['selected']) && empty($nr_m['open'])) continue; $nr_top = $nr_m; $nr_cur = $nr_m; foreach ((array)($nr_m['list'] ?? []) as $nr_m2) { if (empty($nr_m2['selected']) && empty($nr_m2['open'])) continue; $nr_cur = $nr_m2; } break; } // 같은 모듈의 다른 화면(act)을 따로 메뉴로 둔 경우: 주소에 그 act 가 든 메뉴를 현재 메뉴로 본다 $nr_act = (string)\Context::get('act'); if ($nr_act !== '') { $nr_hit = null; foreach ($nr_menu as $nr_i => $nr_m) { if (preg_match('/act=' . preg_quote($nr_act, '/') . '(?![A-Za-z0-9_])/', (string)($nr_m['href'] ?? '') . (string)($nr_m['url'] ?? ''))) { $nr_hit = [$nr_i, null]; break; } foreach ((array)($nr_m['list'] ?? []) as $nr_j => $nr_m2) { if (preg_match('/act=' . preg_quote($nr_act, '/') . '(?![A-Za-z0-9_])/', (string)($nr_m2['href'] ?? '') . (string)($nr_m2['url'] ?? ''))) { $nr_hit = [$nr_i, $nr_j]; break 2; } } } if ($nr_hit) { foreach ($nr_menu as $nr_i => $nr_m) { $nr_menu[$nr_i]['selected'] = 0; $nr_menu[$nr_i]['open'] = 0; } $nr_menu[$nr_hit[0]]['selected'] = 1; $nr_top = $nr_menu[$nr_hit[0]]; $nr_cur = $nr_hit[1] === null ? $nr_top : $nr_top['list'][$nr_hit[1]]; } } $nr_class_type = false; foreach ([$nr_cur, $nr_top] as $nr_node) { if (!$nr_node) continue; foreach (preg_split('/\s+/', trim((string)($nr_node['class'] ?? ''))) as $nr_token) { if ($nr_token === 'm') { $nr_type = 'main'; $nr_class_type = true; break 2; } if ($nr_token === 'wide') { $nr_type = 'wide'; $nr_class_type = true; break 2; } } } $nr_module_info = \Context::get('current_module_info'); $nr_site_info = \Context::get('site_module_info'); $nr_home_mid = is_object($nr_site_info) ? (string)($nr_site_info->mid ?? '') : ''; $nr_now_mid = is_object($nr_module_info) ? (string)($nr_module_info->mid ?? '') : ''; if (!$nr_class_type && $nr_home_mid !== '' && $nr_now_mid === $nr_home_mid && !\Context::get('act')) { $nr_type = 'main'; } $nr_system_message = trim((string)(\Context::get('system_message') ?? '')); if ($nr_system_message !== '') { $nr_type = 'sub'; } $nr_is_main = $nr_type === 'main'; $nr_sub_head = $nr->sub_head ?? 'big'; $nr_show_sub = !$nr_is_main && $nr_sub_head !== 'none'; // 로고 $nr_logo_text = trim((string)($nr->logo_text ?? '')) ?: (string)($nr_company->name ?? '') ?: (string)(\Context::getSiteTitle() ?: 'Careers'); $nr_logo = trim((string)($nr->logo_image ?? '')); $nr_logo_dark = trim((string)($nr->logo_image_dark ?? '')) ?: $nr_logo; @endphp
{{ $lang->nr_skip }} @include('_header') @if ($nr_is_main) @include('_hero') @elseif ($nr_show_sub) @include('_sub') @endif
@if ($nr_is_main) @include('_home') @endif @php // 대문에서 위젯 페이지가 빈 껍데기만 내면 본문 칸을 그리지 않는다 $nr_lt = chr(60); $nr_gt = chr(62); $nr_body = preg_replace('/' . $nr_lt . '(script|style)\b[^' . $nr_gt . ']*' . $nr_gt . '.*?' . $nr_lt . '\/\1' . $nr_gt . '|' . $nr_lt . '!--.*?--' . $nr_gt . '/is', '', (string)$content); $nr_body = preg_replace('/' . $nr_lt . 'img[^' . $nr_gt . ']*widget="widgetContent"[^' . $nr_gt . ']*body=""[^' . $nr_gt . ']*' . $nr_gt . '/i', '', $nr_body); $nr_keep = $nr_lt . implode($nr_gt . $nr_lt, ['img', 'iframe', 'video', 'object', 'embed', 'svg', 'form', 'input']) . $nr_gt; $nr_has_body = (bool)preg_match('/[^\s\xC2\xA0]/', strip_tags($nr_body, $nr_keep)); @endphp @if (!$nr_is_main || $nr_has_body)
{!! $content !!}
@endif
@include('_footer')