Плагин отзывы в теме Euroshop
В настройках плагина используйте следующий шаблон вывода:
{if !waRequest::isXMLHttpRequest() && waRequest::method() != 'post'}{literal} <style type="text/css"> .reviews .review ul.menu-v li a { display: inline; padding: 0;} .reviews .review ul.reviews-branch li .reviews-branch li {border-bottom: 0} .reviews .review img.userpic { margin-right: 5px} .reviews .images { clear: left; } .reviews .images .image { vertical-align: middle; text-align: center; display: inline-block; width: 200px; } .reviews .images .image img { max-width: 100%; max-height: 250px; } table.reviews-stats { margin-bottom: 20px; width: auto; border: none; } table.reviews-stats td { border: none; padding: 3px 10px; } table.reviews-stats td div.bar { width: 200px; height: 13px; background: #eee; } table.reviews-stats td div.bar div { height: 13px; background: #f7c854; } .reviews .total-rating { margin: 0 10px; font-size: 120%; } .reviews-stats-title { margin-bottom: 20px; } .reviews .e-reviews__detail-open { vertical-align: top; } </style> {/literal}{/if} <div class="reviews"> {if !empty($reviews_settings.stats)} {$ratings = shopReviewsPlugin::getRatings()} {if $ratings.count} <div class="reviews-stats-title"> Средняя оценка: <b class="total-rating">{str_replace(',', '.', round($ratings.rating, 1))}</b> {$wa->shop->ratingHtml($ratings.rating, 16)} <a class="e-reviews__detail-open" onclick="$('.reviews-stats').toggle()"><i class="far fa-caret-square-down"></i></a> </div> <table class="reviews-stats" style="display: none"> {foreach $ratings.ratings as $rating => $count} <tr> <td class="min-width hint">{$count}</td> <td> <div class="bar"> <div style="width:{str_replace(',', '.', 100 * $count/$ratings.count)}%;"></div> </div> </td> <td>{$wa->shop->ratingHtml($rating)}</td> </tr> {/foreach} </table> {/if} {/if} <a name="reviewheader"></a> <!-- add review form --> <div class="write-review"> <a href="#" class="e-reviews__link-write _button">{_w('Write a review')}</a> </div> <div class="review-form e-review-write wa-form" id="review-form" style="margin: 20px 0;{if $reviews_count > 0}display:none;{/if}"> <form id="review-add-form" method="post" enctype="multipart/form-data"> <div class="review-form-fields"> {if !$wa->user()->isAuth() && $require_authorization} <div class="review-field wa-form__auth-line">{sprintf(_w('To add a review please <a href="%s">sign up</a> or <a href="%s">login</a>'), $wa->signupUrl(), $wa->loginUrl())}</div> {else} {if $wa->user()->isAuth()} <div class="review-field wa-form__auth-line"><label>{_w('Your name')}</label> <img src="{$wa->user()->getPhoto(20)}" class="userpic" alt=""> <strong>{$wa->user('name')}</strong> <a href="?logout">{_w('log out')}</a> </div> {else} <div class="provider-fields"> <div class="review-field e-review-write__line"> <div class="e-review-write__name"> <label>{_w('Your name')}</label> </div> <div class="e-review-write__control"> <input {if !empty($errors.name)}class="error"{/if} type="text" name="name" id="review-name" value="{$wa->post('name', '')|escape}"> {if !empty($errors.name)}<em class="errormsg">{$errors.name}</em>{/if} </div> </div> <div class="review-field e-review-write__line"> <div class="e-review-write__name"> <label>[`Email`]</label> </div> <div class="e-review-write__control"> <input {if !empty($errors.email)}class="error"{/if} type="text" name="email" id="review-email" value="{$wa->post('email', '')|escape}"> {if !empty($errors.email)}<em class="errormsg">{$errors.email}</em>{/if} </div> </div> {if !empty($reviews_settings.enable_photo_upload)} <p class="review-field"> <label>[`User's photo`]</label> <input type="file" name="image" accept="image/gif,image/jpeg,image/png"> </p> {/if} </div> {/if} {if !empty($enable_rating)} <div class="review-field e-review-write__line e-review-write__line_stars"> <div class="e-review-write__name"> <label>[`Rating`]</label> <span class="e-review-write__stars"> <a href="#" class="no-underline rate" data-rate="0" id="reviews-rate"> {$wa->shop->ratingHtml(0, 16, true)} </a> <a href="javascript:void(0);" class="inline-link rate-clear" id="clear-reviews-rate" style="display: none;"> <b>×</b> </a> <input name="rating" type="hidden" value="0"> </span> </div> </div> {/if} <div class="review-field e-review-write__line"> <div class="e-review-write__name"> <label for="review-text">{_w('Review')}</label> </div> <div class="e-review-write__control"> <textarea id="review-text" name="text" rows="10" cols="45" required></textarea> </div> </div> {if !empty($reviews_settings.enable_photos_upload)} <p class="review-field"> <label for="review-text">[`Photos`]</label> <input class="review-images-input" type="file" name="images[]" accept="image/gif,image/jpg,image/jpeg,image/png" multiple> <span class="hint">Можно выбрать несколько файлов удерживая кнопку CTRL</span> </p> {/if} <div class="review-submit"> {if $require_captcha && !$wa->user()->isAuth()} {$wa->captcha([], ifset($errors.captcha))} {/if} <input type="submit" class="save" value="{_w('Add review')}"> <span class="review-add-form-status ajax-status" style="display: none;"> <i class="icon16 loading"><!--icon --></i> </span> </div> {/if} </div> </form> </div> <div class="e-reviews-list"> {foreach $reviews as $review} <div class="e-reviews-list__item" itemprop="review" itemscope itemtype="http://schema.org/Review"> <div class="e-reviews-list__left"> <div class="e-reviews-list__contacts"> <span class="e-reviews-list__name"> <a itemprop="author">{$review.name}</a> </span> </div> <div class="e-reviews-list__date _hint" itemprop="datePublished" content="{$review.datetime|date_format:'Y-m-d'}">{$review.datetime|wa_datetime:"humandatetime"}</div> </div> <div class="e-reviews-list__right"> <div class="e-reviews-list__right-wrap"> <div class="e-reviews-list__general"> {if !empty($review.rating)} <div class="e-reviews-list__title"> {$rate = round($review.rating)} <span class="e-reviews-list__stars" itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating"> <meta itemprop="worstRating" content = "1"> <meta itemprop="ratingValue" content="{$rate}"> <meta itemprop="bestRating" content = "5"> {$wa->shop->ratingHtml($rate)} </span> </div> {/if} <div class="e-reviews-list__text" itemprop="description"> {$review.text} </div> {if !empty($review.images)} <div class="images"> {foreach $review.images as $_img} <div class="image"> <img alt="" src="{$wa_url}wa-data/public/shop/reviews/{$review.id}_{$_img}"> </div> {/foreach} </div> {/if} {if $review.response} <div class="e-reviews-list__comments"> <div class="e-reviews-list__comments-item"> <div class="e-reviews-list__comments-zag"> <i class="fa fa-reply _hint" aria-hidden="true"></i> <span class="e-reviews-list__comments-name"> {if !empty($enable_response_info) && !empty($review.response_contact)} {$review.response_contact.firstname} {else} [`Response`] {/if} </span> <span class="e-reviews-list__comments-staff">({$wa->shop->settings('name')})</span> {if !empty($enable_response_info) && !empty($review.response_datetime)} <span class="e-reviews-list__comments-date _hint"> {$review.response_datetime|wa_datetime:"humandatetime"} </span> {/if} </div> <div class="e-reviews-list__comments-text"> {$review.response} </div> </div> </div> {/if} </div> </div> </div> </div> {/foreach} </div> {wa_pagination total=$pages_count attrs=['class' => "menu-h"] url="{$wa->getUrl('/frontend/reviews')}"} </div> {if !empty($enable_rating)} <script type="text/javascript"> $(function () { $.getScript("{$wa_app_static_url}js/rate.widget.js", function () { $('#reviews-rate').rateWidget({ onUpdate: function(rate) { $('#review-add-form input[name="rating"]').val(rate); } }); }); }); </script> {/if} {if !waRequest::isXMLHttpRequest() && waRequest::method() != 'post'} <script type="text/javascript"> $(function () { $(".reviews").on('click', ".write-review a", function () { $("#review-form").show(); $("#review-form input:first").focus(); return false; }); $(".reviews").on('submit', "#review-add-form", function () { $(".review-add-form-status").show(); var f = function (response) { $(".review-add-form-status").hide(); if (response.status == 'ok') { var tmp = $('<div></div>').append(response.data); $(".reviews").html(tmp.find('.reviews').html()); {if !empty($enable_rating)}$('#reviews-rate').rateWidget({ onUpdate: function(rate) { $('#review-add-form input[name="rating"]').val(rate);}});{/if} } else if (response.status == 'fail') { $(".reviews em.errormsg").remove(); $(".reviews .error").removeClass('error'); for (var k in response.errors) { if (k == 'captcha') { var el = $(".wa-captcha-input"); } else { var el = $("#review-" + k); } el.addClass('error'); if (!el.next().is('em.errormsg')) { $('<em class="errormsg"></em>').insertAfter(el); } el.next().html(response.errors[k]); } } }; if ($(this).find('input:file').length) { if (!$('#reviews-add-iframe').length) { $('<iframe name="reviews-add-iframe" id="reviews-add-iframe" style="display: none"></iframe>').insertAfter($(this)); } $(this).attr('target', 'reviews-add-iframe'); $("#reviews-add-iframe").one('load', function () { try { var data = $(this).contents().find('body').text(); var response = $.parseJSON(data); } catch (e) { return; } f(response); }); return true; } else { $.post("?", $(this).serialize(), f, "json"); } return false; }); }); </script> {/if}
Чтобы добавить комментарий, зарегистрируйтесь или войдите
0 комментариев