103 lines
4.8 KiB
PHP
103 lines
4.8 KiB
PHP
<?php
|
||
/**
|
||
* Отзывы родителей (с лоад-мором)
|
||
* .bento .pksh-section .pksh-reviews #pksh-reviews
|
||
*
|
||
* @package Dekart
|
||
*/
|
||
|
||
if ( ! defined( 'ABSPATH' ) ) {
|
||
exit;
|
||
}
|
||
|
||
$data = Pksh_Data::instance();
|
||
$review_items = $data->get_reviews();
|
||
$total_count = count( $review_items );
|
||
?>
|
||
<section class="bento pksh-section pksh-reviews" id="pksh-reviews" aria-label="Отзывы">
|
||
<div class="bento__full section-header--centered">
|
||
<span class="bento-label">Отзывы</span>
|
||
<h2 class="bento-h2">Что говорят родители</h2>
|
||
<p class="bento-p">Родители доверяют нам самое главное — делятся впечатлениями о подготовке к школе</p>
|
||
|
||
<div class="pksh-swipe-hint" aria-hidden="true">
|
||
<span class="pksh-swipe-hint__arrow">👇</span>
|
||
<span class="pksh-swipe-hint__text">Листайте, чтобы читать ещё отзывы</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="bento__full">
|
||
<?php if ( $total_count > 0 ) :
|
||
$items = array_values( $review_items );
|
||
$card_idx = 0;
|
||
?>
|
||
<div class="reviews-cards">
|
||
<div class="lw-scroll-x">
|
||
<div class="lw-grid lw-grid--3">
|
||
<?php foreach ( $items as $item ) :
|
||
$card_idx++;
|
||
$author = $item['review_author'] ?? '';
|
||
$text = $item['review_text'] ?? '';
|
||
$raw_rating = $item['review_rating'] ?? '';
|
||
$avatar_id = ! empty( $item['review_avatar'] ) ? (int) $item['review_avatar'] : 0;
|
||
$teacher = $item['review_teacher'] ?? array();
|
||
$date = $item['review_date'] ?? '';
|
||
$stars = max( 1, min( 5, (int) $raw_rating ) );
|
||
$name = $author ?: 'Анонимно';
|
||
$is_long = strlen( wp_strip_all_tags( $text ) ) > 350;
|
||
$batch = (int) ceil( $card_idx / 12 );
|
||
if ( empty( $text ) ) { continue; }
|
||
?>
|
||
<article class="lw-card reveal" data-batch="<?php echo (int) $batch; ?>">
|
||
<div class="lw-flex lw-flex--row lw-gap-12 lw-items-start">
|
||
<div class="lw-avatar lw-avatar--48">
|
||
<?php if ( $avatar_id && wp_attachment_is_image( $avatar_id ) ) : ?>
|
||
<?php echo wp_get_attachment_image( $avatar_id, array( 48, 48 ), false, array( 'class' => 'lw-avatar__img', 'loading' => 'lazy', 'alt' => esc_attr( $name ) ) ); ?>
|
||
<?php else : ?>
|
||
<div class="lw-avatar lw-avatar--48 lw-avatar--letter">
|
||
<span class="lw-avatar__letter"><?php echo esc_html( $name ? mb_strtoupper( mb_substr( $name, 0, 1 ) ) : '?' ); ?></span>
|
||
</div>
|
||
<?php endif; ?>
|
||
</div>
|
||
<div class="lw-flex lw-flex--col" style="flex:1; min-width:0;">
|
||
<div class="lw-text-dark lw-font-semibold"><?php echo esc_html( $name ); ?></div>
|
||
<?php if ( ! empty( $teacher[0]['id'] ) ) : ?>
|
||
<div class="lw-text-xs lw-text-gray">
|
||
Преподаватель: <a href="<?php echo esc_url( get_permalink( $teacher[0]['id'] ) ); ?>" class="review-card__teacher-link"><?php echo esc_html( get_the_title( $teacher[0]['id'] ) ); ?></a>
|
||
</div>
|
||
<?php endif; ?>
|
||
<div class="lw-badge lw-badge--verified">✓ Проверенный отзыв</div>
|
||
</div>
|
||
</div>
|
||
<div class="lw-stars lw-mt-8">
|
||
<?php for ( $i = 1; $i <= 5; $i++ ) : ?>
|
||
<svg class="lw-star <?php echo $i <= $stars ? 'lw-star--filled' : ''; ?>" width="16" height="16" viewBox="0 0 21 19" fill="none">
|
||
<path d="M9.58463 1.50884C9.89101 0.602477 11.1729 0.602476 11.4793 1.50884L13.1158 6.35007C13.2531 6.75637 13.6343 7.02985 14.0631 7.02985H19.2721C20.2504 7.02985 20.6467 8.28958 19.8447 8.84971L15.6995 11.7446C15.335 11.9991 15.1822 12.4636 15.3247 12.8847L16.9239 17.6158C17.233 18.5302 16.1954 19.3085 15.404 18.7559L11.1045 15.7533C10.7606 15.5131 10.3033 15.5131 9.95941 15.7533L5.65991 18.7559C4.86857 19.3085 3.83092 18.5302 4.14001 17.6158L5.73926 12.8847C5.8816 12.4636 5.72891 11.9991 5.36448 11.7446L1.21924 8.84971C0.417196 8.28958 0.813532 7.02985 1.79181 7.02985H7.00081C7.42969 7.02985 7.81081 6.75637 7.94815 6.35007L9.58463 1.50884Z" fill="currentColor"/>
|
||
</svg>
|
||
<?php endfor; ?>
|
||
</div>
|
||
<div class="lw-card__text lw-mt-8<?php echo $is_long ? ' review-card__text--clamped' : ''; ?>">
|
||
<?php echo wp_kses_post( $text ); ?>
|
||
</div>
|
||
<div class="review-card__footer">
|
||
<?php if ( $is_long ) : ?>
|
||
<button class="review-card__btn-more" aria-label="Читать ещё">Читать ещё</button>
|
||
<?php endif; ?>
|
||
<?php if ( ! empty( $date ) ) : ?>
|
||
<span class="review-card__date"><?php echo esc_html( $date ); ?></span>
|
||
<?php endif; ?>
|
||
</div>
|
||
</article>
|
||
<?php endforeach; ?>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<?php if ( $total_count > 12 ) : ?>
|
||
<div class="reviews-loadmore" id="reviews-loadmore">
|
||
<button type="button" class="reviews-loadmore__btn">Показать ещё</button>
|
||
</div>
|
||
<?php endif; ?>
|
||
<?php endif; ?>
|
||
</div>
|
||
</section>
|