Ajax пагинация в каталоге

Как сделать ajax пагинацию внутри категории каталога, модуль shopscript 6?

По идее всё, что мне нужно, это получить содержимое страницы через $.getJSON, но только без выполнения основного шаблона, как это можно сделать без модификации shopFrontendCart.action.php? Дублировать функционал категорий в своём плагине?

1 ответ

  • 1
    Алексей Webasyst 5 августа 2015 06:02 #

    Опишите подробнее, что именно хотите сделать.

    Пагинации во фронтенде обычно регулируется настройками шаблона.
    shopFrontendCart.action.php обработка действий с корзиной.
    При обращении через xhr можно отдавать нужные данные без шаблона, тут зависит от реализации контроллера.

    • +1
      Роман Петров Роман Петров 5 августа 2015 06:21 #

      Перепутал контроллер, имелось ввиду shopFrontendCategory.action.php.

      Задача: сделать ajax-пагинацию внутри каталога. Если загрузить страницу через метод $.getJSON, то она загружается целиком, включая общий шаблон. Простейший способ, который мне видится: внутри shopFrontendCart.action.php с помощью waRequest::isXMLHttpRequest() определять ajax-запросы, для них выполнять текущий шаблон страницы через $this->view->fetch(), паковать всё в json и останавливать выполненияе скрипта. Может, я пропустил какой-то штатный функционал для ajax-запросов? Или есть более простой способ это реализовать, без модифицирования исходных файлов или полного дублирования функционала категорий в своём плагине

        • +1
          Роман Петров Роман Петров 5 августа 2015 07:53 #

          Проблема не в том, чтобы загрузить содержимое на клиенте, а в том, чтобы выполнить шаблон содержимого без выполнение общего шаблона.

          • +1

            В чем разница?

            Шаблон категории может использовать переменные, определенные в родительском шаблоне.

            • +1
              Роман Петров Роман Петров 5 августа 2015 08:21 #

              Нужно, чтобы вместо

              <!doctype html>
              <html>
               <head>
               </head>
               <body>
                <div id="content">
                 ... content ...
                </div>
               </body>
              </html

              Приходило только

                <div id="content">
                 ... content ...
                </div>

              Как я сделал сейчас, в Action shopFrontendCategory.action.php добавил условие:

               if (waRequest::isXMLHttpRequest() || $_GET['ajax']) {
              $this->response = array();
              $this->response['status'] = 'ok';
              $this->response['data'] = $this->view->fetch('category_ajax.html');
              echo json_encode($this->response);
              exit;
              }

              Но при каждом обновлении ShopScript этот файл будет перезаписываться. Я думал, что для подобных целей можно использовать какой-нибудь хук, или, может быть, есть стандартный метод для работы с ajax-страницами

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите