Вид пагинации в mFilter2 если одна страница

Александр
Александр
1,3K
13
Содержание:
  1. Комментарии
Александр, доброго дня! В mFilter2 по умолчанию, если страница результатов всего одна, блок с пагинацией пропадает, ну или кнопка если использовать ajax подгрузку, подскажите пожалуйста, как сделать чтобы блок не пропадал а становился не активным?

И как можно сделать чтобы в место блока пагинации, при условии что страница с результатами всего одна, показывать другой блок?

Комментарии: 13

  1. Nik
    Nik
    2020-01-31 14:33:57
    Что-то на подобии такого?

    А зачем кнопки вправо — влево? Если страница одна. Не совсем понял задумку
  1. Александр
    Александр
    2020-01-31 18:57:55
    Чтобы было понятно, что это блок пагинации, но он не активный, так как страница всего одна а не просто 1, а там можно уже что-то добавить, убрать, подправить и всё остальное, примерно такая задумка.
  • Александр Мальцев
    Александр Мальцев
    2020-01-23 16:39:12
    Привет!
    Эти изменения можно осуществить правкой js файла этого компонента.
    Например, для того чтобы сделать кнопку «Загрузить ещё» видимой и недоступной нужно в этот файл внести следующие изменения:
    ...
    if (!has_results) {
      //more.hide();
      more.addClass('disabled');
    }
    ...
    
    Если вам нужно реализовать вывод какого-то другого блока, то это всё осуществляется в функции, в которой приведён код выше:
    ...
    handlePagination: function () {
      var pcre = new RegExp(mse2Config['pageVar'] + '[=|\/|-](\\d+)');
      switch (mse2Config['mode']) {
        case 'button':
          ...               
          break;
        case 'scroll':
          ...
          break;
        default:
          ...
      }
    },
    ...
    
    В ней можно насписать логику ту, которая нужна.
    1. Александр
      Александр
      2020-01-31 07:14:00
      Александр, здравствуйте с кнопкой всё предельно понятно, спасибо, а как тоже самое с блоком обычной постраничной пагинации сделать?
    2. Александр Мальцев
      Александр Мальцев
      2020-01-31 08:19:58
      Привет! А как он должен выводиться, если страница одна? Кнопки влево, вправо и с цифрой 1?
    3. Александр
      Александр
      2020-01-31 09:30:03
      Да, как это можно сделать?
    4. Александр Мальцев
      Александр Мальцев
      2020-02-02 06:39:18
      Можно просто написать скриптик на JavaScript:
      function getParameterByName(name, url) {
        if (!url) url = window.location.href;
        name = name.replace(/[\[\]]/g, '\\$&');
        var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
          results = regex.exec(url);
        if (!results) return null;
        if (!results[2]) return '';
        return decodeURIComponent(results[2].replace(/\+/g, ' '));
      }
        
      $(function(){
        var query = getParameterByName('query');
        if (query && !$('.pagination .page-item').length) {
          var html = '<li class="page-item disabled"><span class="page-link">Первая</span></li><li class="page-item disabled"><span class="page-link">1</span></li><li class="page-item disabled"><span class="page-link">Последняя</span></li>';
          $('.pagination').html(html);
        }
      });
      
      Т.е. проверять есть ли в URL параметр query и количество элементов .page-item в .pagination. Если параметр есть и количество элементов равно 0, то вставить в блок .pagination определённый HTML-код.
    5. Александр
      Александр
      2020-02-03 00:57:01
      Спасибо! Александр правда у меня не работает с этим символом && в этой строке:
      if (query && !$('.pagination .page-item').length) {
      с + или = работает, но есть проблема, работает только при обновлении страницы а если используешь фильтры, не выводит блок пока не обновишь страницу, как это можно исправить?
    6. Александр Мальцев
      Александр Мальцев
      2020-02-04 14:09:09
      Значит нужно ещё добавить тот же код при наступлении события mse2_load:
      $(function(){
        $(document).on('mse2_load', function(){
           ...
        });
      });
      
    7. Александр
      Александр
      2020-02-04 17:03:47
      Пора бы мне уже запомнить, что нужно использовать событие: mse2_load, спасибо. Александр а как сделать чтобы блок не пропадал, при перезагрузке страницы?
    8. Александр
      Александр
      2020-02-04 17:17:16
      Не много уточню вопрос, если использовать два одинаковых скрипта, но один повесить на событие mse2_load, то при перезагрузке страницы всё работает, но правильно ли это? И это лучший вариант в данном случае или как-то можно по другому, чтобы не дублировать скрипт?
    9. Александр Мальцев
      Александр Мальцев
      2020-02-06 13:49:19
      Просто создайте функцию, а потом её вызывайте в 2 местах (после загрузки страницы и при наступлении события mse2_load:
      function getParameterByName(name, url) {
        if (!url) url = window.location.href;
        name = name.replace(/[\[\]]/g, '\\$&');
        var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
          results = regex.exec(url);
        if (!results) return null;
        if (!results[2]) return '';
        return decodeURIComponent(results[2].replace(/\+/g, ' '));
      }
        
      $(function(){
        function updatePagination() {
          var query = getParameterByName('query');
          if (query && !$('.pagination .page-item').length) {
            var html = '<li class="page-item disabled"><span class="page-link">Первая</span></li><li class="page-item disabled"><span class="page-link">1</span></li><li class="page-item disabled"><span class="page-link">Последняя</span></li>';
            $('.pagination').html(html);
          }
        }
        updatePagination();
        $(document).on('mse2_load', updatePagination);
      });
      
    10. Александр
      Александр
      2020-02-07 09:45:04
      Спасибо!