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

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

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

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

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


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

Вопрос расширенной сортировки стоит остро ! И пока ясно не решен !

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


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

А можно ли где-нибудь узнать в каких файлах прописана сортировка?

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


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

А можно ли где-нибудь узнать в каких файлах прописана сортировка?

Насколько я помню в файлах controller .

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


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

Будет время - гляну чего там и как. Может сам допишу.

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


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

Актуально! как сделать чтобы по умолчанию выводилась сортировка по производителю?

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


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

Все сделал :roll: всему виной моя лень))) хе хе

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


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

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

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


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

уважаемый shoma !Не томите в неведении - поделитесь наработкой. Очень актуально. =)

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


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

Сделал так:

в файл /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.

Изменено пользователем afwollis
edit -> save
  • +1 2

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


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

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

if (isset($_GET['brand'])) {$sql .= "AND m.manufacturer_id='" .$_GET['brand']. "'";}
Это где?С уважением.

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


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

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

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

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


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

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

p.s: Автору кода большое спасибо, работает!)

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


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

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


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

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

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


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

А у меня ромбики вместо текста и в категориях ничего не выпадает. :cry:

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


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

DJCyxapuk

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

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

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

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

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


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

Как каким ? Хочу настроить сортировку а у меня ромбики и родительская категория указана

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


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

DJCyxapuk

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

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


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

DJCyxapuk

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

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

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


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

А как сортировку сделать в 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

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


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

Что никто не сталкивался с этим в ocStore 1.5.5.1.1 ?

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


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

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

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

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

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

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

Войти

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

Войти

  • Последние посетители   0 пользователей онлайн

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

×

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

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