Jump to content
st1tch

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

Recommended Posts

огромное спасибо

Share this post


Link to post
Share on other sites

Может кто подскажет как реализовать сортировку по наличию товара на складе? Буду очень признателен.

Share this post


Link to post
Share on other sites

Может кто подскажет как реализовать сортировку по наличию товара на складе? Буду очень признателен.

в поиск. среди моих ответов точно есть

Share this post


Link to post
Share on other sites

добрый день, как сделать сортировку по категориам?

Share this post


Link to post
Share on other sites

Подниму старую тему..помогите сделать сортировку по умолчанию по модели товара. Смысл в том чтоб товар по разному расфасованый но одной модели находился рядом.

opencart

1.4.9.3

Share this post


Link to post
Share on other sites

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

$this->data['sorts'][] = array(
					'text'  => 'Дате поступления',
					'value' => 'date_available-DESC',
					'href'  => $this->model_tool_seo_url->rewrite(HTTP_SERVER . 'index.php?route=product/category&path=' . $this->request->get['path'] . '&sort=date_available&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 = 'date_available';
			}

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

А если без seo_URL?

Share this post


Link to post
Share on other sites

Как реализовать следующее:

Товары добавляются по новизне (date_added  или  date_available ) 

Например товар закончился и я ставлю на него метку  - нет в наличии - он должен уходить в конец всего списка товаров - как именно реализовать данный тип сортировки?

Что я предпринял:

/catalog/controller/product/category.php

добавил

$sort = $this->request->get['sort'];
} else {
$sort = 'p.date_available';
//$sort = 'p.sort_order';
}
$this->data['sorts'][] = array(
  'text'  => $this->language->get('text_default'),
  'value' => 'p.date_available-ASC',
  'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.date_available&order=ASC' . $url)
			);
$sort_data = array(
  'pd.name',
  'p.model',
  'p.quantity',
  'p.price',
  'rating',
  'p.sort_order',
  'p.date_added',
  'p.date_available'
); 

 

/catalog/model/catalog/product.php

Но сейчас сортирует почему то по алфавиту....

 

Share this post


Link to post
Share on other sites
Делаем, товар которого нет в наличии в конце списка при просмотре в категориях. На основе этого можете сделать отображение в поиске, в производителях и т.д

 

Для того чтобы товар которого нет в наличии был в конце списка, нам нужно поменять сортировку по умолчанию.

 

Открываем catalog/controller/product/category.php

 

Ищем строки и делаем как ниже указано:

 

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

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

} else {

 //$sort = 'p.sort_order';

 $sort = 'p.quantity';

}

 

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

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

} else {

 //$order = 'ASC';

  $order = 'DESC';

}
  • +1 2

Share this post


Link to post
Share on other sites
Делаем, товар которого нет в наличии в конце списка при просмотре в категориях. На основе этого можете сделать отображение в поиске, в производителях и т.д
 
Для того чтобы товар которого нет в наличии был в конце списка, нам нужно поменять сортировку по умолчанию.
 
Открываем catalog/controller/product/category.php
 
Ищем строки и делаем как ниже указано:
 
if (isset($this->request->get['sort'])) {
 $sort = $this->request->get['sort'];
} else {
 //$sort = 'p.sort_order';
 $sort = 'p.quantity';
}
 
if (isset($this->request->get['order'])) {
 $order = $this->request->get['order'];
} else {
 //$order = 'ASC';
  $order = 'DESC';
}

Главное, чтобы свеже добавленные товары отображались первыми - при таком варианте такое как я понимаю не будет работать?

Share this post


Link to post
Share on other sites

Всем привет! Очень нужна помощь по сортировке товара по дате поступления на склад date_modified или date_available

 

Суть сортировки, когда товар поступает на склад он становится первым.

Сайт на сборке MaxyStore на основе OpenCart v.1.5.4.1


в файле catalog/controller/product/category.php изменил код на:

 

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

13. $sort = $this->request->get['sort'];
14. } else {
15. $sort = 'date_modified';
16. }
17.
18. if (isset($this->request->get['order'])) {
19. $order = $this->request->get['order'];
20. } else {
21. $order = 'ASC';
22. }
 
а так же:
 
226. $this->data['sorts'] = array();
227. 
228. $this->data['sorts'][] = array(
229. 'text'  => $this->language->get('text_default'),
230. 'value' => 'date_modified-date_ASC',
231. 'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=date_modified&order=ASC' . $url)
232. );

 

в файле /catalog/model/catalog/product.php добавил:

 

182. $sql .= " GROUP BY p.product_id";

183. 
184. $sort_data = array(
185. 'pd.name',
186. 'p.model',
187. 'p.quantity',
188. 'p.price',
189. 'rating',
190. 'p.sort_order',
191. 'p.date_added'
192. 'date_modified'
193. 'date_available'
194. );
 
Вроде бы все верно, как описывали ранее, но сайт выдает ошибку в обоих случаях 'date_modified' и 'date_available':
 
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ')' in Z:\home\localhost\www\shop87\vqmod\vqcache\vq2-catalog_model_catalog_product.php on line 192
 
где catalog_model_catalog_product.php on line 192 - как раз строка с массива 'date_modified' или 'date_available'
 
ОЧЕНЬ НУЖНА ПОМОЩЬ.
  • +1 1

Share this post


Link to post
Share on other sites

Оба! Запахло говносборками! А там откуда родом сие чудо не могут помочь?

Share this post


Link to post
Share on other sites

Оба! Запахло говносборками! А там откуда родом сие чудо не могут помочь?

Да вроде хорошая сборка, проблем не было пока не столкнулся с этой задачей. 

Попробовал проделать эту схему на ocStore1541 та же проблема.

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ')' in Z:\home\localhost\www\story1541\catalog\model\catalog\product.php on line 170

Share this post


Link to post
Share on other sites

даже если ничего не менять в файле catalog/controller/product/category.php

А просто добавить строки в массив в файле /catalog/model/catalog/product.php

'date_modified' или 'date_available' все равно возникает ошибка. 

Я в php совсем не селен, могу кое какой код поправить, а программировать нет.

Буду очень признателен если окажите помощь.

Share this post


Link to post
Share on other sites

Укажите номер строк - вставьте код как полагается возможно будет понятнее...

Хотя мне пока что тоже не очень понятно как же заставить сортировать по дате изменения 

Share this post


Link to post
Share on other sites

Укажите номер строк - вставьте код как полагается возможно будет понятнее...

Хотя мне пока что тоже не очень понятно как же заставить сортировать по дате изменения 

В этой теме в #14 посте demiurge расписывает как сделать сортировку по дате добавления товара. РЕСПЕКТ - все получилось все работае.

По бодобию этого поста решил сделать сортировку не по дате создания материала а по дате поступления на склад 'date_available' ну или хотя бы по даде изменения товара 'date_modified'.

Но ничего не получилось, сервер отдает ошибку Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ')' in Z:\home\localhost\www\shop87\vqmod\vqcache\vq2-catalog_model_catalog_product.php on line 192

Где vq2-catalog_model_catalog_product.php on line 192 - и есть строка 192. 'date_modified' или 193. 'date_available' подставленная в массив.

Че делать и где ковырять незнаю, та как с этим движком работаю недавно, да и познания в php тоже не велики.

Подробнее проблему описывал в #35  посте.

Буду очень признателен.

Share this post


Link to post
Share on other sites

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ')' in [/size][/font][/color]Z:\home\localhost\www\shop87\vqmod\vqcache\vq2-catalog_model_catalog_product.php

По русски же написано - синтаксическая ошибка.

Поставьте запятые в конце 191-й и 192-й строках и будет вам счастье. ))

  • +1 2

Share this post


Link to post
Share on other sites

Огромнейшее СПАСИБО, все заработало.

А я та думал, половину движка нужно будет переписать))))))

Share this post


Link to post
Share on other sites

Мой вопрос закрыт - всем спасибо!

Share this post


Link to post
Share on other sites

Неужели никто не знает как это сделатЬ? sad.gif

Я знаю 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' - от Я до А (Высокому)

Cпасибо, помогло!

Share this post


Link to post
Share on other sites

Немножко протупил 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'
		);

Не работает, с 2010 года видимо коды поменялись. Кто знает как сделать сортировку по дате добавления товара?

Share this post


Link to post
Share on other sites

подскажите как сортировать по убыванию цены по умолчанию? установлен FilterPro Mega (кажется мне что он имеет к этому отношение).

движок ocStore 1.5.5.1.1

Share this post


Link to post
Share on other sites

если сделаете по тму же приципу как описано тут

https://opencartforum.com/topic/6961-sortirovka-po-alfavitu-po-umolchaniiu-kak/?do=findComment&comment=81095

фильтр подхватит этот способ сортировки.

только вместо

p.date_added у вас должно быть p.price

  • +1 1

Share this post


Link to post
Share on other sites
Сортировка товаров по цене низкая -> высокая

catalog/controller/product/category.php

$this->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)
);

Как задать условия, вывод товара по цене:  от 1 до бесконечности           

                                                                                сейчас по умолчанию ASC от 0 до бесконечности

Share this post


Link to post
Share on other sites

если сделаете по тму же приципу как описано тут

https://opencartforum.com/topic/6961-sortirovka-po-alfavitu-po-umolchaniiu-kak/?do=findComment&comment=81095

фильтр подхватит этот способ сортировки.

только вместо

p.date_added у вас должно быть p.price

Помогло, спасибо! ОС 1.5.5.1.1

Share this post


Link to post
Share on other sites

Я знаю 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' - от Я до А (Высокому)

 

Так же что б товары не прыгали при загрузи мега фильтра, в файле catalog/controller/module/filterpro.php

найти строчку ( в самом начале )

$sort = 'p.sort_order'; (ЕСЛИ ПО ВОЗРАСТАНИЮ ЦЕНЫ ТО НА    $sort = 'p.price';    )

и меняем на то , на что мы изменили в файле (ЕСЛИ ПО ВОЗРАСТАНИЮ ЦЕНЫ ТО НА    $sort = 'p.price';    ):

/catalog/controller/product/category.php

 

теперь при загрузке страницы с товарами ,фильтр мега не будет "дергаться"

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

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.