Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Как ограничить ручной ввод лимита товаров в категории?


Jays0n

Recommended Posts

11 минут назад, Jays0n сказал:

Когда вместо ?limit=50 можно ввести 1000000 и сайт зависает.

 

Прикольно, а что так можно?! Какая версия opencart ?

Надіслати
Поділитися на інших сайтах


13 часов назад, Jays0n сказал:

2.3, если много товаров и дешевый хостинг да

 

Файл catalog/model/catalog/product.php в нем метод public function getProducts($data = array()) {, ищем следующий код

		if (isset($data['start']) || isset($data['limit'])) {
			if ($data['start'] < 0) {
				$data['start'] = 0;
			}

			if ($data['limit'] < 1) {
				$data['limit'] = 20;
			}

			$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
		}

И меняем его так

		if (isset($data['start']) || isset($data['limit'])) {
			if ($data['start'] < 0) {
				$data['start'] = 0;
			}

			if ($data['limit'] < 1) {
				$data['limit'] = 20;
			}
			if ($data['limit'] > 100) {
				$data['limit'] = 100;
			}

			$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
		}

Т.е. добавляем

			if ($data['limit'] > 100) {
				$data['limit'] = 100;
			}

Вообще надо конечно ошибку выводить для покупателя, что выбран слишком большой диапазон. Но я можно так, т.е. если больше 100, то 100

  • +1 1
Надіслати
Поділитися на інших сайтах


1 час назад, i3bepb сказал:

 

Файл catalog/model/catalog/product.php в нем метод public function getProducts($data = array()) {, ищем следующий код

И меняем его так

Т.е. добавляем


			if ($data['limit'] > 100) {
				$data['limit'] = 100;
			}

Вообще надо конечно ошибку выводить для покупателя, что выбран слишком большой диапазон. Но я можно так, т.е. если больше 100, то 100

 

Спасибо, работает, то, что я и хотел, но пропадает пагинация :huh:

Надіслати
Поділитися на інших сайтах


1 час назад, Jays0n сказал:

но пропадает пагинация

ну я думаю тот кто догадывается писать limit=1000 в url, наврятли норм покупатель, пусть без пагинации останется, там просто надо еще место править, я сейчас гляну...

Надіслати
Поділитися на інших сайтах


Вообщем там такая запись

$this->request->get['limit']

Встречается в категории, в производителе, в поиске, в специальных предложениях, т.е. там везде я так понимаю можно указать лимит 1000. Но все они завязаны на одно место которое Вы уже поправили, а вот пагинацию надо править во всех этих местах. Лучше это как-то сделать расширением класса request, типа как фильтрацию параметра limit сделать и тогда первые даже правки не понадобятся. А еще лучше распознавать такие запросы и делать редирект на limit=100, вот это вообще правильно будет. Он такой 1000 ввел, а его обратно на 100

Надіслати
Поділитися на інших сайтах


1 час назад, i3bepb сказал:

Вообщем там такая запись


$this->request->get['limit']

Встречается в категории, в производителе, в поиске, в специальных предложениях, т.е. там везде я так понимаю можно указать лимит 1000. Но все они завязаны на одно место которое Вы уже поправили, а вот пагинацию надо править во всех этих местах. Лучше это как-то сделать расширением класса request, типа как фильтрацию параметра limit сделать и тогда первые даже правки не понадобятся. А еще лучше распознавать такие запросы и делать редирект на limit=100, вот это вообще правильно будет. Он такой 1000 ввел, а его обратно на 100

подумаю на досуге.

 

в любом случае проблема решена, большое спасибо!

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.