Перейти к содержанию
Сайт в скором времени будет закрыт, спасибо что были с нами! ×
  • Введение в Reviews

       (0 отзывов)

    Вадим

    Обзоры практически идентичны комментариям - они ведут себя так же, и все необязательные настройки комментариев доступны также и для обзоров.

    Обзоры отличаются несколькими ключевыми моментами:

    • При отправке обзора, кроме текста, пользователи должны указать рейтинг от 1 до 5.
    • Другие пользователи могут пометить считаю ли они этот обзор полезным или бесполезным; затем обзоры можно сортировать по их полезности.
    • Пользователи могут отправлять только один обзор к одному элементу содержимого.

    Вы можете следовать инструкциям по реализации комментариев для добавления обзоров, применив несколько небольших различий.

    Модель

    Классу Вашей модели для отзывов нужно расширить \IPS\Content\Review (что в свою очередь расширяет
    \IPS\Content\Comment).

    Существует несколько обязательных дополнительных элементов databaseColumnMap:

    Элемент

    Описание

    rating

    Рейтинг (0-5), отправляемый с обзором.

    votes_total

    Общее количество полученных голосов полезный/бесполезный.

    votes_helpful

    Количество голосов votes_total, которые оценили как полезный.

    votes_data

    JSON объект, содержащий сведения о том, кто проголосовал полезный/бесполезный и что они проголосовали

    Изменения вносимые в модель Элемента Содержимого

    Вместо того, чтобы к модели Элемента Содержимого добавить новое свойство под названием $commentClass, добавьте свойство $reviewClass:

    /**
    * @brief Review Class
    */
    public static $reviewClass = 'IPS\yourapp\YourClass';
    

    И для $databaseColumMap:

    Название элемента для Комментариев

    Название элемента для Обзоров

    num_comments

    num_reviews

    last_comment

    last_review

    last_comment_by

    last_review_by

    Название элемента для Комментариев

    Название элемента для Обзоров

    unapproved_comments

    unapproved_reviews

    При желании Вы можете также добавить дополнительный элемент "рейтинг", который будет содержать текущий средний рейтинг для всех обзоров.

    Дополнительные свойства и методы в \IPS\Content\Item

    Комментарии

    Обзоры

    static $commentsPerPage

    static $reviewsPerPage

    commentPageCount()

    reviewPageCount()

    commentPagination()

    reviewPagination()

    comments( … )

    reviews( … )

    commentForm()

    reviewForm()

    lastCommentPageUrl()

    lastReviewPageUrl()

    canComment()

    canReview()

    moderateNewComments( … )

    moderateNewReviews( … )

    canViewHiddenComments( … )

    canViewHiddenReviews( … )

    averageReviewRating()
    Возвращает целое число от 1 до 5 с указанием среднего рейтинга по данному элементу

    Отображение

    Вот пример рекомендуемого HMTL для отображения обзоров:

    <div data-controller='core.commentFeed' data-feedID='file-{$item->id}-reviews'>
    	{{if $item->canReview()}}
    	<h2 class='ipsType_sectionTitle'>{lang="write_a_review"}</h2>
    	 
    	<div class='ipsAreaBackground_light ipsPad'>
    	{$item->reviewForm()|raw}
    	</div>
    	<br>
     
    	{{endif}}
    	<div class="ipsClearfix">
    	{{if $item->reviewPageCount() > 1}}
    	<div class="ipsPos_left">
    	{$item->reviewPagination( array( 'tab',
    	'sort' ) )|raw}</div>
    	{{endif}}
    <div class="ipsButtonBar ipsClearfix ipsResponsive_showDesktop ipsPos_right">
    <ul class="ipsButtonRow ipsPos_left ipsClearfix">
    <li data-action="tableFilter" data-filter="">
    <a href="{$item->url()-
    >setQueryString( array( 'tab' => 'reviews', 'page' => 1, 'sort' => 'helpful' ) )}" class="{{if !isset( request.sort ) or request.sort
    != 'newest'}}ipsButtonRow_active{{endif}}" data- action="filterClick">{lang="most_helpful"}</a>
    </li>
    <li data-action="tableFilter" data- filter="members_filter_banned">
    <a href="{$item->url()-
    >setQueryString( array( 'tab' => 'reviews', 'page' => 1, 'sort' => 'newest' ) )}" class="{{if isset( request.sort ) and request.sort
    == 'newest'}}ipsButtonRow_active{{endif}}" data- action="filterClick">{lang="newest"}</a>
    </li>
    </ul>
    </div>
    </div>
    <br><br>
    <div data-role='commentFeed'>
    {{foreach $item->reviews() as $review}}
    {$review->html()|raw}
    {{endforeach}}
    </div>
    </div>
    


    Обратная связь

    Присоединяйтесь к обсуждению

    Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
    Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

    Гость

    • Не будет показан другим пользователям
    • Добавить отзыв...

      ×   Вставлено с форматированием.   Вставить как обычный текст

        Разрешено использовать не более 75 эмодзи.

      ×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

      ×   Ваш предыдущий контент был восстановлен.   Очистить редактор

      ×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

      Загрузка...

×
×
  • Создать...

Важная информация

Используя наш сайт вы соглашаетесь с нашей Политикой конфиденциальности