2026-08-07 11:52:31 +00:00

269 lines
16 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
// ─── HERO: начальная школа ───
if (! defined('ABSPATH')) {
exit;
}
// ─── Данные филиала ───
$branch_phone = get_option('branch_phone') ?: crb_get_theme_option('site_phone');
$branch_city = get_option('branch_city') ?: crb_get_theme_option('site_city', 'Щёлково');
$branch_city_prep = get_option('branch_city_prep', 'в Щёлково');
$branch_addr = get_option('branch_address') ?: crb_get_theme_option('site_address');
// ─── Учебный год ───
$current_year = (int) current_time('Y');
$next_year = $current_year + 1;
$school_year = $current_year . '/' . $next_year;
// ─── Данные страницы ───
$post_id = (int) get_the_ID();
$foto_id = crb_get_post_meta($post_id, 'banner_img_desktop');
$banner_src = '';
$banner_alt = 'Начальная школа Декарт' . ( $branch_city ? ' в ' . $branch_city : '' );
if ($foto_id) {
$foto_id = absint($foto_id);
$banner_src = wp_get_attachment_url($foto_id);
$_alt = get_post_meta($foto_id, '_wp_attachment_image_alt', true);
if ($_alt) {
$banner_alt = $_alt;
}
}
// ─── Статистика (CF hero_stats) ───
$hero_stats = crb_get_post_meta($post_id, 'hero_stats');
if (empty($hero_stats) || ! is_array($hero_stats)) {
$hero_stats = [
[ 'stat_number' => 'до 15', 'stat_label' => 'человек в классе' ],
[ 'stat_number' => '1–4', 'stat_label' => 'классы начальной школы' ],
[ 'stat_number' => 'с 1 кл.', 'stat_label' => 'английский язык' ],
];
}
// ─── Звёзды рейтинга ───
$star_svg = '<svg width="18" height="18" viewBox="0 0 20 20" fill="none"><path d="M10 1l2.39 4.84 5.34.78-3.87 3.77.92 5.34L10 13.27l-4.78 2.51.92-5.34L2.27 6.6l5.34-.78L10 1z" fill="currentColor"/></svg>';
// ─── Плашки (CF school_hero_floats) ───
$floats = crb_get_post_meta($post_id, 'school_hero_floats');
if (empty($floats) || ! is_array($floats)) {
$floats = [
[ 'icon' => 'teacher', 'text' => 'Педагоги с опытом от 10 лет' ],
[ 'icon' => 'users', 'text' => 'Малокомплектные классы — до 15 человек' ],
[ 'icon' => 'clock', 'text' => 'Уроки до 13:00, продлёнка до 19:00' ],
];
}
// ─── Пункты доверия (CF school_hero_assurance) ───
$assurance = crb_get_post_meta($post_id, 'school_hero_assurance');
if (empty($assurance) || ! is_array($assurance)) {
$assurance = [
[ 'text' => 'Можно просто прийти и посмотреть' ],
[ 'text' => 'Бесплатное тестирование ребёнка' ],
];
}
// ─── Телефон ───
$phone_clean = $branch_phone ? preg_replace('/[\s\-\–\(\)]/', '', $branch_phone) : '';
// ─── Свободные места ───
$remaining_seats = (int) get_option('branch_remaining_seats', 0);
// ─── Мессенджеры ───
$branch_messengers = array();
$msg_wa_url = get_option('branch_messenger_whatsapp', '');
$msg_tg_url = get_option('branch_messenger_telegram', '');
$msg_max_url = get_option('branch_messenger_max', '');
$msg_wa_on = (bool) get_option('branch_messenger_whatsapp_on', 1);
$msg_tg_on = (bool) get_option('branch_messenger_telegram_on', 1);
$msg_max_on = (bool) get_option('branch_messenger_max_on', 1);
if ($msg_wa_on && $msg_wa_url) {
$branch_messengers[] = array( 'name' => 'WhatsApp', 'url' => $msg_wa_url );
}
if ($msg_tg_on && $msg_tg_url) {
$branch_messengers[] = array( 'name' => 'Telegram', 'url' => $msg_tg_url );
}
if ($msg_max_on) {
$branch_messengers[] = array( 'name' => 'Max', 'url' => $msg_max_url ?: '#' );
}
$extra_msgs = get_option('branch_messenger_extra', array());
if (! empty($extra_msgs) && is_array($extra_msgs)) {
foreach ($extra_msgs as $em) {
if (! empty($em['url'])) {
$branch_messengers[] = array( 'name' => $em['name'] ?? '', 'url' => $em['url'] );
}
}
}
?><section class="section-bg ds-hero" data-bg="hero" id="hero-school" aria-labelledby="hero-school-title">
<div class="ds-container">
<div class="ds-hero__inner">
<div class="ds-hero__content">
<nav class="ds-breadcrumbs" aria-label="Хлебные крошки">
<a href="<?php echo esc_url(home_url('/')); ?>">Главная</a>
<span aria-hidden="true">/</span>
<span class="ds-breadcrumbs__current">Начальная школа</span>
</nav>
<?php if ($branch_addr || $branch_city) : ?>
<div class="ds-hero__address">
<svg aria-hidden="true" width="16" height="16"><use href="#icon-location-pin"/></svg>
<span><?php echo esc_html(trim($branch_addr . ( $branch_addr && $branch_city ? ' — ' : '' ) . $branch_city)); ?></span>
<?php $branch_hours = get_option('branch_hours'); if ($branch_hours) : ?>
<span class="ds-hero__hours-badge"><svg aria-hidden="true" width="16" height="16"><use href="#icon-clock"/></svg> <?php echo esc_html($branch_hours); ?></span>
<?php endif; ?>
</div>
<?php endif; ?>
<h1 id="hero-school-title" class="ds-hero__h1"><?php echo esc_html(crb_get_post_meta($post_id, 'banner_h1', 'Начальная школа «Декарт» — 1–4 классы ' . $branch_city_prep)); ?></h1>
<?php
// ─── Подзаголовок (CF school_hero_subtitle) ───
$hero_subtitle = crb_get_post_meta(
$post_id,
'school_hero_subtitle',
'<strong>Мини-классы до 15 учеников</strong>, английский <strong>с 1 класса</strong> и продлёнка до 19:00. Официальное прикрепление к московской школе — аттестат государственного образца.'
);
?>
<p class="ds-hero__subtitle"><?php echo wp_kses_post($hero_subtitle); ?><br><br>Открыт набор на <span class="ds-hero__year"><?php echo esc_html($school_year); ?></span> учебный год в 1–4 классы.</p>
<?php if (! empty($floats)) : ?>
<div class="ds-hero__mobile-usps">
<?php foreach ($floats as $float) : ?>
<span class="ds-hero__mobile-usp">
<svg aria-hidden="true" width="18" height="18"><use href="#icon-<?php echo esc_attr($float['icon']); ?>"/></svg>
<span><?php echo esc_html($float['text']); ?></span>
</span>
<?php endforeach; ?>
</div>
<?php endif; ?>
<?php if ($hero_stats) : ?>
<div class="ds-hero__metrics">
<?php foreach ($hero_stats as $stat) :
$num = $stat['stat_number'] ?? '';
$lbl = $stat['stat_label'] ?? '';
if ('' === $num) {
continue;
}
?>
<div class="ds-hero__metric reveal">
<span class="ds-hero__metric-number"><?php echo esc_html($num); ?></span>
<span class="ds-hero__metric-label"><?php echo esc_html($lbl); ?></span>
</div>
<?php endforeach; ?>
</div>
<?php endif; ?>
<div class="ds-hero__rating-badge">
<span class="ds-hero__rating-stars" aria-hidden="true">
<?php for ($i = 1; $i <= 5; $i++) : ?>
<span class="ds-star ds-star--<?php echo esc_attr($i); ?>"><?php echo wp_kses($star_svg, array( 'svg' => array( 'width' => array(), 'height' => array(), 'viewBox' => array(), 'fill' => array() ), 'path' => array( 'd' => array(), 'fill' => array() ) )); ?></span>
<?php endfor; ?>
</span>
<span class="ds-hero__rating-text"><?php echo esc_html(get_option('branch_rating_text', '4.9 из 5 на основе 190 отзывов на внешних площадках')); ?></span>
</div>
<?php
$rating_ya = get_option('branch_rating_yandex', '');
$rating_2gis = get_option('branch_rating_2gis', '');
if ($rating_ya || $rating_2gis) :
?>
<div class="ds-hero__social-proof">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/></svg>
<span>Лучшая частная школа <?php echo esc_html($branch_city ?: 'Щёлково'); ?> по версии Яндекс.Карт (<?php echo esc_html($rating_ya ?: '5.0'); ?>) <span class="ds-hero__rating-nowrap">и 2GIS (<?php echo esc_html($rating_2gis ?: '4.7'); ?>)</span></span>
</div>
<?php endif; ?>
<?php if ($remaining_seats > 0) : ?>
<div class="ds-hero__seats">Осталось <strong><?php echo esc_html($remaining_seats); ?></strong> мест в 1 класс — успейте записаться!</div>
<?php endif; ?>
<button class="ds-hero__cta-btn btn-write open-bitrix-form">
<?php echo esc_html(crb_get_post_meta($post_id, 'school_cta_label', 'Записаться на экскурсию')); ?>
</button>
<noscript>
<div class="ds-hero__cta-fallback">
Позвоните: <a href="tel:<?php echo esc_attr($phone_clean ?: '+74951200078'); ?>"><?php echo esc_html($branch_phone ?: '+7 (495) 120-00-78'); ?></a>
</div>
</noscript>
<div class="ds-hero__assurance">
<?php foreach ($assurance as $ass_item) :
$ass_text = $ass_item['text'] ?? '';
if (! $ass_text) {
continue;
}
?>
<span class="ds-hero__assurance-item"><?php echo esc_html($ass_text); ?></span>
<?php endforeach; ?>
</div>
<?php if ($branch_phone && $phone_clean) : ?>
<p class="ds-hero__phone">Или позвоните: <a href="tel:<?php echo esc_attr($phone_clean); ?>" aria-label="Позвонить в школу Декарт: <?php echo esc_attr($branch_phone); ?>"><?php echo esc_html($branch_phone); ?></a></p>
<?php endif; ?>
<?php if (! empty($branch_messengers)) : ?>
<div class="ds-hero__messengers">
<?php foreach ($branch_messengers as $m) :
$m_name = $m['name'] ?? '';
$m_url = $m['url'] ?? '';
if (! $m_url) {
continue;
}
$m_lower = mb_strtolower($m_name);
$is_wa = mb_strpos($m_url, 'wa.me') !== false || $m_lower === 'whatsapp';
$is_tg = mb_strpos($m_url, 't.me') !== false || $m_lower === 'telegram';
$msg_slug = $is_wa ? 'wa' : ( $is_tg ? 'tg' : 'other' );
?>
<a class="ds-hero__msg ds-hero__msg--<?php echo esc_attr($msg_slug); ?>"
href="<?php echo esc_url($m_url); ?>"
target="_blank" rel="noopener noreferrer"
aria-label="<?php echo esc_attr($m_name); ?>">
<svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
<?php if ($is_wa) : ?>
<path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 0 1-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 0 1-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 0 1 2.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0 0 12.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 0 0 5.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 0 0-3.48-8.413"/>
<?php elseif ($is_tg) : ?>
<path d="M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 1.698 6.147L.02 24l6.469-1.796A12 12 0 0 0 12 24a12 12 0 0 0 12-12A12 12 0 0 0 12 0zm7.502 17.21a7.498 7.498 0 0 1-1.356.807 8.486 8.486 0 0 1-1.82.6 7.44 7.44 0 0 1-2.266.13c-2.09-.27-4.082-1.05-5.61-2.103a18.57 18.57 0 0 1-3.967-3.751A14.8 14.8 0 0 1 2.8 6.106a7.68 7.68 0 0 1 .93-2.905 5.26 5.26 0 0 1 1.08-1.426c.078-.08.157-.149.246-.215.113-.081.226-.161.343-.226.397-.214.838-.221 1.252-.101.21.06.415.139.607.23.285.137.568.278.84.435.09.05.173.115.252.176.326.252.52.572.656.946.08.22.132.448.155.68.053.539.05 1.078-.003 1.611a4.12 4.12 0 0 1-.246.873 5.38 5.38 0 0 1-.34.715c-.104.172-.226.333-.387.446a3.09 3.09 0 0 0-.418.377c-.137.17-.139.375-.028.549a13.482 13.482 0 0 0 1.474 2.005c.018.018.036.035.054.053a13.659 13.659 0 0 0 2.058 1.603c.214.133.398.08.55-.067a4.37 4.37 0 0 1 .902-.72c.397-.24.778-.186 1.125.12.334.294.661.596.983.903.204.195.404.394.589.607.031.036.053.078.077.112a1.81 1.81 0 0 1 .324.603c.062.184.09.375.062.565a2.63 2.63 0 0 1-.218.68 4.98 4.98 0 0 1-.346.639.977.977 0 0 1-.333.322c-.233.148-.479.266-.72.378a3.12 3.12 0 0 1-.525.208c-.214.065-.43.123-.649.163"/>
<?php else : /* MAX / other */ ?>
<img loading="lazy" src="<?php echo esc_url(get_template_directory_uri() . '/assets/images/max-logo.svg'); ?>" alt="MAX" width="18" height="18">
<?php endif; ?>
</svg>
<?php echo esc_html($m_name); ?>
</a>
<?php endforeach; ?>
</div>
<?php endif; ?>
</div>
<div class="ds-hero__visual">
<div class="ds-hero__visual-glow" aria-hidden="true"></div>
<div class="ds-hero__photo-wrap">
<div class="ds-hero__photo-frame">
<img class="ds-hero__photo"
src="<?php echo esc_url($banner_src ?: get_template_directory_uri() . '/assets/images/logo-svg.svg'); ?>"
alt="<?php echo esc_attr($banner_alt); ?>"
loading="eager" fetchpriority="high" decoding="async"
width="600" height="600">
</div>
<div class="ds-hero__photo-ring" aria-hidden="true"></div>
</div>
<?php foreach ($floats as $idx => $float) : ?>
<div class="ds-hero__float ds-hero__float--<?php echo esc_attr($idx + 1); ?>">
<span class="ds-hero__float-icon"><svg aria-hidden="true" width="24" height="24"><use href="#icon-<?php echo esc_attr($float['icon']); ?>"/></svg></span>
<span><?php echo esc_html($float['text']); ?></span>
</div>
<?php endforeach; ?>
</div>
</div>
</div>
</section>