Фильтр для VirtueMart (must have)

  • 375 Ответов
  • 57563 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

Wharfadale

  • Осваиваюсь на форуме
  • ***
  • 197
  • 24
Фильтр для VirtueMart (must have)
« : 23.04.2010, 11:58:24 »
Наконец-то готов фильтр для J2.5.x и VM2.0.x! Налетаем! Цена 1000 рублей за сайт! Для уже покупавших у нас - скидка 10%!

Компонент для поиска товаров в VirtueMart! Версия 1.0.4.2. Апдейт от 27.10.11 8)
Фильтр работает с Joomla линейки 1.5.x и Virutemart 1.1.x
Описание: компонент, ничуть не уступающий по функционалу и внешнему виду аналогичным продуктам в Ямарте, на крупных сайтах, типа Мвидео, Samsung и т.д.
Демо

Цена на фильтр для J 1.5.x и VM 1.1.x
Просто фильтр – 500 рублей
Устранение ошибок работы нашего фильтра, если они есть

Просто фильтр + работа – 1000 рублей
1 час работы
Установка, настройка стилей, исправление ошибок и конфликтов, если таковые имеются

PS: по всем доработкам поддержка оказывается разово в течении того времени, которое указано в пакете. По устранению ошибок и настройке стилей в течении действия пакета.
PPS: Обладателям стандартной версии за 300 рублей нужно просто доплатить 200 рублей всё на тот же кошелёк
PPPS: Сайты на локалхосте мы не поддерживаем!

Небольшой мануал по фильтру vm 2.0, который будет расширяться, здесь

Инструкции по установке модуля?
<jdoc:include type="component" /> заменить на <div id="main_search"><jdoc:include type="component" /></div>

Как купить?
После того, как отписались в теме, отправляем на номер R232814480503 деньги (в подписи ваш ник на форуме и e-mail) без кода протекции, и я высылаю компонент. Или на Яденьги: 41001144139260. Также пишите мне в личку свой мэйл и время оплаты.

Заплатив деньги, а не скачав на халяву с варезника, вы получаете подписку на обновления и поддержку:)
« Последнее редактирование: 16.08.2013, 20:08:29 от Wharfadale »

*

morph

  • Живу я здесь
  • ******
  • 906
  • 103
Re: Фильтр для VirtueMart
« Ответ #1 : 23.04.2010, 12:04:36 »
прекрасная реализация
joomla zoo virtuemart joomshopping yii

*

Arkadiy

  • Группа развития
  • *****
  • 5342
  • 440
  • Крепитесь, други.
Re: Фильтр для VirtueMart (must have)
« Ответ #2 : 07.05.2010, 12:13:05 »
Некоторые инструкции по установке модуля:
1. Как обычно устанавливаем и настраиваем модуль.
2. Модуль использует AJAX подгрузку результатов поиска. Для того, чтобы в любом месте сайта это было возможно необходимо в index.php шаблона Joomla вставить определенный див.
Для работы модуля необходимо обрамить вывод компонента
Код
<jdoc:include type="component" />
в index.php используемого шаблона дивом. в итоге должно получиться так:
Код
<div id="main_search">
         <jdoc:include type="component" />
</div>
Тогда этот див будет присутствовать на любой странице, а результаты поиска будут заменять выводимое содержимое.

*

Arkadiy

  • Группа развития
  • *****
  • 5342
  • 440
  • Крепитесь, други.
Re: Фильтр для VirtueMart (must have)
« Ответ #3 : 14.05.2010, 18:57:58 »
шаблон вывода товара в virtuemart_ext_search_helper, CSS в CSS компонента.

*

orelalex

  • Осваиваюсь на форуме
  • ***
  • 38
  • 2
Re: Фильтр для VirtueMart (must have)
« Ответ #4 : 26.05.2010, 17:48:41 »
Аркадий, не могу вывести полное описание в товары на страничке поиска. в бесплатном модуле я вывел так
echo $db->f("product_desc");
А в Вашем не могу вывести... Подскажите как это сделать ^-^
Не стесняйтесь ставить "+" на карме, если мой ответ помог Вам =)
Создаю сайты недорого

*

Arkadiy

  • Группа развития
  • *****
  • 5342
  • 440
  • Крепитесь, други.
Re: Фильтр для VirtueMart (must have)
« Ответ #5 : 26.05.2010, 18:14:06 »
надо в строке 97 поменять #__{vm}_product.product_s_desc на #__{vm}_product.product_des, потом выводить.

*

orelalex

  • Осваиваюсь на форуме
  • ***
  • 38
  • 2
Re: Фильтр для VirtueMart (must have)
« Ответ #6 : 26.05.2010, 18:28:29 »
надо в строке 97 поменять #__{vm}_product.product_s_desc на #__{vm}_product.product_des, потом выводить.
Мне краткое описание убирать не надо, мне добавить надо полное описание товара. И в каком файле менять?
Не стесняйтесь ставить "+" на карме, если мой ответ помог Вам =)
Создаю сайты недорого

*

Arkadiy

  • Группа развития
  • *****
  • 5342
  • 440
  • Крепитесь, други.
Re: Фильтр для VirtueMart (must have)
« Ответ #7 : 26.05.2010, 18:54:44 »
тогда добавить, файл vm_ext_search_helper.php

*

orelalex

  • Осваиваюсь на форуме
  • ***
  • 38
  • 2
Re: Фильтр для VirtueMart (must have)
« Ответ #8 : 26.05.2010, 20:53:39 »
тогда добавить, файл vm_ext_search_helper.php
Аркадий ты не многословен)))
Сделал как ты сказал
нашел по поиску в блакноте нашел где добавляется product.product_s_desc и через запятую добавил  #__{vm}_product.product_desc и где надо вывести полное описание прописал echo $db->f("product_desc");
и все заработало!
Спасибо за помощь!
Не стесняйтесь ставить "+" на карме, если мой ответ помог Вам =)
Создаю сайты недорого

*

volkazirik

  • Захожу иногда
  • **
  • 12
  • 1
Re: Фильтр для VirtueMart (must have)
« Ответ #9 : 27.05.2010, 15:39:58 »
Господа, а как изменить текст который выводится по умолчанию в выпадающем списке?  Т.е если я только загружаю страницу и ничего не трогаю, вот там стоят значения.  [Выбрать "название параметра"]   
Мне нужно чтобы вместо "названия параметра выводилось слово "все".

*

Arkadiy

  • Группа развития
  • *****
  • 5342
  • 440
  • Крепитесь, други.
Re: Фильтр для VirtueMart (must have)
« Ответ #10 : 27.05.2010, 15:45:37 »
unisearch.php
function list_harakt

после
Код
case 'select' :
default :
код
Код
echo "<option value=\"\">Выбрать " . $parameter_label . "</option>\n";
меняем на
Код
echo "<option value=\"\">Выбрать все</option>\n";
« Последнее редактирование: 27.05.2010, 15:48:49 от Arkadiy »

*

Arkadiy

  • Группа развития
  • *****
  • 5342
  • 440
  • Крепитесь, други.
Re: Фильтр для VirtueMart (must have)
« Ответ #11 : 28.05.2010, 08:04:12 »
Arkadiy, а с какой сортировкой скрипт выводит результаты? И можно как-то повлиять на это?
vm_ext_search_helper.php за сортировку отвечает эта строка.
Код
$q .= "ORDER BY #__{vm}_product.product_id DESC ";

*

Arkadiy

  • Группа развития
  • *****
  • 5342
  • 440
  • Крепитесь, други.
Re: Фильтр для VirtueMart (must have)
« Ответ #12 : 28.05.2010, 08:13:21 »
И опять же, непонятно он сортирует значения характеристик в выпадающих списках. Я забиваю текстовые списки значений в несколько характеристик, и при выводе формы эти списки значений сортируются непонятно как - один по алфавиту, второй непонятно вообще как...    ?
unisearch.php за сортировку отвечает эта строка.
Код
$q .= "ORDER BY $param_name";
т.е. сортирует по названию параметров. Но если встречаются параметры с мультивыбором характеристик, то при их разбивке сортировка может нарушиться. Для того, чтобы ее восстановить, надо в указанном файле после строки
Код
$parameters = array_unique($parameters);
вставить строку
Код
sort($parameters);
Тогда
Код
$q .= "ORDER BY $param_name";
можно смело убрать за ненадобностью.
« Последнее редактирование: 28.05.2010, 08:40:36 от Arkadiy »

*

volkazirik

  • Захожу иногда
  • **
  • 12
  • 1
Re: Фильтр для VirtueMart (must have)
« Ответ #13 : 28.05.2010, 16:32:42 »
Нуу.. хотелось бы:
1. по цене
2. по алфавиту  (только чтоб от А до Я) потому что ставлю product_name  а он сортирует от Я до А.
3. больше пока ничего не придумал))

 и что значит product_id который стоит по умолчанию в сортировке? ведь при таком значении он выводит хрен знает как...

*

Arkadiy

  • Группа развития
  • *****
  • 5342
  • 440
  • Крепитесь, други.
Re: Фильтр для VirtueMart (must have)
« Ответ #14 : 28.05.2010, 16:57:48 »
1. по цене
Код
$q .= "ORDER BY final_price ASC ";

2. по алфавиту в прямом порядке
Код
$q .= "ORDER BY #__{vm}_product.product_name ASC ";
ASC DESC - направление (ASC А-Я, DESC Я-А).

*

my@so

  • Осваиваюсь на форуме
  • ***
  • 117
  • 1
Re: Фильтр для VirtueMart (must have)
« Ответ #15 : 29.05.2010, 00:20:28 »
Что во всплывающих подсказках писать и откуда это брать?
таблица _vm_product_type_parameter, поле parameter_description

*

Arkadiy

  • Группа развития
  • *****
  • 5342
  • 440
  • Крепитесь, други.
Re: Фильтр для VirtueMart (must have)
« Ответ #16 : 29.05.2010, 09:29:29 »
unisearch.php после строки
Код
//запрашиваем названия свойств
$q = "SELECT `parameter_name`, `parameter_label`, `parameter_type`, ";
вставояем
Код
$q .= "`parameter_description`, ";
строку, которая начинается с
Код
if ($conf['show_label'] == 1) echo "\n <div class=\"parameter_label\">"
заменить на
Код
if ($conf['show_label'] == 1) echo "\n <div class=\"parameter_label\">" . $parameter_label. ": ".JHTML::tooltip($patam->parameter_description, $parameter_label, 'tooltip.png', '', '', false)."</div>\n";

*

Arkadiy

  • Группа развития
  • *****
  • 5342
  • 440
  • Крепитесь, други.
Re: Фильтр для VirtueMart (must have)
« Ответ #17 : 01.06.2010, 08:08:11 »
Ой неправильно выразился... То есть когда в каталоге заходишь в один раздел например Керама Марацци http://plitkimnogo.ru/index.php?option=com_virtuemart&Itemid=30, то фабрика доступна только керама марацци в поиске, нельзя выбрать другие фабрики для поиска. Вот в чем вопрос.
Если вывести в модуле поиска на фронт категории, то будет возможно. или закомментировать 26 строку
Код
if (empty($cid[0]) && !empty($category_id)) $cid[0] = $category_id;
в mod_vm_universal_search.php
« Последнее редактирование: 01.06.2010, 08:13:07 от Arkadiy »

*

orelalex

  • Осваиваюсь на форуме
  • ***
  • 38
  • 2
Re: Фильтр для VirtueMart (must have)
« Ответ #18 : 02.06.2010, 03:43:26 »
Не могу понять как вывести наименование производителя в товаре в результатах поиска.
Не стесняйтесь ставить "+" на карме, если мой ответ помог Вам =)
Создаю сайты недорого

*

Arkadiy

  • Группа развития
  • *****
  • 5342
  • 440
  • Крепитесь, други.
Re: Фильтр для VirtueMart (must have)
« Ответ #19 : 02.06.2010, 14:24:26 »
vm_ext_search_helper.php после строки 204 с текстом
Код
$img = "<img align=\"left\" src=\"" . $product_thumb_image . "\" />" ;
вставляем след. запрос:
Код
$dbm = new ps_DB;
$dbm->query("SELECT m.manufacturer_id, m.mf_name
            FROM #__{vm}_manufacturer as m,
            #__{vm}_product_mf_xref as mx
            WHERE m.manufacturer_id = mx.manufacturer_id
            AND mx.product_id = ".$db->f("product_id")."
            LIMIT 1
            ");
$mf_name = $dbm->f("mf_name");
unset ($dbm);
После оперируем $mf_name как хотим.
« Последнее редактирование: 02.06.2010, 14:28:12 от Arkadiy »

*

Arkadiy

  • Группа развития
  • *****
  • 5342
  • 440
  • Крепитесь, други.
Re: Фильтр для VirtueMart (must have)
« Ответ #20 : 04.06.2010, 08:55:35 »
:)))
А мне бы это очень в тему бы пошло..  т.е. есть стандартные маленькие, есть большие, а вот еще как раз в этот скрипт нужны меньше чем станд.маленькие.  А геморно эту функцию включить?
И если возможно, то выложите где что надо изменить в коде, а не готовые измененные файлы)))   а то я так уже на кастомился что новую версию нереально поставить))
Чтобы заработали размеры картинки необходимо  строку 202 (приблизительно), начинающуюся с
Код
$img = "<img align=\"left\" src=\"" . $product_thumb_image
написать в таком виде:
Код
$img = "<img align=\"left\" src=\"" . $product_thumb_image . "\" width=\"".$t_width."\" height=\"".$t_height."\" />" ;
Вот и все, остальное не забыл.

*

volkazirik

  • Захожу иногда
  • **
  • 12
  • 1
Re: Фильтр для VirtueMart (must have)
« Ответ #21 : 13.06.2010, 11:12:14 »
Как сделать так, чтобы в форме поиска не показывалось окно "Характеристики товаров:"?

Я убрал так:
Файл components/com_vm_ext_search/files/unisearch.php
Закомментировал строку 333:
   print '<div class="label">Характеристики товаров: </div>';


*

volkazirik

  • Захожу иногда
  • **
  • 12
  • 1
Re: Фильтр для VirtueMart (must have)
« Ответ #22 : 14.06.2010, 17:52:09 »
Wharfadale
подскажите, а у этого скрипта есть кеш? И где его удалить?
А то я тут по удалял несколько товаров и изменял порядок значений одного параметра типа, и после этого скрипт начал нищадно глючить :(
Выдает что в результатах 3 товара, а при нажатии на "поиск" выводит 1 товар..  а при другом значении наоборот))


Отправил ЛС. Очень жду ответа))
TO ALL:
Глюк победили!

Когда удаляем товар, то Вирт иногда не удаляет запись в таблице, которая отвечает за назначение товару определенного типа. И, соответственно, поисковый скрипт думает что товар в базе есть. А когда жмем "поиск", то получаем в ответ "поиск не дал результатов", т.к. кроме информации о присвоении типа этому товару, о нем больше ничего нет в базе, ни описалова, ни фотки...
Поэтому "ручками" лезем в phpmyadmin и в базе ищем таблицу jos_vm_product_type_1
там по ID ищем товар который удалили и убиваем эту строчку.

Версия J1.5.15 VM1.1.4

*

tomm.ua

  • Новичок
  • *
  • 1
  • 0
Re: Фильтр для VirtueMart (must have)
« Ответ #23 : 21.06.2010, 17:29:50 »
По ходу возникла проблема которую сам и решил - опишу, вдруг кому интересно будет.
Проблема была в том, что выпадающий список категорий формируется по длинне имени.
И если слишком длинное имя категории, то выпадающий список вылазит за границы модуля.
Решил вопрос грубо "в лоб", но одной правкой CSS не обошлось.
В папке с компонентом ищем unisearch.php и вместо:
Цитировать
echo "<select class=\"inpbox\" onchange=\"".$prefix."categoryChange()\" name=\"".$name."\">\n";
ставим
Цитировать
echo "<select id=\"mod_category_div\" class=\"inpbox\" onchange=\"".$prefix."categoryChange()\" name=\"".$name."\">\n";
Таким образом в выпадающем списке категорий прописывается id="mod_category_div".
Ну и дальше лёгкая правка style.css модуля:
Цитировать
#mod_category_div{
   background:#f9f9f9;
   border:1px dashed #cccccc;
   padding:5px;
   margin: 5px;
}
добавляем width:
Цитировать
#mod_category_div{
   background:#f9f9f9;
   border:1px dashed #cccccc;
   padding:5px;
   margin: 5px;
   width: 155px;
}
Без прописывания id у меня width не срабатывал.
Но это корявое решение, может некорректно отображаться в ИЕ (в восьмом выпадающий список обрублен под заданный размер, шестого и седьмого под рукой нет).
Мозилла, опера и хром - отображает хорошо.

*

Arkadiy

  • Группа развития
  • *****
  • 5342
  • 440
  • Крепитесь, други.
Re: Фильтр для VirtueMart (must have)
« Ответ #24 : 28.06.2010, 15:19:22 »
если в категории типы присвоены не всем товарам, а в поиске никаких значений параметров не отмечено, то "количество товаров в выборке" показывает только число товаров с присвоенными типами.

Подскажите, пожалуйста, какой запрос надо подправить, чтобы показывалось общее число товаров в выбранной категории?
Эта строка в самом начале использовалась как отладочная информация о кол-ве товаров соответствующего типа в выборке, а сам запрос
Код
$q = "SELECT distinct `product_id` FROM #__{vm}_product_type_" . $param_id . " ";
$q .= " WHERE  `product_id` IN (" . implode(", ", $product_ids). ") ";
... и т.д.
используется совсем для другого. По этому переделать не получится.

*

Arkadiy

  • Группа развития
  • *****
  • 5342
  • 440
  • Крепитесь, други.
Re: Фильтр для VirtueMart (must have)
« Ответ #25 : 30.06.2010, 08:19:35 »
Фильтр принципиально выводит ТОЛЬКО товары с типами и параметрами?
Например сейчас, у меня в категории А присутствуют 3 товара, и только одному из них присвоен тип и параметры. Но если я выбираю в фильтре только категорию (или вообще отмечаю "выбрать все"), не выбирая ни тип ни параметры, ни производителя, и ожидая что фильтр выведет все три товара, в итоге получаю только ОДИН товар - тот которому присвоен тип.
Если в категории присутствует только 1 тип, то он выбирается автоматически при выборе категории и, в следствие этого, поиск выводит только товары соответствующего типа, а товары без типа не выводит.

*

Arkadiy

  • Группа развития
  • *****
  • 5342
  • 440
  • Крепитесь, други.
Re: Фильтр для VirtueMart (must have)
« Ответ #26 : 01.07.2010, 10:22:16 »
Обнаружилась критическая ошибка в логике работы компонента. Обнаружил Александр.
Неисправность заключается в некорректном поиске товаров с множественным выбором значений характеристик.
Исправить так:
unisearch.php
строку 389
Код
$parameter_multiselect[$i] = $patam->parameter_multiselect;
меняем на
Код
$parameter_multiselect[$i] = $patam->parameter_type;
строку 416
Код
if ($parameter_multiselect[$j] == 'N') $q .= "AND (`$parameter_name[$j]` = '".implode( "' OR `".$parameter_name[$j]."` =  '",$selected_params[$j])."') ";
меняем на
Код
if ($parameter_multiselect[$j] != 'V') $q .= "AND (`$parameter_name[$j]` = '".implode( "' OR `".$parameter_name[$j]."` =  '",$selected_params[$j])."') ";
строку 463
Код
elseif ($parameter_multiselect[$i] == 'N') $q1 .= "AND (`$parameter_name[$i]` = '".implode( "' OR `".$parameter_name[$i]."` =  '",$selected_params[$i])."') ";
меняем на
Код
elseif ($parameter_multiselect[$i] != 'V') $q1 .= "AND (`$parameter_name[$i]` = '".implode( "' OR `".$parameter_name[$i]."` =  '",$selected_params[$i])."') ";

*

Arkadiy

  • Группа развития
  • *****
  • 5342
  • 440
  • Крепитесь, други.
Re: Фильтр для VirtueMart (must have)
« Ответ #27 : 01.07.2010, 10:46:06 »
Забыл писал или нет про ошибку паджинации. Исправление здесь: http://joomlaforum.ru/index.php/topic,115793.msg656983.html#msg656983

*

Arkadiy

  • Группа развития
  • *****
  • 5342
  • 440
  • Крепитесь, други.
Re: Фильтр для VirtueMart (must have)
« Ответ #28 : 05.07.2010, 08:13:31 »
Устраняем вывод всех товаров в случае когда клиент меняет последовательность выбора характеристик на обратную (в таком случае возможен выбор характеристик для которых не соответствует ни одного товара)

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

  • Группа развития
  • *****
  • 5342
  • 440
  • Крепитесь, други.
Re: Фильтр для VirtueMart (must have)
« Ответ #29 : 14.07.2010, 14:21:53 »
У меня на сайте 2 валюты, доллары и рубли.
Цена товара устанавливается в долларах, но валюта по умолчанию рубли. Показываютя над товаром рубли.
Модуль ищет по долларам. Как сделать что бы искал по рублям?
В файле vm_ext_search_helper.php строчки
Код
$pf = vmGet($_REQUEST, 'pf', 0);
$pt = vmGet($_REQUEST, 'pt', 0);
заменить на
Код
$pf = vmGet($_REQUEST, 'pf', 0);
$pf = $GLOBALS['CURRENCY']->convert( $pf, $GLOBALS['product_currency'], 'USD' );
$pt = vmGet($_REQUEST, 'pt', 0);
$pt = $GLOBALS['CURRENCY']->convert( $pt, $GLOBALS['product_currency'], 'USD' );
Если в админке валюта не доллары, то поставить свой трехзначный код валюты. Если несколько валют в админке выбор прост - или привести все к одной валюте, или убрать поиск по цене.