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

[Решено] Сортировка товаров по цене(по умолчанию)


st1tch

Recommended Posts

Всем доброго дня!

 

Внес данные изменения для сортировки товара по цене: меняем $sort = 'pd.name'; на $sort = 'p.price'

 

Все хорошо работает при дефолтном кол-ве товаров на страницу "15"

 

Если вывести не 15 товаров на страницу, а больше, то вся растановка по цене сбивается.

 Как решить данную проблему, сталкивался может кто?

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


Как поменять сортировку на другие правила - это понятно.
А как сделать сортировку по-умолчанию на двух правилах? Скажем, сначала по производителю, а в пределах производителя - по наличию?
Т.е. Сначала самсунги, в конце списка самсунги, которых уже не осталось в наличии, и затем пошли нокии.

Можно ли это технически? Какую строку дописать в контроллере для этого?

 

Jenya495,

» Если вывести не 15 товаров на страницу, а больше, то вся растановка по цене сбивается.

Где выводите другое количество - в админке, контроллере или в каталоге (при сортировке)? И что значит сбивается - какие цены показывает?

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


Как поменять сортировку на другие правила - это понятно.

А как сделать сортировку по-умолчанию на двух правилах? Скажем, сначала по производителю, а в пределах производителя - по наличию?

Т.е. Сначала самсунги, в конце списка самсунги, которых уже не осталось в наличии, и затем пошли нокии.

Можно ли это технически? Какую строку дописать в контроллере для этого?

 

Jenya495,

» Если вывести не 15 товаров на страницу, а больше, то вся растановка по цене сбивается.

Где выводите другое количество - в админке, контроллере или в каталоге (при сортировке)? И что значит сбивается - какие цены показывает?

При выводе товара в категории, можно выставлять кол-во выводимого товара.

15-25-50-75-100

 

Так вот если к примеру выбрать 50, то товар выводится не по возрастанию цены, а хаотично.

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


  • 4 months later...

Здравствуйте, не подскажете, как сделать вывод товара по умолчанию: по цене - возрастание, и по наличию - если товара нет в наличии, то он в конце.
По отдельности решении есть, но нужно чтобы работали оба условия. Спасибо!

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


  • 5 months later...

Добрый день.  Ребята, а подскажите такой момент.  У меня начальник не хочет отключать товары которых нет, он ставит цену ( 0 ) и когда мы по фильтру выводим от низкой цены к высокой, то первыми становятся те товары у которых цена 0, можно каким то образом сделать так чтоб если выбираем от низкой к высокой, то чтоб товары с ценой 0 вставали в самый низ страницы.  Или может это сделать на всех фильтрах чтоб цены ноль всегда были в низу, ну а остальные так как было задумано?

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


  • 5 weeks later...
if (isset($this->request->get['sort'])) {

$sort = $this->request->get['sort'];

} else {

$sort = 'rating';

}

 

if (isset($this->request->get['order'])) {

$order = $this->request->get['order'];

} else {

$order = 'ASC';

}

 

Но изменения порядка товаров по рейтингу не включаются на сайте. Как сделать?

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


Немножко протупил sad.gif Итак сначала:

Добавить код в файл catalog/controller/product/category.php у меня 206 строка.

$this->data['sorts'][] = array(
					'text'  => 'Дате поступления',
					'value' => 'p.date_added-DESC',
					'href'  => $this->model_tool_seo_url->rewrite(HTTP_SERVER . 'index.php?route=product/category&path=' . $this->request->get['path'] . '&sort=p.date_added&order=DESC')
				); 	
Изменить это (64 строка):

if (isset($this->request->get['sort'])) {
            $sort = $this->request->get['sort'];
         } else {
            $sort = 'pd.name';
         }

         if (isset($this->request->get['order'])) {
            $order = $this->request->get['order'];
         } else {
            $order = 'ASC';
         }
на это:

if (isset($this->request->get['sort'])) {
				$sort = $this->request->get['sort'];
			} else {
				$sort = 'p.date_added';
			}

			if (isset($this->request->get['order'])) {
				$order = $this->request->get['order'];
			} else {
				$order = 'DESC';
			}
И самое главное добавляем в файл catalog/model/catalog/product.php в массив $sort_data (18 строка) вот это: 'p.date_added'. В результате должно быть так:

		$sort_data = array(
			'LCASE(pd.name)',
			'p.price',
			'rating',
			'p.date_added'
		);

Мне эта тема помогла https://opencartforum.com/topic/6961-sortirovka-po-alfavitu-po-umolchaniiu-kak/page-2

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


  • 1 year later...

Добрый день.

Возможно этот вопрос неоднократно поднимался, но к сожалению не нашел на него ответа.

Как сделать сортировку по цене от меньшего к большему, но чтобы начиналось не с 0 а например с 1.

Так как есть много товаров с ценой 0, и они идут в начале списка, что совсем не хорошо.

Буду благодарен за помощь.!

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


Актуально!

Как сделать сортировку, что бы выполнялось ДВА! условия, по модели(А-Я) и по дате добавления.

Народ, кто знает, напишите плииз, такое вообще возможно?)

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


  • 6 months later...

Я знаю icon_redface.gif

открываем файлик

/catalog/controller/product/category.php

находим там гдето с 64й строчки такую надпись

------------------------------------------------------------------------

if (isset($this->request->get['sort'])) {

$sort = $this->request->get['sort'];

} else {

$sort = 'pd.name';

}

------------------------------------------------------------------------

меняем $sort = 'pd.name'; на $sort = 'p.price'

если хотите сортировать по убыванию тогда меняем

------------------------------------------------------------------------

if (isset($this->request->get['order'])) {

$order = $this->request->get['order'];

} else {

$order = 'ASC';

}

------------------------------------------------------------------------

меняем $order = 'ASC'; на $order = 'DESC'

можно менять такие значения

$sort = 'pd.name'; - по Имени

$sort = 'p.price'; - по Ценам

$sort = 'rating'; - по Рейтингу

Направление

$order = 'ASC'; - от А до Я (Низкому)

$order = 'DESC' - от Я до А (Высокому)

 

в ocStore-2.1.0.2.1 работает, спасибо! Если не заработает, то в "Менеджере обновлений" обновить кэш.

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


  • 3 months later...

Я знаю :oops:

открываем файлик

/catalog/controller/product/category.php

находим там гдето с 64й строчки такую надпись

------------------------------------------------------------------------

if (isset($this->request->get['sort'])) {

$sort = $this->request->get['sort'];

} else {

$sort = 'pd.name';

}

------------------------------------------------------------------------

меняем $sort = 'pd.name'; на $sort = 'p.price'

если хотите сортировать по убыванию тогда меняем

------------------------------------------------------------------------

if (isset($this->request->get['order'])) {

$order = $this->request->get['order'];

} else {

$order = 'ASC';

}

------------------------------------------------------------------------

меняем $order = 'ASC'; на $order = 'DESC'

можно менять такие значения

$sort = 'pd.name'; - по Имени

$sort = 'p.price'; - по Ценам

$sort = 'rating'; - по Рейтингу

Направление

$order = 'ASC'; - от А до Я (Низкому)

$order = 'DESC' - от Я до А (Высокому)

Помогите! Что я делаю не так? Вот кусок кода, необходимо сделать сортировку по цене, но при смене значений не меняется ничего... Выбирал разные сортировки, в на сайте сортировка по прежнему остается по названию (по умолчанию.) Заранее спасибо!

post-722024-0-41575600-1483125363_thumb.png

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


  • 5 months later...

Вы видели пример сортировки - не показывать товары с ценой 0

 

Вот и отталкивайтесь от него

ORDER BY WHEN price>0

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

            $data['sorts'][] = array(
                'text'  => $this->language->get('text_name_asc'),
                'value' => 'pd.name-ASC',
                'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=ASC' . $url)
            );
            $data['sorts'][] = array(
                'text'  => $this->language->get('text_name_desc'),
                'value' => 'pd.name-DESC',
                'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=DESC' . $url)
            );


catalog\controller\product\category.php

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

  • 2 weeks later...

сейчас у меня сортировка не применяется дефолтно, её нужно перевключать руками:

Скрытый текст

cHO2j2u.png

 

решено \catalog\controller\product\category.php:

		if (isset($this->request->get['sort'])) {
			$sort = $this->request->get['sort'];
		} else {
			$sort = 'p.price';
		}

 

Змінено користувачем anque
Надіслати
Поділитися на інших сайтах


  • 2 months later...

Мне помог следующий способ на OcStore 2.3

/catalog/controller/product 

файл category.php

у меня строка 250 

            $data['sorts'][] = array(
                'text'  => $this->language->get('text_default'),
                'value' => 'p.sort_order-ASC',
                'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.sort_order&order=ASC' . $url)
            );

 

меняем на 

            $data['sorts'][] = array(
                'text'  => $this->language->get('text_default'),
                'value' => 'p.price-ASC',
                'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=ASC' . $url)
            );

 

Сортирует по возрастанию цены

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


  • 6 months later...

Народ где еще  могуть быть настройки по сортировке в категорях кроме контроллера , так как хочу сделать сортировку по рейтингу, (через контроллер уже все перебпобовал) а оно и так неправельно сортирует?

В категории есть три товара, каждому зада свой рейтинг:

РЕйтинг по DESC

1товар - рейтинг 3

2- рейтинг 2

3- рейтинг 1

А вивод в таком порядке 1, 3 ,2 - товар

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


  • 1 month later...
On 2/18/2010 at 1:58 PM, Agat said:

Я знаю :oops:открываем файлик/catalog/controller/product/category.phpнаходим там гдето с 64й строчки такую надпись------------------------------------------------------------------------ if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; } else { $sort = 'pd.name'; }------------------------------------------------------------------------меняем $sort = 'pd.name'; на $sort = 'p.price' если хотите сортировать по убыванию тогда меняем------------------------------------------------------------------------ if (isset($this->request->get['order'])) { $order = $this->request->get['order']; } else { $order = 'ASC'; }------------------------------------------------------------------------меняем $order = 'ASC'; на $order = 'DESC' можно менять такие значения $sort = 'pd.name'; - по Имени $sort = 'p.price'; - по Ценам$sort = 'rating'; - по РейтингуНаправление $order = 'ASC'; - от А до Я (Низкому)$order = 'DESC' - от Я до А (Высокому)

 

Огроменное спасибо за наводку. 

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


  • 2 weeks later...
В ‎19‎.‎09‎.‎2017 в 21:35, posad сказал:

/catalog/controller/product 

файл category.php

не могу найти в этом файле

В ‎10‎.‎09‎.‎2016 в 18:46, 14scorpion сказал:

if (isset($this->request->get['sort'])) {

$sort = $this->request->get['sort'];

} else {

$sort = 'pd.name';

}

у меня опенкарт 2,3,,, русская сборка

подскажите , что блин не так!

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


  • 3 months later...
В 04.06.2010 в 11:34, demiurge сказал:

Немножко протупил :( Итак сначала:

Добавить код в файл catalog/controller/product/category.php у меня 206 строка.

 


$this->data['sorts'][] = array(					'text'  => 'Дате поступления',					'value' => 'p.date_added-DESC',					'href'  => $this->model_tool_seo_url->rewrite(HTTP_SERVER . 'index.php?route=product/category&path=' . $this->request->get['path'] . '&sort=p.date_added&order=DESC')				); 	

Изменить это (64 строка):

 


if (isset($this->request->get['sort'])) {            $sort = $this->request->get['sort'];         } else {            $sort = 'pd.name';         }         if (isset($this->request->get['order'])) {            $order = $this->request->get['order'];         } else {            $order = 'ASC';         }

на это:

 


if (isset($this->request->get['sort'])) {				$sort = $this->request->get['sort'];			} else {				$sort = 'p.date_added';			}			if (isset($this->request->get['order'])) {				$order = $this->request->get['order'];			} else {				$order = 'DESC';			}

И самое главное добавляем в файл catalog/model/catalog/product.php в массив $sort_data (18 строка) вот это: 'p.date_added'. В результате должно быть так:

 


		$sort_data = array(			'LCASE(pd.name)',			'p.price',			'rating',			'p.date_added'		);

У меня OpenCart 2.1.0.2 и этот способ не работает. Да, тип сортировки по "Дате добавления" добавляется, и даже действует правило. Но если повторно зайти с главной в любой каталог, все равно работает старая сортировка "По умолчанию", которую я вообще удалил из кода...

В данный по пути public_html/catalog/controller/product/category.php с 18-й строки вот так:

if (isset($this->request->get['sort'])) {
            $sort = $this->request->get['sort'];
        } else {
            $sort = 'p.date_added';
        }

        if (isset($this->request->get['order'])) {
            $order = $this->request->get['order'];
        } else {
            $order = 'DESC';

 

А с 239-й строки вот так:

                $data['sorts'][] = array(
                'text'  => $this->language->get('Дате поступления'),
                'value' => 'p.date_added-DESC',
                'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.date_added&order=DESC' . $url)
            );

 

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


  • 1 year later...

Сортировка по цене Opencart OCStore 2.3 по умолчанию

Что бы сделать по умолчанию сортировку по цене по возрастанию (от меньшего к большему) нужно открыть файл /catalog/controller/product/category.php и найти код:

1
2
3
4
5
6
7
8
9
$filter_data = array(
 
  'filter_category_id' => $category_id,
  'filter_filter'      => $filter,
  'sort'               => $sort,
  'order'              => $order,
  'start'              => ($page - 1) * $limit,
  'limit'              => $limit
);

Перед этим кодом нужно добавить такой:

1
2
3
4
5
6
7
//Сортировка по умолчнию по цене
if (!isset($this->request->get['sort'])) {
   $sort = 'p.price';
}
if (!isset($this->request->get['order'])) {
   $order = 'ASC'; // ASC от меньшего к большему (DESC от большего к меньшему)
}

Открыть Админку->Менеджер дополнений->Обновить

Проверяем сортировка должна измениться.

Змінено користувачем stdk84
Надіслати
Поділитися на інших сайтах


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

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

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

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

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

Вхід

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

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

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

×
×
  • Створити...

Important Information

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