Плагин Отзывы на любой странице от WA-APPS

Genasyst

Всем привет! Немного доработал плагин для того чтобы он выводился на любой странице с полным функционалом, т.к его функционал на страницу целиком добавить было нельзя.

В файле 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 Этот метод можно включить в обновление плагина!

22 сентября 2016
  • Genasyst 22 сентября 2016 17:13

    Небольшой дебаг:

    В методе 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);

    Для использования пользовательского шаблона!

  • Retributor 23 октября 2016 17:09

    Подскажите, пожалуйста, как реализовать в этом плагине возможность ставить рейтинг (звездочки)?

Добавление новых комментариев к этой теме отключено.