fourroses666 / Reviews

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Reviews

Установка

Установить, запустить модуль. Для вывода звездочек подключить файл assets/snippets/reviews/stars.css - верстка для звездочек как в примерах ниже.

Сниппет ReviewForm

Запускает FormLister c контроллером Reviews.

В форме должны быть поля:

  • rid - id документа для которого пишется отзыв;
  • name - имя пользователя;
  • email - email пользователя;
  • review - текст отзыва;
  • rate - оценка от 0 до 5.

По умолчанию отзывы публикуются вручную администратором сайта. Это поведение можно изменить с помощью параметра &moderation: 1 - модерация включена (по умолчанию); 0 - модерация выключена.

Пример вызова:

[!ReviewForm?
&formid=`review`
&formControls=`rate`
&defaults=`{"rate":1, "rid":[*id*]}`
&formTpl=`reviewFormTpl`
&subject=`Новый отзыв`
&rewriteUrls=`1`
&successTpl=`@CODE:<p>Спасибо! Ваш отзыв будет опубликован после проверки модератором.</p>`
&reportTpl=`@CODE:<p><b>Товар:</b> <a href="[(site_url)][~[+page.id+]~]">[+page.pagetitle+]</a></p><p><b>Отправитель: [+name.value+]</b> (<a href="mailto:[+email.value+]">[+email.value+]</a>)</p><p>[+review.value:nl2br+]</p>`
!]

Чанк с формой:

[+form.messages+]
<form method="post" class="well">
    <input type="hidden" name="formid" value="review">
    <input type="hidden" name="rid" value="[+rid+]">
    <div class="row">
        <div class="col-md-6">
            <div class="form-group">
                <label for="phone">* Имя</label>
                <input type="text" class="form-control" placeholder="Ваше имя" name="name" value="[+name.value+]">
                [+name.error+]
            </div>
        </div>
        <div class="col-md-6">
            <div class="form-group">
                <label for="email">* Email (не публикуется)</label>
                <input type="text" class="form-control" id="email" placeholder="Ваш email" name="email" value="[+email.value+]">
                [+email.error+]
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-md-12">
            <div class="form-group">
                <label for="message">* Комментарий</label>
                <textarea class="form-control" placeholder="Текст отзыва" name="review" rows="6">[+review.value+]</textarea>
                [+review.error+]
            </div>
        </div>
     </div>
     <div class="row">
        <div class="col-md-12">
            <div class="form-group">
                <label for="rate">Оценка</label><br>
                <span class="star-rating">
                    <input type="radio" name="rate" value="1" [+c.rate.1+]><i></i>
                    <input type="radio" name="rate" value="2" [+c.rate.2+]><i></i>
                    <input type="radio" name="rate" value="3" [+c.rate.3+]><i></i>
                    <input type="radio" name="rate" value="4" [+c.rate.4+]><i></i>
                    <input type="radio" name="rate" value="5" [+c.rate.5+]><i></i>
                </span>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-md-12">
            <div class="form-group text-right">
                <button type="submit" class="btn btn-danger">Отправить</button>
            </div>
        </div>
    </div>
</form>

Сниппет ReviewLister

Выводит список отзывов на странице товара c помощью сниппета DocLister.

В шаблоне для вывода доступны плейсхолдеры:

  • id - id записи;
  • rid - id документа для которого пишется отзыв;
  • name - имя пользователя;
  • email - email пользователя;
  • review - текст отзыва;
  • rate - оценка от 0 до 5;
  • relrating - оценка в процентах;
  • createdon - время создания отзыва;
  • updatedon - время редактирования отзыва;
  • active - опубликован или нет;
  • date - отформатированная дата.

Для форматирования даты необходимо использовать параметры dateSource (поле даты, по умолчанию - createdon) и dateFormat (формат даты по умолчанию - d.m.y H:i). Если значение dateFormat пустое, то будет выведена дата в формате "день - полное название месяца по-русски - год".

Сниппет устанавливает на странице глобальные плейсхолдеры:

  • reviews.total - количество отзывов;
  • reviews.rating - общий рейтинг абсолютный;
  • reviews.relrating - общий рейтинг относительный в процентах.

Пример:

<div><p><span class="star-rating-results"><i style="width:[+reviews.relrating+]%;"></i></span> [+reviews.rating+]/[+reviews.total+]</p></div>

[!ReviewLister?
    &display=`20`
    &paginate=`pages`
    &tpl=`@CODE:
    <table class="table table-striped table-bordered">
    <tbody>
        <tr>
            <td style="width: 50%;"><strong>[+name+]</strong></td>
            <td class="text-right">[+date+]</td>
        </tr>
        <tr>
            <td colspan="2">
                 
                <p><span class="star-rating-results"><i style="width:[+relrating+]%;"></i></span></p>
                <p>[+review:nl2br+]</p>
            </td>
        </tr>
    </tbody>
    </table> 
    <br/>`
    &orderBy=`createdon DESC`
    !]
    [+pages+]

Сниппет RatingLister

Выводит список документов с рейтингом c помощью сниппета DocLister.

В шаблоне для вывода доступны дополнительные плейсхолдеры:

  • rating - общий рейтинг абсолютный;
  • relrating - общий рейтинг относительный в процентах;
  • total - количество отзывов.
  • sorter - справедливый рейтинг, это поле нужно использовать для сортировки.

Ajax

Разбирайтесь сами:

  • assets/snippets/reviews/ajax.php - пример обработчика;
  • assets/snippets/reviews/forms/review.sample.php - переименовать в review.php
  • assets/snippets/reviews/reviews.js - пример скрипта, вызов формлистера на странице не нужен

About


Languages

Language:PHP 52.5%Language:JavaScript 28.9%Language:Smarty 14.9%Language:CSS 3.7%