Плагин Отзывы на любой странице от 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()
вместо строк:
Поставить эти:
Для использования пользовательского шаблона!
Подскажите, пожалуйста, как реализовать в этом плагине возможность ставить рейтинг (звездочки)?