Перейти к содержанию

Рекомендуемые сообщения

Коллеги,

 

Сломал голову и перешерстил форумы - пока не смог найти решения. Не работает пагинация с поиском (без поиска работает) - проблема упоминается, но как её фиксить не совсем ясно.

 

Суть такова: при поиске или фильтрации первую страницу код генерит правильно, а вот ссылки на пагинацию выдает неверные.

Например, ссылка на страницу с поиском: /index.php?route=product/category&path=1&search=pink%20floyd

А вот ссылки на пагинацию, которые я вижу на этой странице, выглядят так:

	<div class="pages"><ul class="pagination"><li class="active"><span>1</span></li>
	<li><a href="***/index.php?route=product/category&amp;path=1&amp;page=2">2</a></li>
	<li><a href="***/index.php?route=product/category&amp;path=1&amp;page=3">3</a></li>
	<li><a href="***/index.php?route=product/category&amp;path=1&amp;page=4">4</a></li>
	<li><a href="***/index.php?route=product/category&amp;path=1&amp;page=2">&gt;</a></li>
	<li><a href="***/index.php?route=product/category&amp;path=1&amp;page=4">&gt;|</a></li></ul>
	</div>

при этом не совсем понятно даже какой контроллер генерит эти ссылки.

Код с пагинацией есть и в oclayerednavigation.php:

$pagination = new Pagination();
            $pagination->total = $product_total;
            $pagination->page = $page;
            $pagination->limit = $limit;
            $pagination->url = $base_url . 'index.php?route=product/category&path=' . $category_id . $url . '&amp;page={page}';

            $data['pagination'] = $pagination->render();

            $data['results'] = sprintf($this->language->get('text_pagination'), ($product_total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($product_total - $limit)) ? $product_total : ((($page - 1) * $limit) + $limit), $product_total, ceil($product_total / $limit));

            if ($limit && ceil($product_total / $limit) > $page) {
                $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1), true), 'next');
            }

            $data['sort'] = $sort;
            $data['order'] = $order;
            $data['limit'] = $limit;

            $json['result_html'] = $this->load->view('extension/module/oclayerednavigation/occategoryfilter', $data);

И в category.php:

 

$pagination = new Pagination();
			$pagination->total = $product_total;
			$pagination->page = $page;
			$pagination->limit = $limit;
			$pagination->url = $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&page={page}');

			$data['pagination'] = $pagination->render();

			$paginationOld = new Pagination();
			$paginationOld->total = $product_total;
			$paginationOld->page = $page;
			$paginationOld->limit = $limit;
			$paginationOld->url = $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&page={page}');
			$data['link'] = $this->url->link('product/category', 'path=' . $this->request->get['path']);

			$data['paginationOld'] = $paginationOld->render();

			$data['results'] = sprintf($this->language->get('text_pagination'), ($product_total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($product_total - $limit)) ? $product_total : ((($page - 1) * $limit) + $limit), $product_total, ceil($product_total / $limit));

			// http://googlewebmastercentral.blogspot.com/2011/09/pagination-with-relnext-and-relprev.html
			if ($page == 1) {
			    $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id']), 'canonical');
			} else {
				$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. $page), 'canonical');
			}

			if ($page > 1) {
			    $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . (($page - 2) ? '&page='. ($page - 1) : '')), 'prev');
			}

			if ($limit && ceil($product_total / $limit) > $page) {
			    $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1)), 'next');
			}

			$data['vinyl_states'] = $this->model_catalog_product->getVinylStates();
			$data['cover_states'] = $this->model_catalog_product->getCoverStates();
			$data['vinyl_types'] = $this->model_catalog_product->getVinylTypes();
			$data['price_min'] = $this->model_catalog_product->getMinPrice();
			$data['price_max'] = $this->model_catalog_product->getMaxPrice();
			$data['year_min'] = $this->model_catalog_product->getMinYear();
			$data['year_max'] = $this->model_catalog_product->getMaxYear();

			$data['sort'] = $sort;
			$data['order'] = $order;
			$data['limit'] = $limit;

			$data['continue'] = $this->url->link('common/home');

			$data['column_left'] = $this->load->controller('common/column_left');
			$data['column_right'] = $this->load->controller('common/column_right');
			$data['content_top'] = $this->load->controller('common/content_top');
			$data['content_bottom'] = $this->load->controller('common/content_bottom');
			$data['footer'] = $this->load->controller('common/footer');
			$data['header'] = $this->load->controller('common/header');

			if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
				$json = json_encode(['content' => $this->load->view('extension/module/oclayerednavigation/occategory', $data)]);
				$this->response->addHeader('Content-Type: application/json');
				echo json_encode($json);
				die();
			}

			$this->response->setOutput($this->load->view('product/category', $data));

 

Функция поиска в catalog\model\catalog\product.php выглядит вот так: (хотя может быть она к делу и не относится)

	public function mainSearch($term)
	{
		$products = $this->searchByProductName($term);
		$manufactures = $this->searchByManufacturer($term);
		$items = [];
		$this->load->model('tool/image');
		foreach ($products as $product) {
			$id = $product['product_id'];
			$items[$id]['id'] = $id;
			$items[$id]['text'] = $product['name'];
			$items[$id]['type'] = 'product';
			$items[$id]['manufacturer'] = $product['manufacturer'];
			if ($product['image']) {
				$image = $this->model_tool_image->resize($product['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height'));
			} else {
				$image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height'));
			}
			$items[$id]['image'] = $image;
			$items[$id]['link'] = $this->url->link('product/product', 'product_id=' . $id);
		}
		foreach ($manufactures as $manufacture) {
			$id = $manufacture['manufacturer_id'];
			$items[$id]['id'] = $id;
			$items[$id]['text'] = $manufacture['name'];
			$items[$id]['type'] = 'manufacturer';
			if ($manufacture['image']) {
				$image = $this->model_tool_image->resize($manufacture['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height'));
			} else {
				$image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height'));
			}
			$items[$id]['image'] = $image;
			$items[$id]['link'] = $this->url->link('product/category/index', 'path=' . MAIN_CATEGORY . '&filters[manufacturer]=' . $id);
		}
		return $items;

Попытки отредактировать код линки для паджинации, добавив в него любое слово во всех из этих файлов не привел к тому, что я вижу изменения в source code веб-страницы после поиска. Может быть  я не сбросил какие-то кэши? Или же я не те контроллеры открываю совсем. Ничего не понятно :(

 

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

 

Спасибо!

Изменено пользователем Forkintheass

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
8 часов назад, Forkintheass сказал:

$pagination->url = $base_url . 'index.php?route=product/category&path=' . $category_id . $url . '&amp;page={page}';

если у вас поиск перенесен в catalog/category то в этом контроллере и смотрите что в переменной $url

в нее вы должны включить параметр поиска search

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От Bn174uk
      400.00 руб
      Скачать/Купить дополнение


      Управление сайтом через telegram
      Модуль позволяет через telegram управлять сайтом. 
      Это пилотная версия модуля для понимания актуальности дальнейшего развития его.

      У кого хостинг располагается на территории России есть вероятность, что модуль не будет работать из-за блокировки telegram-а в России.

      В данный момент, что уже реализовано:
      Просмотр заказов(общий список и развернутая информация по заказу); Поиск товаров(пока не рекомендую его использовать, если по ключевому слову может быть найдено более 10 товаров) Просмотр товара(пока информация о заказе статичная, а именно нельзя выбирать что отображать)
      Demo bot

      Команды бота:
      /start - начала работы с ботом /orders - вывод заказов /calendar - вызов календаря /pN - где N - id товара, /order_N - где N - номер заказ Что в планах реализовать:
      сделать сортировку заказов; изменения информации о заказе; просмотр зарегистрированных пользователей; и т.д. идей много, и готовы выслушать и другие предложения чего бы хотелось видеть в модуле.
      Инструкция по настройке:

      Шаг 1:
       
      Зайдите в Telegram, в поиске найдите бота BotFather и начните с ним общение. Напишите боту команду /newbot - это команда для создания нового бота. BotFather в ответ напишет, чтобы Вы написали имя бота. Напишите обратным сообщением это имя (Например: Бот для уведомлений о заказах) - это имя можно потом поменять. После ввода имени BotFather запросит ввести username (публичное имя бота) оно должно иметь окончание bot (Например: cmsshopbot или cmsshop_bot); Если такое имя не занято, то в ответ получите сообщение с token вашего нового бота; Перейдите по ссылке на своего бота из сообщения либо найдите его в поиске по username (которое указали) и нажмите /start. Это надо для того, чтобы бот смог Вам писать. Без этого Вы не сможете получать уведомления. Шаг 2:
       
      Выберите нужную версию модуля в зависимости от Вашей версии opencart; Cодержимое папки upload(admin,catalog,system) залить на сайт через ftp.
      Шаг 3:
       
      После перейдите в расширения->модули и найдите "A-Управление сайтом через Telegram"" активируйте его; Зайдите в настройки модуля; Укажите token(в поле "Токен бота") который выдал Вам бот BotFather; Укажите ID юзера кто имеет доступ к боту, а именно к его командам. Если нужно, чтобы доступ был к нескольким пользователям, укажите через запятую эти ID (Например: 12222222222,22222223333,333333333); Как узнать свой ID в Telegram  Все, бот настроен и готов к использованию.
      Для активации модуля писать в ЛС или на почту.

      Системные требования:
      PHP 5.6 или выше; curl; на сайте должен быть https(без него модуль не будет работать); Техническая поддержка:

      Техническая поддержка осуществляется всем пользователям, легально купившим модуль на оф.сайтах либо у самого автора.

      По всем вопросам и предложениям писать serfbots@gmail.com
      Добавил Bn174uk Добавлено 01.12.2018 Категория Модули Системные требования Сайт разработчика http://cmsshop.com.ua/ Старая цена 1500 Метод активации По запросу в ЛС
      По запросу на почту Ioncube Loader Нет OpenCart 2.3 ocStore 2.3 OpenCart.Pro, ocShop Opencart.pro 2.3  
    • От shchs
      350.00 руб
      Скачать/Купить дополнение


      SearchLive - Поиск с подсказками
      SearchLive - Поиск с подсказками для интернет-магазина.
       
      Модуль "живого" поиска с подсказками совпадений. Поиск ведется по названию, описанию, модели, артикула и тегам товара, с возможностью настройки как полей для поиска, так и релевантности совпадений и набора исключаемых символов. Так же есть настройки вида и количества результатов.
      Файлы, отвечающие за механизм поиска, а соответственно и код в них открыт и легко может быть модифицирован под конкретные нужны.

      Перед установкой дополнения, обязательно ознакомьтесь с порядком новой установки и обновления,
      описанном в файле "readme.rus" в архиве с модулем.
       
      Условия приобретения:
      1. Данное дополнение распространяется по принципу 1 лицензия - 1 домен + 1 тестовый домен.
      2. Поддомены считаются отдельным доменом!
      3. Тестовым доменом может быть только либо технический адреса хостинга, либо поддомен "test" основного домена.
      4. Модуль распространяется по принципу "как есть", со всеми его особенностями, достоинствами
      и недостатками, как имеющимися в данный момент так и выявленными в будущем, поэтому
      любые исправления или изменения модуля возможны только по воле автора и никак иначе.
      5. В модуле используется технология защиты, препятствующая несанкционированному использованию модуля,
      а также ограничивающая изменение файлов с его кодом.
      6. Данная защита не снимается ни при каких условиях.
      7. Применение средств и методов, позволяющих обойти используемую технологию защиты, являются незаконными.
      8. Лицензия возврату не подлежит!
      9. Продукт не является бесплатным программным обеспечением и не может распространяться в какой-либо форме где-либо без письменного согласия автора.
       
      Условия Тех.поддержки:
      1. Вопросы по поддержке вы также можете задавать по почте shchs@ya.ru, либо по скайпу: ashchs
      2. Активация дополнения выполняется в течении суток с момента покупки.
      3. Тех.поддержка оказывается в течении двух суток с момента поступления запроса.
       3.1 Тех.поддержка оказывается при предоставлении доступа в админ.панель и к файлам сайта по протоколу FTP.
      4. В условия тех.поддержки не входит:
       4.1 согласование работы дополнения с какими-то либо другими модулями.
       4.2 настройка и запуск дополнения на версиях opencart/ocstore отличных от явно заявленных.
       4.3 изменение работы или добавление каких-либо новых функций.
      5. Поддержка оказывается только легальным и добросовестным покупателям, купившим данный продукт непосредственно у автора, а также на сайте opencartforum.com
       
      Системные требования:
      1. Установленный на сервере IonCube loader последней версии
      2. Версия PHP минимум 5.3
      3. Opencart/Ocstore 1.5.4.1-1.5.6.x, 2.0.x.x, 2.1.x.x, 2.2.x.x, 2.3.x.x, 3.0.2.x
       
      Приобретая данное дополнение, вы тем самым соглашаетесь с системными требованиями, ограничениями, условиями покупки и тех.поддержки.
       
      Для приобретения дополнительных лицензий обращаться на shchs@ya.ru
       
      Возможно получение тестовой лицензии на 10 дней - писать на shchs@ya.ru
       
      Демо:
      http://test4.shchs.bget.ru/admin/
      demo
      demo
      Добавил shchs Добавлено 22.02.2018 Категория Поиск Системные требования Ioncube Loader Сайт разработчика Старая цена Метод активации Автоматическая активация Ioncube Loader Требуется OpenCart 3.0
      2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.5.1
      1.5.5
      1.5.4.1 ocStore 3.0
      2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х  
    • От shchs
      SearchLive - Поиск с подсказками для интернет-магазина.
       
      Модуль "живого" поиска с подсказками совпадений. Поиск ведется по названию, описанию, модели, артикула и тегам товара, с возможностью настройки как полей для поиска, так и релевантности совпадений и набора исключаемых символов. Так же есть настройки вида и количества результатов.
      Файлы, отвечающие за механизм поиска, а соответственно и код в них открыт и легко может быть модифицирован под конкретные нужны.

      Перед установкой дополнения, обязательно ознакомьтесь с порядком новой установки и обновления,
      описанном в файле "readme.rus" в архиве с модулем.
       
      Условия приобретения:
      1. Данное дополнение распространяется по принципу 1 лицензия - 1 домен + 1 тестовый домен.
      2. Поддомены считаются отдельным доменом!
      3. Тестовым доменом может быть только либо технический адреса хостинга, либо поддомен "test" основного домена.
      4. Модуль распространяется по принципу "как есть", со всеми его особенностями, достоинствами
      и недостатками, как имеющимися в данный момент так и выявленными в будущем, поэтому
      любые исправления или изменения модуля возможны только по воле автора и никак иначе.
      5. В модуле используется технология защиты, препятствующая несанкционированному использованию модуля,
      а также ограничивающая изменение файлов с его кодом.
      6. Данная защита не снимается ни при каких условиях.
      7. Применение средств и методов, позволяющих обойти используемую технологию защиты, являются незаконными.
      8. Лицензия возврату не подлежит!
      9. Продукт не является бесплатным программным обеспечением и не может распространяться в какой-либо форме где-либо без письменного согласия автора.
       
      Условия Тех.поддержки:
      1. Вопросы по поддержке вы также можете задавать по почте shchs@ya.ru, либо по скайпу: ashchs
      2. Активация дополнения выполняется в течении суток с момента покупки.
      3. Тех.поддержка оказывается в течении двух суток с момента поступления запроса.
       3.1 Тех.поддержка оказывается при предоставлении доступа в админ.панель и к файлам сайта по протоколу FTP.
      4. В условия тех.поддержки не входит:
       4.1 согласование работы дополнения с какими-то либо другими модулями.
       4.2 настройка и запуск дополнения на версиях opencart/ocstore отличных от явно заявленных.
       4.3 изменение работы или добавление каких-либо новых функций.
      5. Поддержка оказывается только легальным и добросовестным покупателям, купившим данный продукт непосредственно у автора, а также на сайте opencartforum.com
       
      Системные требования:
      1. Установленный на сервере IonCube loader последней версии
      2. Версия PHP минимум 5.3
      3. Opencart/Ocstore 1.5.4.1-1.5.6.x, 2.0.x.x, 2.1.x.x, 2.2.x.x, 2.3.x.x, 3.0.2.x
       
      Приобретая данное дополнение, вы тем самым соглашаетесь с системными требованиями, ограничениями, условиями покупки и тех.поддержки.
       
      Для приобретения дополнительных лицензий обращаться на shchs@ya.ru
       
      Возможно получение тестовой лицензии на 10 дней - писать на shchs@ya.ru
       
      Демо:
      http://test4.shchs.bget.ru/admin/
      demo
      demo
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.