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

Александр, доброго дня! В mFilter2 по умолчанию, если страница результатов всего одна, блок с пагинацией пропадает, ну или кнопка если использовать ajax подгрузку, подскажите пожалуйста, как сделать чтобы блок не пропадал а становился не активным? И как можно сделать чтобы в место блока пагинации, при условии что страница с результатами всего одна, показывать другой блок?

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

Nik
Nik
Что-то на подобии такого?

А зачем кнопки вправо — влево? Если страница одна. Не совсем понял задумку
Александр
Александр
Чтобы было понятно, что это блок пагинации, но он не активный, так как страница всего одна а не просто 1, а там можно уже что-то добавить, убрать, подправить и всё остальное, примерно такая задумка.
Александр Мальцев
Александр Мальцев
Привет!
Эти изменения можно осуществить правкой 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?
Александр
Александр
Да, как это можно сделать?
Александр Мальцев
Александр Мальцев
Можно просто написать скриптик на 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-код.
Александр
Александр
Спасибо! Александр правда у меня не работает с этим символом && в этой строке:
if (query && !$('.pagination .page-item').length) {
с + или = работает, но есть проблема, работает только при обновлении страницы а если используешь фильтры, не выводит блок пока не обновишь страницу, как это можно исправить?
Александр Мальцев
Александр Мальцев
Значит нужно ещё добавить тот же код при наступлении события mse2_load:
$(function(){
  $(document).on('mse2_load', function(){
     ...
  });
});
Александр
Александр
Пора бы мне уже запомнить, что нужно использовать событие: mse2_load, спасибо. Александр а как сделать чтобы блок не пропадал, при перезагрузке страницы?
Александр
Александр
Не много уточню вопрос, если использовать два одинаковых скрипта, но один повесить на событие mse2_load, то при перезагрузке страницы всё работает, но правильно ли это? И это лучший вариант в данном случае или как-то можно по другому, чтобы не дублировать скрипт?
Александр Мальцев
Александр Мальцев
Просто создайте функцию, а потом её вызывайте в 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);
});
Александр
Александр
Спасибо!