LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
26.05.2012, 04:00:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 29   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Расширенный Ajax-поиск по характеристикам товара VirtueMart  (Прочитано 81802 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Arkadiy
Группа развития
*****

Репутация: +244/-5
Offline 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>

* com_vm_ext_search_free_1.4.4.zip (52.12 Кб - загружено 3629 раз.)
* mod_vm_universal_search_free_1.2.zip (5.25 Кб - загружено 3385 раз.)
« Последнее редактирование: 12.09.2011, 13:43:45 от Arkadiy » Записан
 
Maks
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 4


« Ответ #1 : 04.06.2010, 09:53:41 »

Доброе утро. Аркадий поставил ваш модуль. Но почему то не работает кнопка "поиск". При её нажатии ничего не изменяяется и я не перехожу на найденный товар.
Записан
xTMx
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 168



« Ответ #2 : 04.06.2010, 10:10:14 »

а вы в коде шаблона заключили вывод компонента в див нужного класса как сказано в инструкции? )
Записан
Maks
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 4


« Ответ #3 : 04.06.2010, 10:15:28 »

xTMx спасибо. Действительно прочитал и забыл что это нужно сделать. Всё заработало.
Записан
dyominroma
Осваиваюсь на форуме
***

Репутация: +6/-0
Offline 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 Offline

Сообщений: 4895


Былененький он зел.


« Ответ #5 : 04.06.2010, 18:58:01 »

1. фильтрация по цене корректно работает только без конвертации валюты.
2. такого нет, но можно поправить! (ручками) Azn
Записан
dyominroma
Осваиваюсь на форуме
***

Репутация: +6/-0
Offline Offline

Сообщений: 134



« Ответ #6 : 05.06.2010, 18:58:22 »

Не ищет товары без цены Angry! Можно сортировку по цене сделать?
« Последнее редактирование: 05.06.2010, 19:19:40 от dyominroma » Записан
Botmaster
Гость
« Ответ #7 : 06.06.2010, 16:36:32 »

У меня другая проблема, я поставил все, сделал как надо. Только почему то в списке нет ни одного производителя, хотя в магазине их больше десятка. в чем может быть причина, подскажите пожалуйста? Спасибо.
Записан
Arkadiy
Группа развития
*****

Репутация: +244/-5
Offline 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' );
Если в админке использованы несколько валют, то так не получится.
Не ищет товары без цены Angry! Можно сортировку по цене сделать?
И не будет искать, так сделано.
Записан
Arkadiy
Группа развития
*****

Репутация: +244/-5
Offline Offline

Сообщений: 4895


Былененький он зел.


« Ответ #9 : 24.06.2010, 06:14:30 »

У меня такая непростая задача… Мне нужно чтобы поиск по характеристикам находил товары из свойств товара, а не сам главный товар. Смысл поиска по характеристикам пропадает, так как в свойство можно добавить все отдельно, как и к главному товару (Тип товара и даже id отдельный), а поиск его не выводит.


Тема такая, Фирма гранитных моек Schock - 20 вариантов цветов, много моделей. Мне нужно чтобы покупатель мог выбрать, допустим, Мойка с крылом цвет: Colorado и чтобы ему поиск выдал все мойки с крылом данного цвета.  Получается, что в стандартном поиске для реализации подобной вещи нужно для каждого цвета делать отдельный товар. Представьте, что получится если каждую модель вбивать в 20 вариантах цветов….

Ваш поиск на это способен?
Компонент ищет по свойствам типов и никак иначе. Можно товару создать свойство с мультивыбором, тогда будет искать.
Записан
Arkadiy
Группа развития
*****

Репутация: +244/-5
Offline Offline

Сообщений: 4895


Былененький он зел.


« Ответ #10 : 24.06.2010, 06:15:41 »

Не пойму... Какое имеют отношение цены к подборке продуктов по параметрам?
У меня, например, магазин работает как каталог, цен нет вообще. Как быть в такой ситуации? Писать другой компонент?
Так посторен запрос. Поставь цены = 0 или другой цифре, убери цены из шаблонов чтобы не маячили.
Записан
orexov_m
Давно я тут
****

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 213


« Ответ #11 : 24.06.2010, 11:14:53 »

тоже мучает проблема, точнее две :
1. как убрать номера перед категориями чтобы их не было и сделать шрифт крупнее в названии
2. как сделать чтобы выводились только Родительские категории и не было подкатегорий?
Записан
stalkervp
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline 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 "&nbsp;" . $db->f("category_name"). "</option>";

заменить на (для примера):
   $i=0;
            for ($i;$i < $level;$i++)
            {
                echo "&nbsp;";
            }
   if ($i != 1) $wt = "&nbsp;&nbsp;";
   $wt.= $db->f("category_name");
   $wt.= "</option>";
   echo $wt;
« Последнее редактирование: 24.06.2010, 17:28:14 от stalkervp » Записан
stalkervp
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 27


« Ответ #13 : 24.06.2010, 19:45:59 »

Ув. Аркадий могли бы вы пояснить один момент. Ситуация такая, сайт грузится с уже открытой категорией VirtueMart, типов товара только 1, 3и параметра у типа, в настройках модуля оставляю только -Разрешить подбор по типам товаров, и при выборе одного из типов (т.к. ничего другого выбирать не нужно, категория по умолчанию) получаю ошибку Object expected в ИЕ8, в ФФ ошибки нет но ничего не происходит. Если включить выбор категории, и там щелкнуть на другую потом вернуться на нужную, то все пашет ... можно посмотреть на http://newtaxi.podnimem.com   .Не могу понять, чего не хватает для срабатывания фильтра ...
Записан
Arkadiy
Группа развития
*****

Репутация: +244/-5
Offline Offline

Сообщений: 4895


Былененький он зел.


« Ответ #14 : 24.06.2010, 20:42:19 »

Похоже тут решение проблемы http://joomlaforum.ru/index.php/topic,111319.msg653837.html#msg653837
Записан
orexov_m
Давно я тут
****

Репутация: +5/-0
Offline 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 "&nbsp;" . $db->f("category_name"). "</option>";

заменить на (для примера):
   $i=0;
            for ($i;$i < $level;$i++)
            {
                echo "&nbsp;";
            }
   if ($i != 1) $wt = "&nbsp;&nbsp;";
   $wt.= $db->f("category_name");
   $wt.= "</option>";
   echo $wt;

всё классно номера исчезли только он все родительские категории заменил на 1 которая самая первая идет, как это поправить?
ну и как сделать возможность показа подкатегорий и их убирание


с вопргосом по дублированию решил кому надо код должен быть такой :
 
for ($i=0;$i < $level;$i++)
            {
                echo "&nbsp;";
            }
   if ($i != 0) $wt = "&nbsp;&nbsp;";
   $wt.= $db->f("category_name");
   $wt.= "</option>";
   echo $wt;         

но вопрос по тому как убрать подкатегории остался Azn
« Последнее редактирование: 25.06.2010, 09:26:04 от orexov_m » Записан
Arkadiy
Группа развития
*****

Репутация: +244/-5
Offline Offline

Сообщений: 4895


Былененький он зел.


« Ответ #16 : 25.06.2010, 21:53:06 »

но вопрос по тому как убрать подкатегории остался Azn
Надо убрать рекурсию т.е. вхождение функции в саму себя в этой функции. Например строка
Цитировать
$this->list_tree($category_id, $child_id, $level, $selected_categories);
Записан
Arkadiy
Группа развития
*****

Репутация: +244/-5
Offline Offline

Сообщений: 4895


Былененький он зел.


« Ответ #17 : 25.06.2010, 22:13:30 »

Можно сделать сортировку результатов по цене?
Можно.
Код:
$q .= "ORDER BY #__{vm}_product.product_id DESC ";
Заменить на нужное
Записан
dyominroma
Осваиваюсь на форуме
***

Репутация: +6/-0
Offline Offline

Сообщений: 134



« Ответ #18 : 25.06.2010, 23:07:20 »

final_price вместо #__{vm}_product.product_id
Чтоб мне... А я пихал $final_price и нервничал))) Спасибо большое, за такую работу)
Записан
aleksviper
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 15


« Ответ #19 : 29.06.2010, 12:57:49 »

Видимо редко кто делает товар принадлежащий сразу дочерней и родительской категории. В таком случае надо переделывать запрос формирующий $total. Для всех не хочется это делать т.к. это увеличит нагрузку на сервер.

Извините, но считаю немного не логичным Ваше рассуждение по поводу родительской и дочерней категории,
как бы вы поступили если есть такая необходимость включить товар и в категорию "кондиционеров" и в подкатигорию "настенные", если юзер нажмет на кондиционеры и там будет пусто это вообще будет лишено логики?? особенно если он не сильно разбирается в специфике товара.

Вопрос стоит ребром: решена ли эта проблема в платной версии? потому как платить деньги есть желание за продуманную программу

З.Ы. Спасибо за решение с номерами категорий.
Записан
Arkadiy
Группа развития
*****

Репутация: +244/-5
Offline 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 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, ...
после этого двоение пропадает.

Благодарю, помогло Azn
Записан
skyscraper
Давно я тут
****

Репутация: +42/-2
Offline Offline

Сообщений: 265



« Ответ #22 : 29.06.2010, 23:13:11 »

подскажите где сделать запрос производителя и вывод его названия?..
пробовал запрос mf_name рядом с product_name и не получилось...

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

ps: спасибо за модуль, очень нравится AJAX =)
« Последнее редактирование: 29.06.2010, 23:34:08 от skyscraper » Записан
Arkadiy
Группа развития
*****

Репутация: +244/-5
Offline Offline

Сообщений: 4895


Былененький он зел.


« Ответ #23 : 30.06.2010, 06:03:54 »

Производителя надо запрашивать по полной программе, исходя из ида товара. Можно поискать соотв. функцию в классах ВМ либо написать свой запрос. Оставить форму заполненной после входа в карточку товара нельзя т.к. реквест живет только до следующей страницы.
Записан
twoloop
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 14


« Ответ #24 : 06.07.2010, 23:00:57 »

Уважаемый Arkadiy!

Спасибо за отличный поиск. Всё летает! Читаю эту и соседние ветки и успешно настраиваю под себя.

Один вопрос меня мучает и не могу я на него найти ответ: как добиться того, чтоб результаты поиска выводились таблицей (к примеру, из 2-х полей: имя товара (ссылка на fly-page) и цена)?

Возможно, этот вопрос - не в эту тему, в таком случае прошу послать, куда следует Smiley
Записан
Arkadiy
Группа развития
*****

Репутация: +244/-5
Offline 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 Offline

Сообщений: 20


« Ответ #26 : 09.07.2010, 15:21:46 »

Поставил компонент. Почемуто сразу не выводит первую характеристику из списка характеристик типа товара.
Записан
Arkadiy
Группа развития
*****

Репутация: +244/-5
Offline Offline

Сообщений: 4895


Былененький он зел.


« Ответ #27 : 09.07.2010, 15:37:05 »

Возможно в ней нет допустимых значений.
Записан
Arkadiy
Группа развития
*****

Репутация: +244/-5
Offline Offline

Сообщений: 4895


Былененький он зел.


« Ответ #28 : 10.07.2010, 15:31:49 »

1. а если в правильном порядке выбрать то-же самое третье поле видно?
2. Мультиязычность будет только в версии ПРО компонента.
Записан
Igorello
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 20


« Ответ #29 : 10.07.2010, 15:55:28 »

Да, видно. В таком случае в остальных полях просто-напросто отображаются те параметры, которые доступны для выбранного значения в первом поле.

В общем, проще показать, чем долго рассказывать...

http://gravicappa.kiev.ua/stabilizatory-napryazheniya.html

Когда выбираем во втором поле мощность "10000 и выше", а потом в первом — производителя "Luxeon", тогда и вылазят глюки.
Записан
Страниц: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 29   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet