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 »
|
Записан
|
|
|
|
| |
|
baloon
|
 |
« Ответ #781 : 03.02.2012, 23:05:09 » |
|
Буквально все.
Короче менять надо скрипт который передает значение в инпут, по другому ни как, да?
|
|
|
|
|
Записан
|
|
|
|
falconpvt
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 15
|
 |
« Ответ #782 : 03.02.2012, 23:06:09 » |
|
Поиск работает если выбирать по порядку, сверху вниз. Если наоборот, то не работает.
это помогло, но как сказал выше, выдаёт после кнопки не всегда все результаты...( Устраняем вывод всех товаров в случае когда клиент меняет последовательность выбора характеристик на обратную (в таком случае возможен выбор характеристик для которых не соответствует ни одного товара)
unisearch.php после строки ~480 Код: $prod_ids = $db->loadResultArray(); вставляем Код: array_push($prod_ids, 0); Чтобы счетчик количества товаров отображал правильное количество строку ~490 Код: print'<div class="colichestvo">Количество товаров в выборке = ' . count($prod_ids). '</div>'; меняем на Код: print'<div class="colichestvo">Количество товаров в выборке = ' . (count($prod_ids)-1). '</div>';
|
|
|
|
|
Записан
|
|
|
|
Arkadiy
Группа развития
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #783 : 03.02.2012, 23:22:52 » |
|
Это немного не в ту степь, смотри где общее количество товара считается.
|
|
|
|
|
Записан
|
|
|
|
falconpvt
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 15
|
 |
« Ответ #784 : 03.02.2012, 23:34:44 » |
|
вместо "дистинкт" сделал так и теперь снова выбор снизу вверх характеристик 0 показывает... эх( есть ли смысл искать на форуме ответы в прошлом? или эти проблемы не решались "задокументировано"?  pageNavigation.php неправильно считает количество страниц попробуй в файле \components\com_vm_ext_search_pro\files\vm_ext_search_helper.php строку $q .= " GROUP BY #__{vm}_product.product_id "; переместить выше $total_q = 'SELECT COUNT(*) AS num_rows FROM (' . $q . ') as vm'; уловил зависимость... вместо 3 найденных показывает по кнопке 1 4-2 16-8 наконец-то)))нашёл))) http://joomlaforum.ru/index.php/topic,111319.msg647780.html#msg647780
|
|
|
|
« Последнее редактирование: 04.02.2012, 04:01:07 от falconpvt »
|
Записан
|
|
|
|
falconpvt
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 15
|
 |
« Ответ #785 : 04.02.2012, 16:04:47 » |
|
в платном есть проблемы такие? выбор снизу вверх и я хочу только чтобы параметры выбирались...
|
|
|
|
|
Записан
|
|
|
|
Arkadiy
Группа развития
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #786 : 04.02.2012, 16:21:32 » |
|
Нет, в платном тоже только сверху вниз.
|
|
|
|
|
Записан
|
|
|
|
|
aleks_yug
|
 |
« Ответ #787 : 04.02.2012, 16:43:40 » |
|
Аркадий, добрый день! Уже писал - компонент великолепный, легко конфигурируется и изменяется под свои нужды. Использую везде, где можно +А теперь по делу... Достаточно редко задаю вопросы, но тут... Заметил очень своеобразный глюк. На тарифе "кластер", хостинг "e-planet" - компонент (а конкретнее - модуль) подвисает при работе в IE всех версий. В остальных браузерах никаких проблем! У того же хостера на VPS все работает идеально. Обсуждал с ними эту фишку - выяснилось (по их словам), что на "кластере" обработка происходит через опрокси и соответственно из-за этого происходит сбой в IE. Насколько подобное предположение имеет право на существование, не знаю... Но ведь на VPS прекрасно работает! Это конечно, не критично - заменил хостинг и проблема решена. Но все-же... Если сталкивался с подобной проблемой - где покопать? если есть желание глянуть - могу скинуть ссылку. А за компонент СПАСИБО! 
|
|
|
|
|
Записан
|
|
|
|
Arkadiy
Группа развития
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #788 : 04.02.2012, 16:58:17 » |
|
Нет, с такой проблемой не сталкивался.
|
|
|
|
|
Записан
|
|
|
|
|
aleks_yug
|
 |
« Ответ #789 : 04.02.2012, 17:06:27 » |
|
Нет, с такой проблемой не сталкивался.
Может это как-то связанно с обработкой ajax-запросов в IE (c законопослушными такой проблемы-то нет) Кстати, дедовский компонент (для 1.0.15) пашет там-же без сбоев - все в порядке. ну да бог с ним... Не заморачивайся
|
|
|
|
|
Записан
|
|
|
|
alexsej
Новичок
Репутация: +0/-0
Offline
Сообщений: 1
|
 |
« Ответ #790 : 05.02.2012, 02:39:13 » |
|
! Приветствую товарищи. Подскажите как сделать на сайте http://www.west-climate.ru/ вывод товара , настраиваемый, так же как в основном компоненте VirtueMart.... или сколько это будет ...
|
|
|
|
|
Записан
|
|
|
|
Arkadiy
Группа развития
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #791 : 05.02.2012, 08:01:47 » |
|
Может это как-то связанно с обработкой ajax-запросов в IE (c законопослушными такой проблемы-то нет) Кстати, дедовский компонент (для 1.0.15) пашет там-же без сбоев - все в порядке. ну да бог с ним... Не заморачивайся
Не вижу взаимосвязи смены хостинга и браузера клиента. Непонятный глюк.
|
|
|
|
|
Записан
|
|
|
|
|
aleks_yug
|
 |
« Ответ #792 : 05.02.2012, 13:20:51 » |
|
Не вижу взаимосвязи смены хостинга и браузера клиента. Непонятный глюк.
Аркадий, я ее сам не вижу. Проверил методом ненаучного тыка - на VPS прекрасно заработало. Отсюда и выплыло такое предположение (но и только...) В любом случае вопрос решаемый
|
|
|
|
|
Записан
|
|
|
|
|
baloon
|
 |
« Ответ #793 : 06.02.2012, 15:10:44 » |
|
Arkadiy, я пытаюсь изменить вид select. Вот тут есть способ стилизации select, но он видимо конфликтует со скриптом поиска. Может вам удастся сразу увидеть в чем причина? Вот скрипт для этого способа стилизации. Если применить этот способ, то обновление селектов не происходит.
|
|
|
|
|
Записан
|
|
|
|
Arkadiy
Группа развития
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #794 : 06.02.2012, 16:07:00 » |
|
Думаю дело в том, что оформление селектов, а точнее их скрытие и замена на красивые графические (или подобные) элементы происходит по загрузке страницы, а если страница не перезагружается, то и скрипт не отрабатывает.
|
|
|
|
|
Записан
|
|
|
|
|
baloon
|
 |
« Ответ #795 : 06.02.2012, 19:25:29 » |
|
Arkadiy, а сложно заменить select на список ul li ?
|
|
|
|
|
Записан
|
|
|
|
Arkadiy
Группа развития
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #796 : 06.02.2012, 20:58:12 » |
|
Ну так компонент же у тебя в руках, код открыт, оцени, сложно или нет.
|
|
|
|
|
Записан
|
|
|
|
orexov_m
Давно я тут
  
Репутация: +5/-0
Offline
Пол: 
Сообщений: 213
|
 |
« Ответ #797 : 07.02.2012, 08:07:41 » |
|
Приветствую. Компонент хороший, но заметил проблему, решения не увидел. Если у одного товара выбрано 2 параметра итз одного типа, то он в поиске не участвует. То есть есть тип товара - Модель у неё имеются значения toytota,opel,volvo и например если товар подходит и к тойота и к опель соответственно выбраны два параметра, то он в поиске не появляется:( Как-то возможно решить проблему?
|
|
|
|
|
Записан
|
|
|
|
|
baloon
|
 |
« Ответ #798 : 07.02.2012, 12:56:22 » |
|
Приветствую. Компонент хороший, но заметил проблему, решения не увидел. Если у одного товара выбрано 2 параметра итз одного типа, то он в поиске не участвует. То есть есть тип товара - Модель у неё имеются значения toytota,opel,volvo и например если товар подходит и к тойота и к опель соответственно выбраны два параметра, то он в поиске не появляется:( Как-то возможно решить проблему?
Проверил - работает. Один товар к двум параметрам одного типа - ищет.
|
|
|
|
|
Записан
|
|
|
|
orexov_m
Давно я тут
  
Репутация: +5/-0
Offline
Пол: 
Сообщений: 213
|
 |
« Ответ #799 : 07.02.2012, 13:27:36 » |
|
Проверил - работает. Один товар к двум параметрам одного типа - ищет.
странно, у а меня отказывается  пишет что 0 в подборе, по остальным хорошо ищет.
|
|
|
|
|
Записан
|
|
|
|
orexov_m
Давно я тут
  
Репутация: +5/-0
Offline
Пол: 
Сообщений: 213
|
 |
« Ответ #800 : 07.02.2012, 14:20:17 » |
|
странно, у а меня отказывается  пишет что 0 в подборе, по остальным хорошо ищет. адрес сайта scooter-zip.ru выбрать модель Yamaha и марку Aerox будет 0 хотя есть модель которая в Aerox и в BWS
|
|
|
|
|
Записан
|
|
|
|
|
baloon
|
 |
« Ответ #801 : 07.02.2012, 17:14:02 » |
|
адрес сайта scooter-zip.ru выбрать модель Yamaha и марку Aerox будет 0 хотя есть модель которая в Aerox и в BWS
Показывает 0 товаров, а если нажать на кнопку "поиск" то выводит много товаров. Возможно типы не так присвоены?
|
|
|
|
|
Записан
|
|
|
|
orexov_m
Давно я тут
  
Репутация: +5/-0
Offline
Пол: 
Сообщений: 213
|
 |
« Ответ #802 : 07.02.2012, 17:34:48 » |
|
Показывает 0 товаров, а если нажать на кнопку "поиск" то выводит много товаров. Возможно типы не так присвоены?
Типы присвоены правильно, если товару дать 1 параметр типа то он нормально присутствует в поиске. Если же ему сделать 2 параметра одного типа в моем случае модели. то он выпадает из поиска 
|
|
|
|
|
Записан
|
|
|
|
ispanec
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 6
|
 |
« Ответ #803 : 17.02.2012, 03:21:30 » |
|
Люди добрый!подскажите пожалуйста .У меня при нажатии на определенный товар открывается первый добавленный товар с таким же наименованием-думал в этом проблема !меню наименование второго товара все равно при нажатии открывает первый .Например:Adidas(товар куртка) и Adidas(товар свитер) при нажатии на свитер открывает куртка.Я очень прошу высказать Ваше мнение
|
|
|
|
|
Записан
|
|
|
|
stacan
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 8
|
 |
« Ответ #804 : 23.02.2012, 21:14:00 » |
|
Доброго времени суток.
Два вопроса.
1. Кто-нить прикрутил к бесплатному фильтру "общий сброс "? Пытался сделать так :
/modules/mod_vm_universal_search_free/mod_vm_universal_search_free.php:
<input type="reset" value="Сброс"> - сброс на первое значение проходит только в Категориях и в Производителях - Типы никак.
и так : <input type="button" value="Сброс" onclick="reset_form(0)"> с функцией как на сайте разработчиков фильтра:
modules/mod_vm_universal_search_pro/files/mod_universal_search.js :
... function reset_form(load_product){ jQuery('#mod_vm_search_form').clearForm();
if(jQuery("select").is("#pt")){ jQuery('#pt option:selected').attr('selected',''); jQuery('#pt option:last').attr('selected','selected'); } jQuery.ajax({ type: "POST", url: url+'/index2.php?option=com_vm_ext_search_pro&no_html=1&task=reset_form' }); if(jQuery("div").is("#mod_category_div")){ mod_categoryChange(load_product); } else if(jQuery("div").is("#mod_mf_div")){ mod_mfChangeMulti(load_product); } else if(jQuery("div").is("#mod_ad_div")){ mod_availableDateChange(load_product); } else if(jQuery("div").is("#mod_typ_div")){ mod_typeChange(load_product); } }
В этом случае - сброс проходит в Производителях и Типах , а в Категории - появляется пустое поле.
2. Нужно вывести товар только в зависимости от типа на основе этого фильтра. Например вывести только бежевое постельное белье (категория и производитель - не важно ). Причем по клику по образцу цвета.
Думал так сделать : в форме ничего не трогаю кроме типа . Вибираю тип "бежевое" - кликаю поиск фильтра и смотрю через консоль огнелиса на http запрос. Если потом по клику по образцу цвета программно выполнить такой же запрос - все должно получиться. Но это только идея -мож.так и не получится. Может кто решал подобную задачу ?
|
|
|
|
|
Записан
|
|
|
|
stacan
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 8
|
 |
« Ответ #805 : 24.02.2012, 02:46:01 » |
|
Как программно получить ID товаров с одинаковым типом ?Например все id товаров с первым типом,потом все id товаров со вторым?
|
|
|
|
|
Записан
|
|
|
|
Arkadiy
Группа развития
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #806 : 24.02.2012, 02:50:30 » |
|
Запросом всех идов товара из таблицы типа.
|
|
|
|
|
Записан
|
|
|
|
xoxol39
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Пол: 
Сообщений: 48
Хохол...
|
 |
« Ответ #807 : 24.02.2012, 14:04:21 » |
|
Нужна помощь! Фильтр не работает в IE и Opera (индикатор загрузки работает, но ничего больше не происходит) - посмотреть (в обогревателях есть несколько товаров)
|
|
|
|
« Последнее редактирование: 24.02.2012, 22:34:51 от xoxol39 »
|
Записан
|
|
|
|
spyweb
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 11
|
 |
« Ответ #808 : 28.02.2012, 13:59:11 » |
|
Arkadiy, доброго времени суток!
В модуле не отображаются те параметры у которых не заданы допустимые значения. Они видны лишь, допустим, на странице товара. Компонент/модуль с подобными параметрами не работает? А если мне необходимо задать диапазон изменения значения параметра, то как это правильно сделать чтобы он (параметр) учавствовал в поиске?
Нашел ваш ответ на подобный вопрос заданный ранее.
"Все правильно заметил, другой регулировки попадания в поиск нет, только наличие допустимых значений."
И все же, Arkadiy, ее (регулировку) можно удалить, или видоизменить, чтобы было как в "поиске по расширенным характеристикам" ?
|
|
|
|
« Последнее редактирование: 28.02.2012, 14:10:51 от spyweb »
|
Записан
|
|
|
|
spyweb
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 11
|
 |
« Ответ #809 : 28.02.2012, 15:04:10 » |
|
Arkadiy, доброго времени суток! В модуле не отображаются те параметры у которых не заданы допустимые значения. Они видны лишь, допустим, на странице товара. Компонент/модуль с подобными параметрами не работает? А если мне необходимо задать диапазон изменения значения параметра, то как это правильно сделать чтобы он (параметр) учавствовал в поиске?
Нашел ваш ответ на подобный вопрос заданный ранее.
"Все правильно заметил, другой регулировки попадания в поиск нет, только наличие допустимых значений."
И все же, Arkadiy, ее (регулировку) можно удалить, или видоизменить, чтобы было как в "поиске по расширенным характеристикам" ?
Попытался так: В файле www\components\com_vm_ext_search_free\files\unisearch.php Находим: $param_type = array (); $selected_params = array (); $parameter_multiselect = array (); $i = 0; $disabled = ''; $q1 = ''; foreach ($patams as $patam) { $parameter_values = $patam->parameter_values; if (!empty($parameter_values)) { $i++; $param_name = $patam->parameter_name; $param_id = $product_type_id[0]; $parameter_label = $patam->parameter_label; $item_name = "product_type_" .$product_type_id[0]. "_" . $param_name;
$parameter_type = $patam->parameter_type; $param_type[$i] = $parameter_type; $parameter_multiselect[$i] = $patam->parameter_multiselect; $parameter_name[$i] = $patam->parameter_name; //получаем выбранный параметр из реквеста $selected_param = array(); $selected_parameter = vmGet($_REQUEST, $item_name, ''); $selected_param = array(); for ($j=0; $j< count($selected_parameter); $j++) { if(!empty ($selected_parameter[$j])) { $selected_param[$j] = urldecode($selected_parameter[$j]); } } Меняем на: //запрашиваем названия свойств $q = "SELECT `parameter_name`, `parameter_label`, `parameter_type`, "; $q .= "`parameter_values`, `parameter_multiselect`, `parameter_unit` "; $q .= "FROM #__{vm}_product_type_parameter "; $q .= "WHERE product_type_id IN (".implode(", ", $product_type_id).") "; $q .= "ORDER BY parameter_list_order"; $db->setQuery($q); $patams = $db->loadObjectList();
$param_type = array (); $selected_params = array (); $parameter_multiselect = array (); $i = 0; $disabled = ''; $q1 = ''; foreach ($patams as $patam) { $parameter_values = $patam->parameter_values; $i++; $param_name = $patam->parameter_name; $param_id = $product_type_id[0]; $parameter_label = $patam->parameter_label; $item_name = "product_type_" .$product_type_id[0]. "_" . $param_name;
$parameter_type = $patam->parameter_type; $param_type[$i] = $parameter_type; $parameter_multiselect[$i] = $patam->parameter_multiselect; $parameter_name[$i] = $patam->parameter_name; В таком случае параметры (без допустимых значений) отображаются в модуле, но поиск идет не верно. Либо все товары, либо ни одного
|
|
|
|
« Последнее редактирование: 28.02.2012, 16:32:52 от spyweb »
|
Записан
|
|
|
|
Arkadiy
Группа развития
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #810 : 28.02.2012, 17:06:06 » |
|
Значит где-то нарушил алгоритм поиска.
|
|
|
|
|
Записан
|
|
|
|
|