Arkadiy
Группа развития
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« : 28.05.2010, 14:43:01 » |
|
Представляю вашему вниманию новый расширенный поиск по характеристикам товара. Гинеологическое древо: Дед - Компонент и модуль поиска товаров VirtueMart 1.0.15 на AjaxОтец - Фильтр, или расширенный поиск по характеристикам товараНовый компонент был полностью переработан и лишен большинства (а может быть и всех) недостатков своих прародителей, взяв от них самое лучшее. Это аналог платного модуля Фильтр для VirtueMart (must have) с урезанным функционалом. Урезан он в части выбора способа вывода параметров. В отличие от платного компонента здесь все параметры выводятся селектами (выпадающими списками). Состоит расширенный поиск из модуля и компонента. Компонент может работать самостоятельно, без модуля. Модуль без компонента работать не может. Вывод результатов поиска происходит с помощью AJAX, без перезагрузки страницы. По этому есть небольшой нюанс в установке модуля (для компонента не нужно). Некоторые инструкции по установке модуля: 1. Как обычно устанавливаем и настраиваем модуль. 2. Модуль использует AJAX подгрузку результатов поиска. Для того, чтобы в любом месте сайта это было возможно необходимо в index.php шаблона Joomla вставить определенный див. Для работы модуля необходимо обрамить вывод компонента <jdoc:include type="component" /> в index.php используемого шаблона дивом. в итоге должно получиться так: <div id="main_search"> <jdoc:include type="component" /> </div> Тогда этот див будет присутствовать на любой странице, а результаты поиска будут заменять выводимое содержимое. Исправление ошибки работы отбора по типам если не выбирать категории или производителей: все, нашла в чем было дело! в файле modules\mod_vm_universal_search\mod_vm_universal_search.php у меня 68 строка, там где выводятся параметры типа <div id="mod_harakt_div" > <?php if (count($types) == 1) { $typ = array(); $typ[] = $types[0]->product_type_id; $uniSearch->get_harakt($typ, $cid, $mf_id, $conf); } ?> </div> в параметры функции get_harakt надо добавить префикс 'mod_': <div id="mod_harakt_div" > <?php if (count($types) == 1) { $typ = array(); $typ[] = $types[0]->product_type_id; $uniSearch->get_harakt($typ, $cid, $mf_id, $conf,'mod_'); } ?> </div>
|
|
|
|
« Последнее редактирование: 12.09.2011, 13:43:45 от Arkadiy »
|
Записан
|
|
|
|
| |
Maks
Новичок
Репутация: +0/-0
Offline
Сообщений: 4
|
 |
« Ответ #1 : 04.06.2010, 09:53:41 » |
|
Доброе утро. Аркадий поставил ваш модуль. Но почему то не работает кнопка "поиск". При её нажатии ничего не изменяяется и я не перехожу на найденный товар.
|
|
|
|
|
Записан
|
|
|
|
xTMx
Осваиваюсь на форуме
 
Репутация: +3/-0
Offline
Сообщений: 168
|
 |
« Ответ #2 : 04.06.2010, 10:10:14 » |
|
а вы в коде шаблона заключили вывод компонента в див нужного класса как сказано в инструкции? )
|
|
|
|
|
Записан
|
|
|
|
Maks
Новичок
Репутация: +0/-0
Offline
Сообщений: 4
|
 |
« Ответ #3 : 04.06.2010, 10:15:28 » |
|
xTMx спасибо. Действительно прочитал и забыл что это нужно сделать. Всё заработало.
|
|
|
|
|
Записан
|
|
|
|
dyominroma
Осваиваюсь на форуме
 
Репутация: +6/-0
Offline
Сообщений: 134
|
 |
« Ответ #4 : 04.06.2010, 17:47:08 » |
|
У меня фильтр по цене не работает! Точнее работает, но не корректно! У меня конвертация валюты! Товар в долларах, отображает в грн! Насколько я понял он ищет в долларах! Можно поправить! У вот ещё одно: почему не сделать некое наследование вида категории товара вместо своих стилей? Browse текущий подключить или как-то так) Сайт http://e-trade.kr.ua/!
|
|
|
|
« Последнее редактирование: 04.06.2010, 18:52:34 от dyominroma »
|
Записан
|
|
|
|
Arkadiy
Группа развития
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #5 : 04.06.2010, 18:58:01 » |
|
1. фильтрация по цене корректно работает только без конвертации валюты. 2. такого нет, но можно поправить! (ручками) 
|
|
|
|
|
Записан
|
|
|
|
dyominroma
Осваиваюсь на форуме
 
Репутация: +6/-0
Offline
Сообщений: 134
|
 |
« Ответ #6 : 05.06.2010, 18:58:22 » |
|
Не ищет товары без цены  ! Можно сортировку по цене сделать?
|
|
|
|
« Последнее редактирование: 05.06.2010, 19:19:40 от dyominroma »
|
Записан
|
|
|
|
|
Botmaster
Гость
|
 |
« Ответ #7 : 06.06.2010, 16:36:32 » |
|
У меня другая проблема, я поставил все, сделал как надо. Только почему то в списке нет ни одного производителя, хотя в магазине их больше десятка. в чем может быть причина, подскажите пожалуйста? Спасибо.
|
|
|
|
|
Записан
|
|
|
|
Arkadiy
Группа развития
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #8 : 06.06.2010, 18:35:43 » |
|
И никак нельзя помочь этому делу? Мне только и нужна такая сортировка)))
Если в админке все товары введены в одной валюте (в примере в долларах) то можно сделать так: vm_ext_search_helper.php после строк $pf = vmGet($_REQUEST, 'pf', 0); $pt = vmGet($_REQUEST, 'pt', 0); вставить $pf = $GLOBALS['CURRENCY']->convert( $pf, 'UAH' ,'USD' ); $pt = $GLOBALS['CURRENCY']->convert( $pt, 'UAH' ,'USD' ); Если в админке использованы несколько валют, то так не получится. Не ищет товары без цены  ! Можно сортировку по цене сделать? И не будет искать, так сделано.
|
|
|
|
|
Записан
|
|
|
|
Arkadiy
Группа развития
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #9 : 24.06.2010, 06:14:30 » |
|
У меня такая непростая задача… Мне нужно чтобы поиск по характеристикам находил товары из свойств товара, а не сам главный товар. Смысл поиска по характеристикам пропадает, так как в свойство можно добавить все отдельно, как и к главному товару (Тип товара и даже id отдельный), а поиск его не выводит.
Тема такая, Фирма гранитных моек Schock - 20 вариантов цветов, много моделей. Мне нужно чтобы покупатель мог выбрать, допустим, Мойка с крылом цвет: Colorado и чтобы ему поиск выдал все мойки с крылом данного цвета. Получается, что в стандартном поиске для реализации подобной вещи нужно для каждого цвета делать отдельный товар. Представьте, что получится если каждую модель вбивать в 20 вариантах цветов….
Ваш поиск на это способен?
Компонент ищет по свойствам типов и никак иначе. Можно товару создать свойство с мультивыбором, тогда будет искать.
|
|
|
|
|
Записан
|
|
|
|
Arkadiy
Группа развития
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #10 : 24.06.2010, 06:15:41 » |
|
Не пойму... Какое имеют отношение цены к подборке продуктов по параметрам? У меня, например, магазин работает как каталог, цен нет вообще. Как быть в такой ситуации? Писать другой компонент?
Так посторен запрос. Поставь цены = 0 или другой цифре, убери цены из шаблонов чтобы не маячили.
|
|
|
|
|
Записан
|
|
|
|
orexov_m
Давно я тут
  
Репутация: +5/-0
Offline
Пол: 
Сообщений: 213
|
 |
« Ответ #11 : 24.06.2010, 11:14:53 » |
|
тоже мучает проблема, точнее две : 1. как убрать номера перед категориями чтобы их не было и сделать шрифт крупнее в названии 2. как сделать чтобы выводились только Родительские категории и не было подкатегорий?
|
|
|
|
|
Записан
|
|
|
|
stalkervp
Осваиваюсь на форуме
 
Репутация: +3/-0
Offline
Сообщений: 27
|
 |
« Ответ #12 : 24.06.2010, 17:21:25 » |
|
1. убрать номера можно в файле \components\com_vm_ext_search_free\files\unisearch.php line 45-49: for ($i = 0;$i < $level;$i++) { echo "–"; } echo "|$level|"; echo " " . $db->f("category_name"). "</option>";
заменить на (для примера): $i=0; for ($i;$i < $level;$i++) { echo " "; } if ($i != 1) $wt = " "; $wt.= $db->f("category_name"); $wt.= "</option>"; echo $wt;
|
|
|
|
« Последнее редактирование: 24.06.2010, 17:28:14 от stalkervp »
|
Записан
|
|
|
|
stalkervp
Осваиваюсь на форуме
 
Репутация: +3/-0
Offline
Сообщений: 27
|
 |
« Ответ #13 : 24.06.2010, 19:45:59 » |
|
Ув. Аркадий могли бы вы пояснить один момент. Ситуация такая, сайт грузится с уже открытой категорией VirtueMart, типов товара только 1, 3и параметра у типа, в настройках модуля оставляю только -Разрешить подбор по типам товаров, и при выборе одного из типов (т.к. ничего другого выбирать не нужно, категория по умолчанию) получаю ошибку Object expected в ИЕ8, в ФФ ошибки нет но ничего не происходит. Если включить выбор категории, и там щелкнуть на другую потом вернуться на нужную, то все пашет ... можно посмотреть на http://newtaxi.podnimem.com .Не могу понять, чего не хватает для срабатывания фильтра ...
|
|
|
|
|
Записан
|
|
|
|
|
|
orexov_m
Давно я тут
  
Репутация: +5/-0
Offline
Пол: 
Сообщений: 213
|
 |
« Ответ #15 : 25.06.2010, 08:38:10 » |
|
1. убрать номера можно в файле \components\com_vm_ext_search_free\files\unisearch.php line 45-49: for ($i = 0;$i < $level;$i++) { echo "–"; } echo "|$level|"; echo " " . $db->f("category_name"). "</option>";
заменить на (для примера): $i=0; for ($i;$i < $level;$i++) { echo " "; } if ($i != 1) $wt = " "; $wt.= $db->f("category_name"); $wt.= "</option>"; echo $wt;
всё классно номера исчезли только он все родительские категории заменил на 1 которая самая первая идет, как это поправить? ну и как сделать возможность показа подкатегорий и их убирание с вопргосом по дублированию решил кому надо код должен быть такой : for ($i=0;$i < $level;$i++) { echo " "; } if ($i != 0) $wt = " "; $wt.= $db->f("category_name"); $wt.= "</option>"; echo $wt; но вопрос по тому как убрать подкатегории остался 
|
|
|
|
« Последнее редактирование: 25.06.2010, 09:26:04 от orexov_m »
|
Записан
|
|
|
|
Arkadiy
Группа развития
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #16 : 25.06.2010, 21:53:06 » |
|
но вопрос по тому как убрать подкатегории остался  Надо убрать рекурсию т.е. вхождение функции в саму себя в этой функции. Например строка $this->list_tree($category_id, $child_id, $level, $selected_categories);
|
|
|
|
|
Записан
|
|
|
|
Arkadiy
Группа развития
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #17 : 25.06.2010, 22:13:30 » |
|
Можно сделать сортировку результатов по цене?
Можно. $q .= "ORDER BY #__{vm}_product.product_id DESC "; Заменить на нужное
|
|
|
|
|
Записан
|
|
|
|
dyominroma
Осваиваюсь на форуме
 
Репутация: +6/-0
Offline
Сообщений: 134
|
 |
« Ответ #18 : 25.06.2010, 23:07:20 » |
|
final_price вместо #__{vm}_product.product_id
Чтоб мне... А я пихал $final_price и нервничал))) Спасибо большое, за такую работу)
|
|
|
|
|
Записан
|
|
|
|
aleksviper
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 15
|
 |
« Ответ #19 : 29.06.2010, 12:57:49 » |
|
Видимо редко кто делает товар принадлежащий сразу дочерней и родительской категории. В таком случае надо переделывать запрос формирующий $total. Для всех не хочется это делать т.к. это увеличит нагрузку на сервер.
Извините, но считаю немного не логичным Ваше рассуждение по поводу родительской и дочерней категории, как бы вы поступили если есть такая необходимость включить товар и в категорию "кондиционеров" и в подкатигорию "настенные", если юзер нажмет на кондиционеры и там будет пусто это вообще будет лишено логики?? особенно если он не сильно разбирается в специфике товара. Вопрос стоит ребром: решена ли эта проблема в платной версии? потому как платить деньги есть желание за продуманную программу З.Ы. Спасибо за решение с номерами категорий.
|
|
|
|
|
Записан
|
|
|
|
Arkadiy
Группа развития
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #20 : 29.06.2010, 15:28:33 » |
|
Извините, но считаю немного не логичным Ваше рассуждение по поводу родительской и дочерней категории,
Если-бы оно было не логичным, то кроме тебя еще человек 150 задали бы вопрос про неправильную паджинацию, однако нет. Значит у всех что-то по-другому и такой случай категоризирования товара встретился впервые. Ну да ладно, фигня все это. Решение: vm_ext_search_helper.php строка ~ 95 вставляем DISTINCT и получаем $q = "SELECT DISTINCT #__{vm}_product.product_id, #__{vm}_product.product_parent_id, ... после этого двоение пропадает.
|
|
|
|
|
Записан
|
|
|
|
aleksviper
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 15
|
 |
« Ответ #21 : 29.06.2010, 16:00:12 » |
|
vm_ext_search_helper.php строка ~ 95 вставляем DISTINCT и получаем $q = "SELECT DISTINCT #__{vm}_product.product_id, #__{vm}_product.product_parent_id, ... после этого двоение пропадает. Благодарю, помогло 
|
|
|
|
|
Записан
|
|
|
|
|
skyscraper
|
 |
« Ответ #22 : 29.06.2010, 23:13:11 » |
|
подскажите где сделать запрос производителя и вывод его названия?.. пробовал запрос mf_name рядом с product_name и не получилось...
и можно как-нибудь оставлять форму заполненной после входа в карточку товара?
ps: спасибо за модуль, очень нравится AJAX =)
|
|
|
|
« Последнее редактирование: 29.06.2010, 23:34:08 от skyscraper »
|
Записан
|
|
|
|
Arkadiy
Группа развития
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #23 : 30.06.2010, 06:03:54 » |
|
Производителя надо запрашивать по полной программе, исходя из ида товара. Можно поискать соотв. функцию в классах ВМ либо написать свой запрос. Оставить форму заполненной после входа в карточку товара нельзя т.к. реквест живет только до следующей страницы.
|
|
|
|
|
Записан
|
|
|
|
twoloop
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 14
|
 |
« Ответ #24 : 06.07.2010, 23:00:57 » |
|
Уважаемый Arkadiy! Спасибо за отличный поиск. Всё летает! Читаю эту и соседние ветки и успешно настраиваю под себя. Один вопрос меня мучает и не могу я на него найти ответ: как добиться того, чтоб результаты поиска выводились таблицей (к примеру, из 2-х полей: имя товара (ссылка на fly-page) и цена)? Возможно, этот вопрос - не в эту тему, в таком случае прошу послать, куда следует 
|
|
|
|
|
Записан
|
|
|
|
Arkadiy
Группа развития
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #25 : 07.07.2010, 06:13:23 » |
|
Для этого надо переделать вывод товаров в vm_ext_search_helper.php до строки 160 while ($db->next_record()) { начать таблицу, в теле цикла переделать все под вывод строк таблицы (1 проход цикла - 1 строка), после окончания цикла закончить таблицу
|
|
|
|
|
Записан
|
|
|
|
geralt
Захожу иногда

Репутация: +1/-0
Offline
Сообщений: 20
|
 |
« Ответ #26 : 09.07.2010, 15:21:46 » |
|
Поставил компонент. Почемуто сразу не выводит первую характеристику из списка характеристик типа товара.
|
|
|
|
|
Записан
|
|
|
|
Arkadiy
Группа развития
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #27 : 09.07.2010, 15:37:05 » |
|
Возможно в ней нет допустимых значений.
|
|
|
|
|
Записан
|
|
|
|
Arkadiy
Группа развития
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #28 : 10.07.2010, 15:31:49 » |
|
1. а если в правильном порядке выбрать то-же самое третье поле видно? 2. Мультиязычность будет только в версии ПРО компонента.
|
|
|
|
|
Записан
|
|
|
|
Igorello
Захожу иногда

Репутация: +1/-0
Offline
Сообщений: 20
|
 |
« Ответ #29 : 10.07.2010, 15:55:28 » |
|
Да, видно. В таком случае в остальных полях просто-напросто отображаются те параметры, которые доступны для выбранного значения в первом поле.
В общем, проще показать, чем долго рассказывать...
http://gravicappa.kiev.ua/stabilizatory-napryazheniya.html
Когда выбираем во втором поле мощность "10000 и выше", а потом в первом — производителя "Luxeon", тогда и вылазят глюки.
|
|
|
|
|
Записан
|
|
|
|
|