Подскажите виджет для Yii

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
SaintRu
Сообщения: 88
Зарегистрирован: 2020.05.13, 11:22
Контактная информация:

Подскажите виджет для Yii

Сообщение SaintRu »

Требуется виджет для подгрузки и отображению отзывов на примере как booking.com.
(с некоторой периодичностью отображается по одному отзыву, а затем плавно один замещается другим)
Есть у кого-нибудь примеры или что-нибуть на gihub?
Мой старт-ап ;) https://website39.site
SaintRu
Сообщения: 88
Зарегистрирован: 2020.05.13, 11:22
Контактная информация:

Re: Подскажите виджет для Yii

Сообщение SaintRu »

Пока написал костыль, хотелось чтоб один отзыв сменял другой плавно, но с bootsrap4 не работает ни один swiper что нашел на github.
Поэтому пока сделал так:

Код: Выделить всё

class ReviewsToursWidget extends Widget
{
    public $tours;
    public function run()
    {
        $reviews = $this->tours->reviews;
        if (count($reviews) == 0) return;
        $array = [];
        foreach ($reviews as $review) {
            $vote = RatingWidget::widget(['rating' => $review->vote]);
            $fullname = $review->user->personal->fullname->getFullname();
            $date = date('d-m-Y', $review->created_at);
            $text = $review->text;
            // HTML развертка с подстановкой значений $vote, $fullname, $date, $text
            $array[] = <<<HTML...HTML;
        }
        return $this->render('review_tour', [
            'array' => json_encode($array)
        ]);
    }
}
и само представление:

Код: Выделить всё

<?php
/* @var $array array */
$script = <<<JS
$(document).ready(function() {
    var i = 0;
    var arr_reviews = $array;
    var count = arr_reviews.length;
    $('#review-load').html(arr_reviews[0]);
    setInterval(function(){
            i++;
            if (i == count) {i=0;}
         $('#review-load').html(arr_reviews[i]);
        }, 4000);
});

JS;
$this->registerJs($script)
?>
<div id="review-load"></div>
Мой старт-ап ;) https://website39.site
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Подскажите виджет для Yii

Сообщение unknownby »

SaintRu писал(а): 2020.09.02, 16:28 Пока написал костыль, хотелось чтоб один отзыв сменял другой плавно, но с bootsrap4 не работает ни один swiper что нашел на github.
slideUp(1000), slideDown(1000) ?
SaintRu
Сообщения: 88
Зарегистрирован: 2020.05.13, 11:22
Контактная информация:

Re: Подскажите виджет для Yii

Сообщение SaintRu »

unknownby писал(а): 2020.09.03, 08:41 slideUp(1000), slideDown(1000) ?
Спасибо!

Код: Выделить всё

<?php
/* @var $array array */
$script = <<<JS
$(document).ready(function() {
    var i = 0;
    var arr_reviews = $array;
    var count = arr_reviews.length;
    var tick = false;
    $('#review-load').html(arr_reviews[i]);
    $('#review-load-next').hide();
    setInterval(function(){
            i++;
            if (i === count) {i=0;}
            if (tick === false) {
                $('#review-load-next').html(arr_reviews[i]);
                $('#review-load').slideUp(500);
                $('#review-load-next').slideDown(500);               
                tick = true;
            } else {
                $('#review-load').html(arr_reviews[i]);
                $('#review-load-next').slideUp(500); 
                $('#review-load').slideDown(500);                 
                tick = false
                }
        }, 5000);
});
JS;
$this->registerJs($script)
?>
<div id="review-load"></div>
<div id="review-load-next"></div>
Правда сначала нижний наезжает, на верхний. Потом верхний опускается. Как сделать чтоб например все время нижний наезжал на верхний?
Мой старт-ап ;) https://website39.site
Аватара пользователя
leonenco
Сообщения: 155
Зарегистрирован: 2017.01.30, 22:42

Re: Подскажите виджет для Yii

Сообщение leonenco »

Попробуйте поменять `z-index` у верхнего на -1. Это можно сделать с помощью добавления соответствующего css класса, или добавлять аттрибут `style` с необходимым параметром.
Ответить