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

Как настроить сортировку по производителям?


dementor

Recommended Posts

Имеется небольшой вопрос:Предположим пользователь заходит на сайт и выбирает определенную товарную группу: ну например авторучки. Он попадает на страничку где находятся все все авторучки, которые есть в БД. При этом каждая авторучка привязана к определенному производителю.Вопрос такой - можно ли как-то настроить сортировку, чтобы после выбора авторучек у пользователя была возможность не только отсортировать по имени, но и по производителю (например отсеять ненужных и тп)...

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


  • 3 months later...

На оф. сайте есть готовый модуль, правда для 1.4.0 версии, немного его допилить и будет все готово, но модуль не универсальный совершенно, т.к. тупо переписывает файлы. Я за пару часов прикрутил, всё работает.

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

  • 2 weeks later...

Сделал так:

в файл /catalog/viewteheme/dafault/template/product/category.tpl

<div class="div1">Сортировка по производителю:<select onchange="location = this.value"><option value="http://domain/index.php?route=product/category&path=20&sort=p.sort_order&order=ASC"<?phpif (!isset($_GET['brand'])) {echo 'selected="selected"';}?>>По умолчанию</option><?php$what_id_category=mysql_query("select category_id from oc_category_description where name='$heading_title'");$path_get=mysql_fetch_array($what_id_category);$pathget=$path_get['category_id'];$what_category_to_product=mysql_query("select product_id from oc_product_to_category where category_id=$pathget");$wherezapros=' ';	while ($what_categorytoproduct=mysql_fetch_array($what_category_to_product))	{	$whatcategorytoproduct=$what_categorytoproduct['product_id'];	$wherezapros='' .$wherezapros. ' or  product_id=' .$whatcategorytoproduct. '';	}	$what_man_to_product=mysql_query("select DISTINCT  manufacturer_id from oc_product where 1=3  $wherezapros");		while ($what_mantoproduct=mysql_fetch_array($what_man_to_product))			{			$whatmantoproduct=$what_mantoproduct['manufacturer_id'];			$what_man_to_man=mysql_query("select name from oc_manufacturer where manufacturer_id=$whatmantoproduct");			while ($what_mantoman=mysql_fetch_array($what_man_to_man))				{ ?><option value="http://domain/index.php?route=product/category&path=<?php echo $this->request->get['path']; ?>&brand=<?php echo $whatmantoproduct; ?>"<?php if (isset($_GET['brand'])) {$brandselect=$_GET['brand'];	if ($brandselect==$whatmantoproduct)	{	echo 'selected="selected"';	}}   ?>> <?php echo $what_mantoman['name']; ?></option><?php				                               }							}?></select></div>

здесь я прям в части view делаю запросы в базу что бы определить какие производители есть в данной категории, и потом передаю их в function getProductsByCategoryId по средством переменной brand, которая передаётся GET

в которой пишу следущее:

if (isset($_GET['brand'])) {$sql .= "AND m.manufacturer_id='" .$_GET['brand']. "'";}

То есть если гет запросом приходит переменная brand, то в sql запрос добавляется условия, что выводить только товары в данной категории, данного производителя.

Конечно, я согласен что это не самый лучший вариант, те же запросы в базу можно было объединить в один и вообще sql запросы не должны располагаться в части view, но это работает.Мне было бы приятно если бы кто нибудь заморочился и привёл этот код в нормальный вид и к модели mvc.

Змінено користувачем Гість
edit -> save
Надіслати
Поділитися на інших сайтах

Сделал так:в файл /catalog/viewteheme/dafault/template/product/category.tplв которой пишу следущее:

if (isset($_GET['brand'])) {$sql .= "AND m.manufacturer_id='" .$_GET['brand']. "'";}
Можно по подробнее, что это и куда его втулить? :)Что-то или не так понимаю или вообще не то делаю :roll:Заранее благодарен!
  • +1 1
Надіслати
Поділитися на інших сайтах


  • 3 months later...
  • 3 months later...

if (isset($_GET['brand'])) {$sql .= "AND m.manufacturer_id='" .$_GET['brand']. "'";} - это нужно вставить в функцию в controller/product/product.php

Не правильно указал людям куда надо ставить :) Нужно ставить в catalog/model/catalog/product.php

Ищите функцию:

public function getProductsByCategoryId
вставить перед:

$sort_data = array(
			'pd.name',
			'p.sort_order',
			'special',
			'rating',
			'p.price',
			'p.model'
		);

Тоесть получается буде так:

if (isset($_GET['brand'])) {$sql .= "AND m.manufacturer_id='" .$_GET['brand']. "'";}

$sort_data = array(
			'pd.name',
			'p.sort_order',
			'special',
			'rating',
			'p.price',
			'p.model'
		);
  • +1 1
Надіслати
Поділитися на інших сайтах


  • 1 year later...

DJCyxapuk

Ромбики - это признак неправильной кодировки текста.

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

А каким боком Ваш вопрос относится к теме

Как настроить сортировку по производителям?

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


DJCyxapuk

А Вы руками пишете названия категорий и подкатегорий или копипастой, например из Word?

Категории только руками. Но возможно что и есть парочка которые были загружены прайс ом. А что ?
Надіслати
Поділитися на інших сайтах


  • 1 year later...

А как сортировку сделать в ocStore 1.5.5.1.1 ? У меня все останавливается на шаге, когда нужно добавить в catalog/model/catalog/product.php  

if (isset($_GET['brand'])) {$sql .= "AND m.manufacturer_id='" .$_GET['brand']. "'";}

нет в этом файле функции: 

public function getProductsByCategoryId

А так сами производители отображаются:

кадр_3.jpg

post-669675-0-68415200-1391755909_thumb.jpg

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


  • 3 weeks later...
  • 5 months later...

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

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

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

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

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

Вхід

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

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

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

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

Important Information

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