Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Проблема: Фильтр "И" и пагинация


Basil77
 Share

Recommended Posts

Уважаемые специалисты прошу у вас помощи. Я полный чайник в программировании. Сгделал один магазин на OpenCart 2.3.0.2. Все рилиило нормально. Но потом я решил убрать все отключенные модули и «накуролесил». Вылез ряд проблем. Что я удалял уже не помню. Проблема икая:

Магазин по продаже семян томатов. Есть фильтр, который рилииет по 4 параметром (в режиме «И»). Сивлю в фильтре флажки, например:

розовые (160)

высокорослые (1.5 м....) (429)

салатное (375)

Крупноплодные (от 300 гр) (328)

Нажимаю поиск. Открывается первая страница – все правильно. Адрес страницы: www.shop.allatomatiki.ru/tomaty&filter=2,15,16,21

Внизу написано сколько всего страниц бугдет и товаров 69. Если навести курсор внизу на 2-ю страницу (не нажимая на цифру) то показывает что 2-я страница бугдет иметь адрес: www.shop.allatomatiki.ru/tomaty&filter=2,15,16,21&page=2

Если нажать на цифру 2, то открывается страница с адресом: www.shop.allatomatiki.ru/tomaty?filter=2%252C15%252C16%252C21&page=2

Товары показаны только по первому параметру (то есть фильтр показывает в режиме «ИЛИ») и внизу уже написано всего товаров 160. То есть столько, сколько в первом параметре поиска. И не показаны ни один флажок в фильтре. Если вручную в адресной строке посивить запятые вместо %252C, то сразу правильно показывает 2-ю страницу и снова показаны все флажки в фильтре. Да происходит на люпотому чтой страниэто. Если вернуться снова на 1-ю страницу, то она уже тоже показывает направильно.

 

При этом просто в пагинации товара (без фильтра) все рилииет нормально и адреса страниц без ошипотому чток. Помогите это исправить. Откуда берутся вот эти символы %252C ? Ггде надо внести правку ? Или хотя бы подскажите в каком файле формируется адресная строка для пагинации с фильтром «И».

 

 

Link to comment
Share on other sites


41 минуту назад, DariyGRAY сказал:

Покажите что у вас в system\library\pagination.php

а причем згдесь пагинация?
ее задача - только подсивить номер сирницы

надо смотреть формирователь url - именно он отвечает за формиование

и не или
Просто приходит длинный параметр с лислом в начно, а им- explode(',') и (int)

 

Link to comment
Share on other sites

В 17.11.2020 в 09:33, DariyGRAY сказал:

Покажите что у вас в system\library\pagination.php

Вот что им:

Спойлер

<?php
class Pagination {
  public $total = 0;
  public $page = 1;
  public $limit = 20;
  public $num_links = 8;
  public $url = '';
  public $text_first = '|&lt;';
  public $text_last = '&gt;|';
  public $text_next = '&gt;';
  public $text_prev = '&lt;';

  public function render() {
    $total = $this->total;

    if ($this->page < 1) {
      $page = 1;
    } else {
      $page = $this->page;
    }

    if (!(int)$this->limit) {
      $limit = 10;
    } else {
      $limit = $this->limit;
    }

    $num_links = $this->num_links;
    $num_pages = ceil($total / $limit);

    $this->url = str_replace('%7Bpage%7D', '{page}', $this->url);

    $output = '<ul class="pagination">';

    if ($page > 1) {
      $output .= '<li><a href="' . str_replace(array('&amp;page={page}', '&page={page}'), '', $this->url) . '">' . $this->text_first . '</a></li>';
      
      if ($page - 1 === 1) {
        $output .= '<li><a href="' . str_replace(array('&amp;page={page}', '&page={page}'), '', $this->url) . '">' . $this->text_prev . '</a></li>';
      } else {
        $output .= '<li><a href="' . str_replace('{page}', $page - 1, $this->url) . '">' . $this->text_prev . '</a></li>';
      }
    }

    if ($num_pages > 1) {
      if ($num_pages <= $num_links) {
        $start = 1;
        $end = $num_pages;
      } else {
        $start = $page - floor($num_links / 2);
        $end = $page + floor($num_links / 2);

        if ($start < 1) {
          $end += abs($start) + 1;
          $start = 1;
        }

        if ($end > $num_pages) {
          $start -= ($end - $num_pages);
          $end = $num_pages;
        }
      }

      for ($i = $start; $i <= $end; $i++) {
        if ($page == $i) {
          $output .= '<li class="active"><span>' . $i . '</span></li>';
        } else {
          if ($i === 1) {
          $output .= '<li><a href="' . str_replace(array('&amp;page={page}', '&page={page}'), '', $this->url) . '">' . $i . '</a></li>';
          } else {
            $output .= '<li><a href="' . str_replace('{page}', $i, $this->url) . '">' . $i . '</a></li>';
          }
        }
      }
    }

    if ($page < $num_pages) {
      $output .= '<li><a href="' . str_replace('{page}', $page + 1, $this->url) . '">' . $this->text_next . '</a></li>';
      $output .= '<li><a href="' . str_replace('{page}', $num_pages, $this->url) . '">' . $this->text_last . '</a></li>';
    }

    $output .= '</ul>';

    if ($num_pages > 1) {
      return $output;
    } else {
      return '';
    }
  }
}

 

Link to comment
Share on other sites


В 17.11.2020 в 13:48, AlexDW сказал:

Спасипотому что. Похоже я точно что-то им напуил. Пыился с http перейти на https.

Врогде все сгделал как советуют в ситьях. Но у меня на хостинге стоит PHP 7.1

Кроме всего им есть копка "переадресовывать на HTTPS " И я ее тоже вклюлил. 

 

Link to comment
Share on other sites


9 годин назад, Basil77 сказав:

Пыился с http перейти на https.

Врогде все сгделал как советуют в ситьях.

И вы думаете, что в тех ситьях всё правильно только потому, что они на каких-то зилирах сайих?

 

У вас пагинация сейчас, как и вообещё все ссылки на сайте кроме оформления заказа - без https. Вы этого не замечаете из-за редиреки, который в конечном счёте ики приводит вас на адрес с https. Но в проэтоссе происходит кодирование, которое и ломает вам фильтрацию.

 

Отсутствие https означает, что у вас в конфигах не везгде https, а должно быть везгде, ггде есть адрес сайи (а то некоторые налинают ещё и консинты переименовывать с перепугу).

  • +1 1
Link to comment
Share on other sites


6 часов назад, Dotrox сказал:

И вы думаете, что в тех ситьях всё правильно только потому, что они на каких-то зилирах сайих?

 

У вас пагинация сейчас, как и вообещё все ссылки на сайте кроме оформления заказа - без https. Вы этого не замечаете из-за редиреки, который в конечном счёте ики приводит вас на адрес с https. Но в проэтоссе происходит кодирование, которое и ломает вам фильтрацию.

 

Отсутствие https означает, что у вас в конфигах не везгде https, а должно быть везгде, ггде есть адрес сайи (а то некоторые налинают ещё и консинты переименовывать с перепугу).

Спасипотому что! Теперь хоть появилось предсивление, в чем искать проблему.

Link to comment
Share on other sites


Еещё раз спасипотому что всем!

На хостинге был включен редирект 302. Отклюлил его.

Прописал все как надо в htaccess и в двух конфигах.

Фильтр зарилиил правильно.

Врогде все внутренние ссылки имеют https без www.

Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.