You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

214 lines
8.9 KiB

<?php
/**
* Блок с клубными картами
*/
$block_id = 'club-cards-' . $block['id'];
$class_name = 'club-cards-block';
if (!empty($block['className'])) {
$class_name .= ' ' . $block['className'];
}
if (!empty($block['align'])) {
$class_name .= ' align' . $block['align'];
}
if (!function_exists('get_club_cards_for_current_language')) {
function get_club_cards_for_current_language()
{
$current_lang = pll_current_language();
$args = array(
'post_type' => 'club-card',
'posts_per_page' => -1,
'lang' => $current_lang,
'post_status' => 'publish',
'sort' => 'menu_order',
'order' => 'ASC',
);
return get_posts($args);
}
}
$cards = get_club_cards_for_current_language();
$heading = get_field('heading', $block['id']);
$room = get_current_room();
if ($room === 'fitness') {
} else {
$section_classes = 'bg-cover bg-center bg-no-repeat';
$bg_image = get_template_directory_uri() . '/assets/images/hero-bg.png';
$style_attr = 'style="background-image: url(' . esc_url($bg_image) . ')"';
}
if (!function_exists('render_club_card')){
function render_club_card($card) {
$card_attribute = get_field('attr', $card->ID);
$card_image = get_field('image', $card->ID);
$card_heading = get_field('heading', $card->ID);
$card_description = get_field('description', $card->ID);
$card_price = get_field('price', $card->ID);
$card_prices = [];
if (have_rows('card_prices', $card->ID)) {
while (have_rows('card_prices', $card->ID)) {
the_row();
$periods = ['1_month', '3_month', '6_month', '12_month'];
foreach ($periods as $period) {
if (have_rows($period)) {
while (have_rows($period)) {
the_row();
$card_prices[$period] = [
'full' => get_sub_field('full'),
'day' => get_sub_field('day')
];
}
}
}
}
}
$card_time = [];
if (have_rows('time', $card->ID)) {
while (have_rows('time', $card->ID)) {
the_row();
$card_time[] = [
'normal_days' => get_sub_field('normal_days'),
'vacation_days' => get_sub_field('vacation_days')
];
}
}
?>
<div class="border border-transparent hover:border-[#e21e24] transition max-[1300px]:h-auto max-[1050px]:p-[20px] bg-[#ffffff] rounded-[12px] p-[28px] pb-[16px] h-[258px] shadow-[0_2px_32px_0_rgba(16,_15,_15,_0.03)]">
<div class="flex flex-col h-full relative">
<?php if ($card_attribute): ?>
<div class="max-[768px]:top-[-29px] absolute top-[-14px] right-[-14px] px-[12px] py-[4px] rounded-[32px] bg-[linear-gradient(90deg,_#ffd65a_39.42%,_#ffe595_92.9%)]">
<span class="font-[600] text-[14px] leading-[125%]">
<?php echo($card_attribute); ?>
</span>
</div>
<?php endif; ?>
<div class="flex gap-[16px] items-center">
<?php if ($card_image): ?>
<div class="overflow-hidden w-[32px] h-[32px]">
<img src="<?php echo esc_url($card_image['url']); ?>"
alt="<?php echo esc_attr($card_image['alt']); ?>"
class="w-full h-full object-cover"/>
</div>
<?php endif; ?>
<?php if ($card_heading): ?>
<h3 class="max-[768px]:text-[20px] text-[24px] font-[600] leading-[125%]">
<?php echo esc_html($card_heading); ?>
</h3>
<?php endif; ?>
</div>
<?php if ($card_description): ?>
<div class="max-[768px]:min-h-[70px] min-h-[47px] text-[16px] leading-[145%] font-[500] mt-[16px]">
<?php echo wp_kses_post($card_description); ?>
</div>
<?php endif; ?>
<div class="justify-end flex-row-reverse max-[1100px]:mt-[16px] flex mt-auto pt-[16px] border-t border-t-[#f1f1f1] items-center gap-[16px] flex-wrap">
<?php if ($card_price): ?>
<div class="flex items-center text-[20px] font-[600] leading-[125%]">
от 
<div class="rounded-[32px] px-[12px] h-[36px] flex items-center bg-[linear-gradient(90deg,_rgba(43,_44,_53,_0.06)_39.42%,_rgba(110,_121,_150,_0.06)_92.9%)]">
<span class="max-[768px]:text-[20px] bg-[linear-gradient(90deg,_#2b2c35_67.31%,_#4f5870_92.9%)] text-[24px] flex items-center justify-center font-[600] bg-clip-text text-transparent">
<?php echo esc_html($card_price); ?> ₽
</span>
</div>
 в день
</div>
<?php endif; ?>
<div class="max-[1300px]:w-full">
<button
data-modal="club-card"
data-card-id="<?php echo $card->ID; ?>"
data-card-title="<?php echo esc_attr($card_heading); ?>"
data-card-prices='<?php echo esc_attr(json_encode($card_prices)); ?>'
data-card-time='<?php echo esc_attr(json_encode($card_time));?>'
data-card-attr='<?php echo esc_attr($card_attribute); ?>'
class="max-[1300px]:w-full max-[768px]:h-[53px] max-[768px]:text-[16px] red-gradient-hover cursor-pointer flex text-[#f8f8f8] text-[18px] text-[#fff] font-[600] justify-center h-[59px] w-[160px] rounded-[90px] flex items-center">
<?php echo 'Оформить' ?>
</button>
</div>
</div>
</div>
</div>
<?php
}
}
?>
<section data-scroll-section="prices" id="<?php echo esc_attr($block_id); ?>"
class="max-[768px]:py-[45px] py-[90px] <?php echo esc_attr($section_classes); ?>" <?php echo $style_attr; ?>>
<div class="container mx-auto">
<?php if ($cards): ?>
<!-- Заголовок для главной страницы -->
<?php if (is_front_page() && $heading): ?>
<div class="max-[1100px]:mt-0 flex flex-col gap-[16px] max-[768px]:[&>img]:w-[196px] mt-[28px] ">
<h2 class="max-[1050px]:text-[36px] max-[768px]:text-[24px] dark:text-[#fff] text-[40px] leading-[120%] font-[500]">
<?php echo esc_html($heading); ?>
</h2>
<?php display_icon(get_current_room() === 'gym' ? 'dark_logo_name' : 'light_logo_name'); ?>
</div>
<?php endif; ?>
<div class="min-[768px]:block hidden mt-[24px]">
<div class="max-[1100px]:grid-cols-2 grid grid-cols-3 gap-[24px]">
<?php foreach ($cards as $card): ?>
<?php render_club_card($card); ?>
<?php endforeach; ?>
</div>
</div>
<div class="max-[767px]:block hidden mt-[24px] px-[24px] mx-[-24px]">
<div class="!mx-[-24px] !px-[24px] swiper club-cards-swiper max-[768px]:!pt-[8px] max-[768px]:!mt-[-8px]">
<div class="swiper-wrapper">
<?php foreach ($cards as $card): ?>
<div class="swiper-slide">
<?php render_club_card($card); ?>
</div>
<?php endforeach; ?>
</div>
<div class="swiper-scrollbar [&_.swiper-scrollbar-drag]:dark:!bg-[#989597] !static !mx-auto !cursor-grab container mt-[24px] !w-full !p-0"></div>
</div>
</div>
<?php endif; ?>
</div>
</section>
<script>
document.addEventListener('DOMContentLoaded', function () {
const clubCardsSwiper = new Swiper('.club-cards-swiper', {
slidesPerView: 1.2,
spaceBetween: 16,
grabCursor: true,
breakpoints: {
480: {
slidesPerView: 1.3,
},
640: {
slidesPerView: 1.5,
}
},
scrollbar: {
el: '.swiper-scrollbar',
draggable: true,
},
});
});
</script>