Плагин Отзывы на любой странице от WA-APPS
Всем привет! Немного доработал плагин для того чтобы он выводился на любой странице с полным функционалом, т.к его функционал на страницу целиком добавить было нельзя.
В файле shopReviewsPlugin добавил статический метод:
public static function getReviewsAction() {
$errors = array();
$model = new shopReviewsModel();
$limit = wa()->getSetting('records_per_page', 20, array('shop', 'reviews'));
$page = waRequest::get('page');
if (!$page) {
$page = 1;
}
$offset = ($page - 1) * $limit;
$reviews = $model->getReviews($offset, $limit);
foreach ($reviews as &$r) {
$r['name'] = htmlspecialchars($r['name']);
$r['text'] = nl2br(htmlspecialchars($r['text']));
if ($r['response']) {
$r['response'] = nl2br($r['response']);
}
}
unset($r);
$count = $model->countReviews();
$pages_count = ceil($count / $limit);
$view = wa()->getView();
$view->assign('reviews_settings', wa()->getSetting(null, '', array('shop', 'reviews')) );
$view->assign('reviews_url', wa('shop')->getAppUrl().wa()->getSetting('url', '', array('shop', 'reviews')).'/'); // Новыя переменная
$view->assign('reviews_count', $count);
$view->assign('pages_count', $pages_count);
$view->assign('reviews', $reviews);
$view->assign('errors', $errors);
$view->assign('require_authorization',wa()->getSetting('require_authorization', '', array('shop', 'reviews')) );
$view->assign('require_captcha', wa()->getSetting('require_captcha', 1, array('shop', 'reviews')));
$theme = new waTheme(waRequest::getTheme());
$view->assign('wa_active_theme_path', $theme->path);
$plugin = wa('shop')->getPlugin('reviews');
return $view->fetch($plugin->path .'/templates/frontendReviews.html');
}Затем в шаблоне frontendReviews.html пришлось добавить у формы атрибут action="{$reviews_url}"
<form id="review-add-form" method="post" action="{$reviews_url}" enctype="multipart/form-data">
Затем подправил адрес пагинации:
Было:
{wa_pagination total=$pages_count attrs=['class' => "menu-h"] url="{$wa->getUrl('/frontend/reviews')}"}
Стало:
{wa_pagination total=$pages_count attrs=['class' => "menu-h"] url="{$reviews_url}"}Затем исправил адрес отправки в javascript
Было :
} else {
$.post("?", $(this).serialize(), f, "json");
}
return false;Стало:
} else {
$.post($(this).attr('action'), $(this).serialize(), f, "json");
}
return false;Использование:
На любой странице добавьте код:
На любой странице добавьте код:
{shopReviewsPlugin::getReviewsAction()}Готово! Спасибо за внимание!
P.S Этот метод можно включить в обновление плагина!
Добавление новых комментариев к этой теме отключено.










Небольшой дебаг:
В методе getReviewsAction()
вместо строк:
$plugin = wa('shop')->getPlugin('reviews'); return $view->fetch($plugin->path .'/templates/frontendReviews.html');Поставить эти:
$custom_template = wa('shop')->getDataPath('plugins/reviews/frontendReviews.html', false, 'shop', false); if (file_exists($custom_template)) { $template = 'file:'.$custom_template; } elseif ($t = wa()->getSetting('template_reviews', '', array('shop', 'reviews'))) { $template = 'string:'.$t; } else { $template = 'file:'.wa()->getAppPath('plugins/reviews/templates/', 'shop').'frontendReviews.html'; } return $view->fetch($template);Для использования пользовательского шаблона!
Подскажите, пожалуйста, как реализовать в этом плагине возможность ставить рейтинг (звездочки)?