Files
Fakel-Gym/template-parts/la-components/blocks/training-block/training-block.php
GP_DEV 21562852ca full
2025-07-08 14:21:19 +03:00

168 lines
7.8 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
/**
* Блок с тренерами
*/
// Получение полей ACF
$block_id = 'training-block-' . $block['id'];
$class_name = 'training-block';
if (!empty($block['className'])) {
$class_name .= ' ' . $block['className'];
}
if (!empty($block['align'])) {
$class_name .= ' align' . $block['align'];
}
if (!function_exists('get_trainings_for_current_language')) {
function get_trainings_for_current_language()
{
$current_lang = pll_current_language();
$args = array(
'post_type' => 'training',
'posts_per_page' => -1,
'lang' => $current_lang,
'post_status' => 'publish',
'sort' => 'menu_order',
'order' => 'ASC',
);
return get_posts($args);
}
}
$trainings = get_trainings_for_current_language();
// Получаем все поля short_info для каждого тренера
$trainings_data = array();
if ($trainings) {
foreach ($trainings as $training) {
$training_info = array(
'post' => $training,
'name' => '',
'exp' => '',
'short_desc' => ''
);
if (have_rows('short_info', $training->ID)) {
while (have_rows('short_info', $training->ID)) {
the_row();
$training_info['name'] = get_sub_field('name');
$training_info['exp'] = get_sub_field('exp');
$training_info['short_desc'] = get_sub_field('short_desc');
}
}
$trainings_data[] = $training_info;
}
}
$heading = get_field('heading', $block['id']);
$room = get_current_room();
if ($room === 'fitness') {
$section_classes = 'radial-gradient';
$style_attr = '';
} 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) . ')"';
}
?>
<section id="<?php echo esc_attr($block_id); ?>"
class="py-[96px] <?php echo esc_attr($section_classes); ?>" <?php echo $style_attr; ?>>
<div class="container mx-auto">
<?php if ($trainings_data): ?>
<?php if (is_front_page()): ?>
<div class="flex gap-[16px] justify-between">
<h2 class="dark:text-[#F8F8F8] text-[40px] leading-[120%] font-[500] max-w-[760px] w-full">
<?php
echo $heading;
?>
</h2>
<a class="!no-underline dark:text-[#F8F8F8] dark:max-w-[860px] dark:border-[#574348] flex mt-auto gap-[8px] border border-[#E0E0E0] hover:[&>svg]:translate-x-[6px] rounded-[90px] px-[32px] h-[59px] flex items-center justify-center text-[18px] font-[600] leading-[195%] text-[#222]"
href="<?php echo get_post_type_archive_link('training'); ?>">
Все тренировки
<svg class="transition fill-[#222222] dark:fill-[#F8F8F8]" width="12" height="13" viewBox="0 0 12 13" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.4876 2.17896C6.73011 1.94034 7.12396 1.94035 7.36649 2.17896L11.3181 6.06809C11.5606 6.30671 11.5606 6.69329 11.3181 6.93191L7.36649 10.821C7.12396 11.0596 6.73011 11.0597 6.4876 10.821C6.24512 10.5824 6.24511 10.1949 6.4876 9.95626L9.38032 7.11093H1.1209C0.777923 7.11093 0.5 6.83747 0.5 6.5C0.5 6.16253 0.777923 5.88907 1.1209 5.88907H9.38032L6.4876 3.04374C6.24511 2.80512 6.24512 2.41758 6.4876 2.17896Z"
/>
</svg>
</a>
</div>
<?php endif; ?>
<div class="mt-[40px] flex flex-col">
<div class="swiper rounded-[20px] rounded-b-[0]" id="<?php echo esc_attr($block_id); ?>-swiper">
<div class="swiper-wrapper">
<?php foreach ($trainings_data as $training_data): ?>
<?php $training = $training_data['post']; ?>
<div class="h-[540px] max-w-[312px] swiper-slide">
<div class="flex flex-col bg-[#f8f8f8] relative h-[540px] rounded-[20px] overflow-hidden shadow-[0_2px_32px_0_rgba(16,_15,_15,_0.03)]">
<?php $photo_images = get_field('photo', $training->ID); ?>
<?php if ($photo_images && !empty($photo_images[0])): ?>
<div class="overflow-hidden min-h-[260px]">
<img src="<?php echo esc_url($photo_images[0]['url']); ?>"
alt="<?php echo esc_attr($photo_images[0]['alt']); ?>"
loading="lazy"
class="w-full h-full object-cover"/>
</div>
<?php endif; ?>
<div class="flex flex-col gap-[24px] h-full p-[24px]">
<?php $name = $training_data['name']; ?>
<?php if ($name): ?>
<div class="text-[24px] leading-[125%] font-[600]">
<?php echo esc_html($name); ?>
</div>
<?php endif; ?>
<?php $short_desc = $training_data['short_desc']; ?>
<?php if ($short_desc): ?>
<div class="text-[16px] leading-[145%] font-[500] text-[#222]">
<?php echo wp_kses_post($short_desc); ?>
</div>
<?php endif; ?>
<a href="<?php echo get_permalink($training->ID); ?>" class="!no-underline mt-auto h-[59px] flex grey-gradient-hover w-full rounded-[90px] px-[12px] text-[18px] font-[600] leading-[195%] text-[#f8f8f8] bg-[0_2px_32px_0_rgba(16,_15,_15,_0.03)] items-center justify-center">
Перейти
</a>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
</div>
<div class="swiper-scrollbar [&_.swiper-scrollbar-drag]:dark:!bg-[#989597] !static !mx-auto !cursor-grab container mt-[44px] !w-full !p-0" id="swiper-scrollbar-<?php echo esc_attr($block_id); ?>"></div>
</div>
<?php endif; ?>
</div>
</section>
<script>
document.addEventListener('DOMContentLoaded', function () {
const swiperContainer = document.querySelector('#<?php echo esc_attr($block_id); ?>-swiper');
if (swiperContainer && typeof Swiper !== 'undefined') {
new Swiper('#<?php echo esc_attr($block_id); ?>-swiper', {
slidesPerView: 'auto',
spaceBetween: 24,
grabCursor: true,
freeMode: true,
navigation: {
nextEl: '.custom-next-<?php echo esc_attr($block_id); ?>',
prevEl: '.custom-prev-<?php echo esc_attr($block_id); ?>',
},
scrollbar: {
el: `#swiper-scrollbar-<?php echo esc_attr($block_id); ?>`,
draggable: true,
},
});
}
});
</script>