Перейти к содержанию
Форум поддержки пользователей VamShop

Сортировка результатов поиска


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

Подскажите, как добавить сортировку в результате поиска. Дело в том что, что когда используешь алфавитный указатель(поис по первой букве), то товары выводятся черти как. Подскажите решение данной проблемы.

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

sql запрос (выборка товара) формируется в файле /advanced_search_result.php

Может там что-то править нужно.

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

Неужели никто не может помочь? Ведь иначе смысл такого алфавитного упорядочивания, если результаты выводятся в разнобой. Нет, конечно, все товары, которые выдаст такой поиск, будут начинаться на нужную букву, но это будет такого вида:

Болт

Баранка

Буратино

Блин

Ну куда это годится? Помогите, пожалуйста.

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

Порядок сортировки задаётся в advanced_search_result.php

В SQL запросе, параметром order by

Может там что-то не так, сложно сказать.

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

Тогда у меня еще два вопроса.

1. Как вывести название производителя в результатах поиска, самому не получается решить..

2. Скидки на атрибуты не действуют? В магазине у меня все на атрибутах построено, хотел бы реализовать также возможность скидок на товары, но как вижу атрибуты на скидки не реагируют.

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

1. Примерно также как выводили в список товара, нужно поправить sql запрос в advanced_search_result.php

2. Какие имеено скидки?! Действует как я понимаю скидка на атрибуты, которая ставится в настройках групп покупателей в Админке - Покупатели - Группы.

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

ПО-моему имеются в виду скидки, которые появляются в боксе special. Там на атрибуты скидка не распространяется

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

Примерно также не получается

Вместо:

	$select_str = "SELECT distinct
                  p.products_id,
                  p.products_price,
                  p.products_model,
                  p.products_quantity,
                  p.products_shippingtime,
                  p.products_fsk18,
                  p.products_image,
                  p.products_weight,
                  p.products_tax_class_id,
                  pd.products_name,
                  pd.products_short_description,
                  pd.products_description ";

$from_str  = "FROM ".TABLE_PRODUCTS." AS p LEFT JOIN ".TABLE_PRODUCTS_DESCRIPTION." AS pd ON (p.products_id = pd.products_id) ";
[/code] Вставляю:
[code] $select_str = "SELECT distinct
                  p.products_id,
  p.manufacturers_id,
                  p.products_price,
                  p.products_model,
                  p.products_quantity,
                  p.products_shippingtime,
                  p.products_fsk18,
                  p.products_image,
                  p.products_weight,
                  p.products_tax_class_id,
                  pd.products_name,
                  pd.products_short_description,
                  pd.products_description ";

$from_str  = "FROM ".TABLE_PRODUCTS." AS p LEFT JOIN ".TABLE_MANUFACTURERS." AS m ON (p.manufacturers_id = m.manufacturers_id) ".TABLE_PRODUCTS_DESCRIPTION." AS pd ON (p.products_id = pd.products_id) ";
Получаю ошибку:

31/08/2008 17:08:09 | 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'products_description AS pd ON (p.products_id = pd.products_id)   | SELECT distinct
                  p.products_id,
  p.manufacturers_id,
                  p.products_price,
                  p.products_model,
                  p.products_quantity,
                  p.products_shippingtime,
                  p.products_fsk18,
                  p.products_image,
                  p.products_weight,
                  p.products_tax_class_id,
                  pd.products_name,
                  pd.products_short_description,
                  pd.products_description FROM products AS p LEFT JOIN manufacturers AS m ON (p.manufacturers_id = m.manufacturers_id) products_description AS pd ON (p.products_id = pd.products_id)  LEFT OUTER JOIN products_attributes AS pa ON (p.products_id = pa.products_id) LEFT OUTER JOIN products_options_values AS pov ON (pa.options_values_id = pov.products_options_values_id) LEFT OUTER JOIN specials AS s ON (p.products_id = s.products_id) AND s.status = '1' LEFT OUTER JOIN products_to_products_extra_fields AS pe ON (p.products_id = pe.products_id) WHERE p.products_status = '1'  AND pd.language_id = '1' AND (  ( pd.products_keywords LIKE ('%e%') OR pd.products_description LIKE ('%e%') OR pd.products_short_description LIKE ('%e%') OR pd.products_name LIKE ('%e%') OR p.products_model LIKE ('%e%')  OR pe.products_extra_fields_value LIKE ('%e%') OR (pov.products_options_values_name LIKE ('%e%') AND pov.language_id = '1') )  ) GROUP BY p.products_id ORDER BY pd.products_name  | /shop/advanced_search_result.php?keywords=e&x=5&y=12
[/code]

По поводу скидок. Может я конечно чего не так делаю: захожу в админку, захожу в скидки, жму новый товар и указываю на него скидку, к примеру 10%. Все что мне выводится на странице товара, так это 0 вместо 0 и не измененные цены на атрибуты.

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

Попробуйте вот такой SQL запрос в /advanced_search_result.php:


$select_str = "SELECT distinct
                  p.products_id,
                  p.products_price,
                  p.products_model,
                  p.products_quantity,
                  p.products_shippingtime,
                  p.products_fsk18,
                  p.products_image,
                  p.products_weight,
                  p.products_tax_class_id,
                  pd.products_name,
                  m.manufacturers_name,
                  pd.products_short_description,
                  pd.products_description ";

$from_str  = "FROM ".TABLE_PRODUCTS." AS p LEFT JOIN ".TABLE_PRODUCTS_DESCRIPTION." AS pd ON (p.products_id = pd.products_id) LEFT OUTER JOIN ".TABLE_MANUFACTURERS." AS m ON (p.manufacturers_id = m.manufacturers_id) ";
[/code] Не забудьте в /includes/classes/product.php добавить:
[code]
      'MANUFACTURER_NAME'=>$array['manufacturers_name'],
после:

      'PRODUCTS_MODEL'=>$array['products_model'],
[/code] и в шаблон списка товаров /templates/шаблон/module/product_listing/product_listing_list.html добавить метку:
[code]
{$module_data.MANUFACTURER_NAME}

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

Не хочет:

31/08/2008 19:08:42 | 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'manufacturers AS m ON (p.manufacturers_id = m.manufacturers_id)  | SELECT distinct
                  p.products_id,
                  p.products_price,
                  p.products_model,
                  p.products_quantity,
                  p.products_shippingtime,
                  p.products_fsk18,
                  p.products_image,
                  p.products_weight,
                  p.products_tax_class_id,
                  pd.products_name,
  m.manufacturers_name,
                  pd.products_short_description,
                  pd.products_description FROM products AS p LEFT JOIN products_description AS pd ON (p.products_id = pd.products_id) manufacturers AS m ON (p.manufacturers_id = m.manufacturers_id)  LEFT OUTER JOIN products_attributes AS pa ON (p.products_id = pa.products_id) LEFT OUTER JOIN products_options_values AS pov ON (pa.options_values_id = pov.products_options_values_id) LEFT OUTER JOIN specials AS s ON (p.products_id = s.products_id) AND s.status = '1' LEFT OUTER JOIN products_to_products_extra_fields AS pe ON (p.products_id = pe.products_id) WHERE p.products_status = '1'  AND pd.language_id = '1' AND (  ( pd.products_keywords LIKE ('%h%') OR pd.products_description LIKE ('%h%') OR pd.products_short_description LIKE ('%h%') OR pd.products_name LIKE ('%h%') OR p.products_model LIKE ('%h%')  OR pe.products_extra_fields_value LIKE ('%h%') OR (pov.products_options_values_name LIKE ('%h%') AND pov.language_id = '1') )  ) GROUP BY p.products_id ORDER BY pd.products_name  | /shop/advanced_search_result.php?keywords=h&x=19&y=17
[/code]

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

А ты точно запрос вставил как я показал?!

Что-то у тебя не такой.

Должно быть:


LEFT JOIN products_description AS pd ON (p.products_id = pd.products_id) manufacturers AS m ON (p.manufacturers_id = m.manufacturers_id)
[/code] а не:
[code]
LEFT JOIN products_description AS pd ON (p.products_id = pd.products_id) LEFT OUTER JOIN manufacturers AS m ON (p.manufacturers_id = m.manufacturers_id)

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

Да спасибо, действительно ошибся.

Подскажи еще в моей, казалось бы, не сложной задаче:

Допустим, посетитель пользуется поиском, который ищет товары начинающиеся на указанную букву. Допустим, это буква "e".

Он заходит по ссылке "advanced_search_result_alph.php?keywords=E", назовем этот путь "x". Нужно, чтобы в появившейся странице с результатми присутствовали две ссылки "x&categories_id=2&inc_subcat=1&x=35&y=8" и "x&categories_id=3&inc_subcat=1&x=35&y=8".

Ну и еще у меня все таки не работают скидки с атрибутами.

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

Стоит добавить, что путь не должен дублироваться, при переходе на следующую страницу. То есть посетитель, который перешел по ссылке "x&categories_id=2&inc_subcat=1&x=35&y=8" должен будет продолжать видеть такую ссылку, а не ""x&categories_id=2&inc_subcat=1&x=35&y=8&categories_id=2&inc_subcat=1&x=35&y=8" (дублирующая), что можно достичь java скриптом, определяющим текущую страницу.

Другими словами, у меня есть алфавитный указатель и две основные категории: женские и мужские товары, мне нужно чтобы поиск можно было осуществить еще и по этим категориям.

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

так там же есть фильтры , которые правятся в /includes /default.php  Через них вполне можно фильтровать по любому признаку. Они показывают все категории, в которых содержатся выведенные товары

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

Насчёт твоег вопроса конкретного ничего даже не могу подсказать.

А вот насчёт скидок атрибутов, может они просто направильно настроены, не указана скидка в настройка групп покупателей в Админке - Покупатели - Группы?!

Там есть опция Скидка на атрибуты, кажется так.

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

Подожди, я хочу сделать скидку не для группы пользователей, а на отдельный товар для все групп пользователей. Я захожу в катало -> скидки -> новый товар . Выбираю товар и назначаю скидку 10%.

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

Если делать для группы пользователей, то есть скидку на все товары определенной группе лиц, то все работает. А на отдельные товары для всех почему тогда не хочет работать?

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

И еще у меня тут после переноса с локальной тачки на хостинг, стал использоваться шаблон результатов поиска product_listing_list.html вместо нужного мне product_listing_columns.html.

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

Что значит выбираю товар и назначаю скидку 10% ?!

Где ты его выбираешь?!

Скидки не ставятся при создании товара.

Вот есть какие скидки, посмотри в руководстве - http://vamshop.ru/manual/ch06.html

Если ты имеешь в виду опцию Максимально возможная скидка при создании товара, то это ж не скидка ставится, это ставится максимально возможная скидка, которая может быть применена к данному конкретному товару.

Например у тебя у группы Оптовые покупатели скидка на вс 50%

А ты хочешь, что б на товар X вне зависимости от группу покупателя была максимум скидка 10%

Так вот ты пишешь в опции Максимально возможная скидка - 10 и вне зависимости от настроек групп скидка на такой товар не будет превышать 10%.

По поводу шаблона.

Самое простое, скопируй содержимое файла product_listing_columns.html в файл product_listing_list.html, т.е. у тебя будет два разных файла с одинаковым содержимым.

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

А что тогда это "admin/specials.php"? новый товар, новая категория.

Файлы product_listing_columns.html и product_listing_list.html мне нужны разные.

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

Ну я ж и спрашиваю, как ты скидки ставишь.

На атрибуты скидки, которые в Админке - Каталог - Скидки не действуют, только на сам товар.

Скидка на атрибуты лишь может быть указана для всех группы общая, как я писал выше.

Если нужны разные, тогда отредактируй категории в админке - каталог и в опции Шаблон списка товаров выбирай каждой категории тот шаблон, которым должны рисоваться товары внутри этой категории.

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