Ajax пагинация «Показать еще»

#
Re: Ajax пагинация «Показать еще»
как применить данную разработку при выводе ИС или ИМ в макете на главной, где вызов в макете идет  например последних 20 товаров
это возможно?
Email: golden-puma@yandex.ru; Telegram: @GoldenPuma; Сайт: https://goldenpuma.ru
#
Re: Ajax пагинация «Показать еще»
Puma писал(а):
как применить данную разработку при выводе ИС или ИМ в макете на главной, где вызов в макете идет  например последних 20 товаров
это возможно?

ну и что никто не подскажет?
Email: golden-puma@yandex.ru; Telegram: @GoldenPuma; Сайт: https://goldenpuma.ru
#
Re: Ajax пагинация «Показать еще»
При генерации Главной с коротким списком ИЭ (пусть речь об ИС) у вас выводятся, допустим, 3 самые свежие новости.
Вы генерируете этот блок новостей контроллером показа ИС с использованием XSL.
Сразу советую, чтобы переиспользовать XSL, в XSL генерировать список эл-ов, но не сам контейнер:

  <ul id="list-news"><?
     $limit = 3;
      ...  создание и настройка контроллера - ИЭ сортируем в порядке убывания id
      ...
      $oController // контроллер генерирует список из 3-х эл-ов  <li>....</li>
           ->offset(0)
          ->limit($limit)
          ->show();
     ?>
   </ul>

Далее, в настройках динамической страницы Главной (так удобнее, не надо создавать отдельный узел для генерации ajax-ответа)
вы генерируете ajax-ответ состоящий, допустим, из 3-х эл-тов:

<?php
  if (!is_null($offset = Core_Array::getRequest('get-another-news'))
  {
     $limit = 3;
      ob_start();
      ...  настройки контроллера - сортируем в порядке убывания id ИЭ
      $oController
           ->offset($offset)
          ->limit($limit)
          ->show();
      $message = ob_get_clean();

      Core_Page::instance()->response
        ->header('Content-type', 'application/json; charset=utf-8')
        ->header('Pragma', "no-cache")
        ->header('Cache-Control', "private, no-cache")
        ->header('Vary', "Accept")
        ->header('Last-Modified', gmdate('D, d M Y H:i:s', time()) . ' GMT')
        ->header('X-Powered-By', 'HostCMS')
        ->header('Content-Disposition', 'inline; filename="files.json"')
        ->body(json_encode(array(
            'message' => $message
          )))
        ->sendHeaders()
        ->showBody();
      exit();
    }

Внизу страницы, за пределами контейнера ставим кнопку:

  ...
<button id="add-news">Показать еще</button>

В js привязываем обработчик:

  $(function(){
    var container = $('#list-news');
    var button = $('#add-news');

    button.on('click',function(){
      var count = container.find('li').length;
      $.ajax({
        url: '?get-another-news=' + count,
        type: 'POST',
        data: '',
        dataType: 'json',
        context: context
      }).done(function(data){
        $(data['message']).appendTo(container);
        if (container.find('li').length >= 20)
        {
          button.hide();
        }
      });
    });
  });

Как-то так
Естественно, приведенный выше код условно рабочий - требуется его отладка
ARTatom
#
Re: Ajax пагинация «Показать еще»
artatom,
что то ваш код отличается от варианта данного Mcross и лишний js зачем то
хотелось бы именно тот код переделать
а не новый писать
Email: golden-puma@yandex.ru; Telegram: @GoldenPuma; Сайт: https://goldenpuma.ru
#
Re: Ajax пагинация «Показать еще»
Выше приведенный код поставляется на условиях AS-IS - не хотите его использовать, ваше дело.
Ничего там лишнего нет, вместо привязки к hostcmsfiles\main.js, я вам дал js-код зависящий только от jquery
Хотите что-то изменить в коде Mcross - обращайтесь персонально к нему, а не выступайте с необоснованной критикой того, в чем не разбираетесь.
Вам никто и ничем на этом форуме не обязан, так что будьте добры уважать труд и время людей, посвятивших вашей задаче время.
ARTatom
Авторизация