kryvenko
Осваиваюсь на форуме
 
Репутация: +4/-0
Offline
Пол: 
Сообщений: 87
Joomla! 1.5.10, VirtueMart 1.1.3
|
 |
« : 27.06.2009, 18:26:44 » |
|
Почти сделал фильтр, или расширенный поиск по характеристикам товара: - Создал в VirtueMart 1.1.3 тип товара с характеристиками (в моем случае product_type_id = 3)
- В shop.browse.php добавил для отображения формы поиска по конкретному типу товара:
$product_type_id = 3; include(PAGEPATH. 'shop.parameter_search_form.php');
- Далее хочу что бы эта форма отображалась только на странице определенной категории товара (в моем случае 50), для этого предедущий код меняю на:
if ( $category_id == "50" ){ $product_type_id = 3; include(PAGEPATH. 'shop.parameter_search_form.php'); } else { } - Получаю:
 - Заполняю форму поиска, осуществляется корректно поиск +видно какие я параметры выбрал для поиска:
 - НО, ОСТАЛАСЬ ГЛАВНАЯ ПРОБЛЕМА:
Результат поиска уходит из категории товара в корень сайта. Как сделать что бы результат отображался в той же категории товара и соответственно сохранялось наше место расположение в товаре (pathway)(Breadcrumb)?
Прямая ссылка на сообщение с Компонентом и модулем поиска
|
|
|
|
« Последнее редактирование: 29.11.2009, 13:45:05 от beagler »
|
Записан
|
|
|
|
| |
|
beliyadm
|
 |
« Ответ #1 : 27.06.2009, 18:32:56 » |
|
в форме поиска передавать не только правильную ссылку, но и текущий ItemID, идентификатор пункта меню, тогда pathway будет корректный
|
|
|
|
|
Записан
|
|
|
|
kryvenko
Осваиваюсь на форуме
 
Репутация: +4/-0
Offline
Пол: 
Сообщений: 87
Joomla! 1.5.10, VirtueMart 1.1.3
|
 |
« Ответ #2 : 27.06.2009, 18:37:36 » |
|
в форме поиска передавать не только правильную ссылку, но и текущий ItemID, идентификатор пункта меню, тогда pathway будет корректный
где-то вот здесь нужно вставить? <form action="<?php echo URL ?>index.php" method="post" name="attr_search"> <input type="hidden" name="option" value="com_VirtueMart" /> <input type="hidden" name="page" value="shop.browse" /> <input type="hidden" name="product_type_id" value="<?php echo $product_type_id ?>" /> <input type="hidden" name="Itemid" value="<?php echo $sess->getShopItemid() ?>" />
Как указать "не только правильную ссылку, но и текущий ItemID"? 
|
|
|
|
|
Записан
|
|
|
|
|
beliyadm
|
 |
« Ответ #3 : 27.06.2009, 18:42:32 » |
|
Как указать "не только правильную ссылку, но и текущий ItemID"?  Если версия движка 1.0, то достаточно global $Itemid; Если 1.5, то $Itemid = JRequest::getInt( 'Itemid', 1, 'get' ); И дальше в hidden поле подставляй (либо передавай в action формы) что такое $sess->getShopItemid() я если честно не знаю, видимо у магазина какие то свои параметры в сессии (виртом не увлекаюсь, потому не в курсе) И какой то странный для меня акшн в форме, не очень понимаю, может спецы по virtuemart подскажут <?php echo URL ?>index.php
|
|
|
|
|
Записан
|
|
|
|
kryvenko
Осваиваюсь на форуме
 
Репутация: +4/-0
Offline
Пол: 
Сообщений: 87
Joomla! 1.5.10, VirtueMart 1.1.3
|
 |
« Ответ #4 : 27.06.2009, 18:48:13 » |
|
плиз, поподробнее, что-то не выходит 
|
|
|
|
|
Записан
|
|
|
|
|
morph
|
 |
« Ответ #5 : 28.06.2009, 06:04:58 » |
|
смотри,у тебя: <form action="<?php echo URL ?>index.php" method="post" name="attr_search"> тоесть у тебя на главную ссылка и идет. тогда надо так: $category_id = vmRequest::getInt( 'category_id' ); global $mm_action_url, $sess,$vmInputFilter; <form action="<?php $sess->purl( $mm_action_url."index.php?[color=red]page=shop.browse&category=$category_id[/color]" ) ?>" method="post" name="attr_search"> тогда укажеш форме чтобы открывалась страница списка товаров в нужной категории. $Itemid там и так воткнеться
|
|
|
|
|
Записан
|
|
|
|
kryvenko
Осваиваюсь на форуме
 
Репутация: +4/-0
Offline
Пол: 
Сообщений: 87
Joomla! 1.5.10, VirtueMart 1.1.3
|
 |
« Ответ #6 : 28.06.2009, 15:05:46 » |
|
Спасибо, получилось, НО если писать <form action="<?php $sess->purl( $mm_action_url."index.php?page=shop.browse&category=$category_id" ) ?>" method="post" name="attr_search"> то попадаю не в корень сайта а в корень магазина (index.php?option=com_VirtueMart& category=50&page=shop.browse&Itemid=79) Изменил на <form action="<?php $sess->purl( $mm_action_url."index.php?page=shop.browse&category_id=$category_id" ) ?>" method="post" name="attr_search"> И теперь попадаю куда необходимо в : (index.php?option=com_VirtueMart& category_id=50&page=shop.browse&Itemid=79)
|
|
|
|
|
Записан
|
|
|
|
soldat
Осваиваюсь на форуме
 
Репутация: +3/-0
Offline
Сообщений: 83
|
 |
« Ответ #7 : 03.07.2009, 08:26:43 » |
|
kryvenko подскажи, а как ты сделал возможность выбора (например производителя)? Спасибо
|
|
|
|
|
Записан
|
|
|
|
kryvenko
Осваиваюсь на форуме
 
Репутация: +4/-0
Offline
Пол: 
Сообщений: 87
Joomla! 1.5.10, VirtueMart 1.1.3
|
 |
« Ответ #8 : 03.07.2009, 13:28:47 » |
|
kryvenko подскажи, а как ты сделал возможность выбора (например производителя)? Спасибо
Создал в тип товара с характеристиками (одна из которых - производитель). Далее в настройках товара добавил, прикрепил этот тип товара.
|
|
|
|
|
Записан
|
|
|
|
kryvenko
Осваиваюсь на форуме
 
Репутация: +4/-0
Offline
Пол: 
Сообщений: 87
Joomla! 1.5.10, VirtueMart 1.1.3
|
 |
« Ответ #9 : 03.07.2009, 13:31:45 » |
|
Народ, подскажите как редактировать шаблон расширенного поиска? Подскажите, куда нужно копировать "страница отображения типа товара"?  Кто-то может подсказать, показать шаблончик для таких страниц? в /administrator/components/com_VirtueMart/html/shop.parameter_search_form.php нашел следующее: /******************************************************** ** BrowsePage - You can use your tepmlate for searching: ** 1) write file with html table (without tags <table> and </table>) and ** take its name into variable browsepage in Product Type ** 2) You can use this page from tag <!-- Default list of parameters - BEGIN --> to ** tag <!-- Default list of parameters - END --> and changed it. ** 3) tag {product_type_<product_type_id>_<parameter_name>} will be replaced input field, or select field ** tag {product_type_<product_type_id>_<parameter_name>_comp} will be replaced comparison ** for this parameter. It is important for correct SQL question. ** tag {product_type_<product_type_id>_<parameter_name>_value} will be replaced value for this ** parameter (when you click on button "Change Parametes" in Browse page). ********************************************************/ Пробую использовать эти теги, но без результата 
|
|
|
|
|
Записан
|
|
|
|
soldat
Осваиваюсь на форуме
 
Репутация: +3/-0
Offline
Сообщений: 83
|
 |
« Ответ #10 : 06.07.2009, 02:27:33 » |
|
Создал в тип товара с характеристиками (одна из которых - производитель). Далее в настройках товара добавил, прикрепил этот тип товара.
Спасибо, разобрался, а можно как то сделать, чтобы производители автоматически добавлялись, а не свисывать в ручную?
|
|
|
|
« Последнее редактирование: 06.07.2009, 03:12:00 от soldat »
|
Записан
|
|
|
|
kryvenko
Осваиваюсь на форуме
 
Репутация: +4/-0
Offline
Пол: 
Сообщений: 87
Joomla! 1.5.10, VirtueMart 1.1.3
|
 |
« Ответ #11 : 06.07.2009, 03:12:03 » |
|
После того как создал тип товара с характеристиками (например "Наименование" ... , в твоем случае), необходимо вернуться в конкретный товар и в его настройках добавить ему тип товара, созданый недавно. Далее смотришь в расширенный поиск по характеристикам (можно этот пункт вывести в VirtueMartовском модуле) или по ссылке: index.php?option=com_VirtueMart&page=shop.parameter_search
|
|
|
|
|
Записан
|
|
|
|
soldat
Осваиваюсь на форуме
 
Репутация: +3/-0
Offline
Сообщений: 83
|
 |
« Ответ #12 : 06.07.2009, 06:52:52 » |
|
kryvenko спасибо, да не видел, что создается отдельная вкладка.
А производителей придется в ручную вписывать (делать список)? Как то можно убрать поиск по цене? И когда ищешь по тексту не нравится вкладка (чтобы присутствовал/отсутствовал), убирается как-нибудь?
|
|
|
|
« Последнее редактирование: 06.07.2009, 06:56:01 от soldat »
|
Записан
|
|
|
|
|
morph
|
 |
« Ответ #13 : 06.07.2009, 09:47:12 » |
|
все только ручками Как то можно убрать поиск по цене? administrator\components\com_VirtueMart\html\shop.parameter_search_form.php убить // Add search according to price: $item_name = "price"; $get_item_value = vmGet($_REQUEST, $item_name, ""); $get_item_value_comp = vmGet($_REQUEST, $item_name."_comp", ""); echo "<tr>\n <td width=\"35%\" height=\"2\" valign=\"top\"><div align=\"right\"><strong>"; echo $VM_LANG->_('PHPSHOP_CART_PRICE')." :</strong></div>\n </td>\n"; // comparison echo "<td width=\"10%\" height=\"2\" valign=\"top\" align=\"center\">\n"; echo "<select class=\"inputbox\" name=\"price_comp\">"; echo "<option value=\"lt\"".(($get_item_value_comp=="lt")?" selected":"")."><</option>\n"; echo "<option value=\"le\"".((empty($get_item_value_comp)||$get_item_value_comp=="le")?" selected":"")."><=</option>\n"; echo "<option value=\"eq\"".(($get_item_value_comp=="eq")?" selected":"").">=</option>\n"; echo "<option value=\"ge\"".(($get_item_value_comp=="ge")?" selected":"").">>=</option>\n"; echo "<option value=\"gt\"".(($get_item_value_comp=="gt")?" selected":"").">></option>\n"; echo "<option value=\"ne\"".(($get_item_value_comp=="ne")?" selected":"")."><></option>\n"; echo "</select></td>"; // input text echo "\n<td> <input type=\"text\" class=\"inputbox\" name=\"price\" value=\"$get_item_value\" size=\"20\" /></td>\n</tr>"; // Search Button И когда ищешь по тексту не нравится вкладка (чтобы присутствовал/отсутствовал), убирается как-нибудь? тоже в этом файле смореть и оставлять чтото по умолчанию скрытым..
|
|
|
|
|
Записан
|
|
|
|
kibi
Осваиваюсь на форуме
 
Репутация: +1/-0
Offline
Пол: 
Сообщений: 38
|
 |
« Ответ #14 : 06.07.2009, 13:10:52 » |
|
Выложите пожалста пошаговую инструкцию по созданию множественного фильтра, такое многим нужно  Заранее спасибо  У меня задача сделать фильтр по характеристикам как здесь - _http://silicon-s.ru/catalog/dvr_secnet_avc/videoregistrator/ Пока что у меня получилось так - http://vmshop.1gb.ua/index.php?page=shop.browse&category_id=6&option=com_virtuemart&Itemid=1&vmcchk=1&Itemid=1 Но такой вариант не совсем то что нужно. Подскажите как сделать чтобы форма фильтра выводилась сразу в категории. P.S. Joomla 1.5.12 VirtueMart 1.1.3 stable
|
|
|
|
« Последнее редактирование: 06.07.2009, 13:22:24 от kibi »
|
Записан
|
|
|
|
|
morph
|
 |
« Ответ #15 : 06.07.2009, 13:43:28 » |
|
ну писать комунить инструкцию думаю просто лень.поиск форева.) Подскажите как сделать чтобы форма фильтра выводилась сразу в категории.
почему инфа не полная? http://joomlaforum.ru/index.php/topic,69642.0.html $product_type_id = 3; include(PAGEPATH. 'shop.parameter_search_form.php'); нормально описано вариант хака. я модулем делал.
|
|
|
|
|
Записан
|
|
|
|
kibi
Осваиваюсь на форуме
 
Репутация: +1/-0
Offline
Пол: 
Сообщений: 38
|
 |
« Ответ #16 : 06.07.2009, 13:56:58 » |
|
я модулем делал.
Опиши пожалста процесс вывода модулем, какой код выводить модулем? Народ, подскажите как редактировать шаблон расширенного поиска? Пробую использовать эти теги, но без результата  также присоединяюсь к вопросу
|
|
|
|
« Последнее редактирование: 07.07.2009, 00:05:02 от kibi »
|
Записан
|
|
|
|
soldat
Осваиваюсь на форуме
 
Репутация: +3/-0
Offline
Сообщений: 83
|
 |
« Ответ #17 : 07.07.2009, 02:03:36 » |
|
Закоментил строки и нет теперь формы выбора текста (чтобы присутствовал/отсутствовал) case "T": // Text if (!empty($parameter_values)) { // List of values - no comparison echo "<td><input type=\"hidden\" name=\"".$item_name."_comp\" value=\"texteq\" />\n</td>\n"; break; } echo "<td width=\"1%\" height=\"2\" valign=\"top\" align=\"center\">\n"; // echo "<select class=\"inputbox\" name=\"".$item_name."_comp\">\n"; // echo "<option value=\"like\"".(($get_item_value_comp=="like")?" selected":"").">".$VM_LANG->_('PHPSHOP_PARAMETER_SEARCH_IS_LIKE')."</option>\n"; // echo "<option value=\"notlike\"".(($get_item_value_comp=="notlike")?" selected":"").">".$VM_LANG->_('PHPSHOP_PARAMETER_SEARCH_IS_NOT_LIKE')."</option>\n"; // echo "<option value=\"fulltext\"".(($get_item_value_comp=="fulltext")?" selected":"").">".$VM_LANG->_('PHPSHOP_PARAMETER_SEARCH_FULLTEXT')."</option>\n"; // echo "</select></td>"; break; case "V": // Multiple Value echo "<td><input type=\"hidden\" name=\"".$item_name."_comp\" value=\"find_in_set\" />\n</td>\n"; break; case "S": // Short Text default: // Default type Short Text if (!empty($parameter_values)) { // List of values - no comparison echo "<td><input type=\"hidden\" name=\"".$item_name."_comp\" value=\"texteq\" />\n</td>\n"; break; } echo "<td width=\"1%\" height=\"2\" valign=\"top\" align=\"center\">\n"; // echo "<select class=\"inputbox\" name=\"".$item_name."_comp\">\n"; // echo "<option value=\"like\"".(($get_item_value_comp=="like")?" selected":"").">".$VM_LANG->_('PHPSHOP_PARAMETER_SEARCH_IS_LIKE')."</option>\n"; // echo "<option value=\"notlike\"".(($get_item_value_comp=="notlike")?" selected":"").">".$VM_LANG->_('PHPSHOP_PARAMETER_SEARCH_IS_NOT_LIKE')."</option>\n"; // echo "</select></td>";
|
|
|
|
|
Записан
|
|
|
|
kryvenko
Осваиваюсь на форуме
 
Репутация: +4/-0
Offline
Пол: 
Сообщений: 87
Joomla! 1.5.10, VirtueMart 1.1.3
|
 |
« Ответ #18 : 07.07.2009, 04:06:58 » |
|
http://joomlaforum.ru/index.php/topic,69642.0.htmlнормально описано вариант хака. я модулем делал.
как расширеный поиск по характеристикам вынести в модуль? хэлп
|
|
|
|
|
Записан
|
|
|
|
|
morph
|
 |
« Ответ #19 : 07.07.2009, 06:49:34 » |
|
копировать код из shop.parameter_search_form.php , задавать в настройках модуля id типа и подставлять вместо $product_type_id ,или название
|
|
|
|
|
Записан
|
|
|
|
kryvenko
Осваиваюсь на форуме
 
Репутация: +4/-0
Offline
Пол: 
Сообщений: 87
Joomla! 1.5.10, VirtueMart 1.1.3
|
 |
« Ответ #20 : 07.07.2009, 22:21:57 » |
|
копировать код из shop.parameter_search_form.php , задавать в настройках модуля id типа и подставлять вместо $product_type_id ,или название
Плиз поподробнее...Захожу в "Менеджер модулей", выбираю "создать", далее "Произвольный HTML-код".... и там вижу что можно ввести "Суффикс класса модуля". Как задать в настройках модуля id типа? Ещё пробовал такой вариант:C помощью плагина "Add PHP" пытаюсь вставить PHP страницу (notebook.php) с кодом shop.parameter_search_form.php в описание категории товара (php1.png)(php2.png) НО ПОЛУЧАЮ: Fatal error: Call to a member function query() on a non-object in /php-files/notebook.php on line 24 Жалуется, что не может создать запрос: $q = "SELECT * FROM #__{vm}_product_type "; $q .= "WHERE product_type_id='$product_type_id' "; $q .= "AND product_type_publish='Y'"; $db->query($q);
Как доделать такой вариант кто-то знает?
|
|
|
|
|
Записан
|
|
|
|
kryvenko
Осваиваюсь на форуме
 
Репутация: +4/-0
Offline
Пол: 
Сообщений: 87
Joomla! 1.5.10, VirtueMart 1.1.3
|
 |
« Ответ #21 : 07.07.2009, 22:47:25 » |
|
ОШИБКА ПОИСКА  Создал тип товара (ноутбуки), несколько характеристик (..., беспроводные соединения, ...) с несколькими значениями (WiFi; Bluetooth). (e1.png) Далее создал товар, прикрепил к нему этот тип товара. Отмечаю характеристики товара. В "беспроводные соединения" отмечаю не одно значение а два (WiFi и Bluetooth) (e2.png) Далее на странице расширенного поиска выбираю ЛЮБОЕ из возможных значений параметра (e3.png) и НЕ НАХОЖУ нужный товар. Находиться, только если в настройках товара отмечаю только одно значение характеристики (e2.png) 
|
|
|
|
« Последнее редактирование: 07.07.2009, 22:53:23 от kryvenko »
|
Записан
|
|
|
|
kryvenko
Осваиваюсь на форуме
 
Репутация: +4/-0
Offline
Пол: 
Сообщений: 87
Joomla! 1.5.10, VirtueMart 1.1.3
|
 |
« Ответ #22 : 07.07.2009, 22:52:07 » |
|
ОШИБКА ПОИСКА  Понял проблему. Товар могу найти если на (e3.png) выбрать "любое выбранное" Что бы по-умолчанию стояло "любое выбранное" вместо "все выбранные" Нужно в shop.parameter_search_form.php поменять между собой строки: $comp .= "<option value=\"find_in_set_all\"".(($get_item_value_comp=="find_in_set_all")?"selected":"").">".$VM_LANG->_('PHPSHOP_PARAMETER_SEARCH_FIND_IN_SET_ALL')."</option>\n"; $comp .= "<option value=\"find_in_set_any\"".(($get_item_value_comp=="find_in_set_any")?"selected":"").">".$VM_LANG->_('PHPSHOP_PARAMETER_SEARCH_FIND_IN_SET_ANY')."</option>\n"; Сейчас думаю как вообще скрыть этот пункт выбора ? и что бы по-умолчанию всегда принималось "find_in_set_any"
|
|
|
|
« Последнее редактирование: 07.07.2009, 23:59:34 от kryvenko »
|
Записан
|
|
|
|
kryvenko
Осваиваюсь на форуме
 
Репутация: +4/-0
Offline
Пол: 
Сообщений: 87
Joomla! 1.5.10, VirtueMart 1.1.3
|
 |
« Ответ #23 : 08.07.2009, 00:21:18 » |
|
ОШИБКА ПОИСКА  Хотя проверил, ошибка есть, даже если выбирать "любое выбранное"
|
|
|
|
|
Записан
|
|
|
|
|
morph
|
 |
« Ответ #24 : 08.07.2009, 06:09:24 » |
|
Захожу в "Менеджер модулей", выбираю "создать", далее "Произвольный HTML-код".... и там вижу что можно ввести "Суффикс класса модуля". не...писать свой модуль...допустим взять модуль поиска магазина,переименовать его,воткнуть туда код из файла и т.п. ...короче все ручками
|
|
|
|
|
Записан
|
|
|
|
kryvenko
Осваиваюсь на форуме
 
Репутация: +4/-0
Offline
Пол: 
Сообщений: 87
Joomla! 1.5.10, VirtueMart 1.1.3
|
 |
« Ответ #25 : 10.07.2009, 00:24:25 » |
|
ОШИБКА В ПОИСКЕ, если параметр-характеристика товара имеет несколько значений: Например, параметр "интерфейс" в типе товара "жесткие диски" имеет значение "SATA II" и "USB2.0" и "FireWire(IEEE1394)" одновременно эти три значения. Если искать товар, выбрав "интерфейс: SATA II", то товар НЕ НАХОДИТСЯ 
|
|
|
|
|
|
morph
|
 |
« Ответ #26 : 10.07.2009, 04:12:23 » |
|
kryvenko,есть такое дело) - ищет только по одному) shop_browse_queries.php ишем case "find_in_set_any": $comp = array(); foreach($get_item_value as $value) { array_push($comp,"FIND_IN_SET('$value',`$parameter_name`)"); } $comp = "(" . join($get_item_value_comp == "find_in_set_all"?" AND ":" OR ", $comp) . ")"; $parameter_name = ""; $get_item_value = ""; break; меняем на case "find_in_set_any": $comp = array(); foreach($get_item_value as $value) { array_push($comp,"`$parameter_name` LIKE '%$value%'"); } $comp = "(" . join($get_item_value_comp == "find_in_set_all"?" OR ":" OR ", $comp) . ")"; $parameter_name = ""; $get_item_value = ""; break; попробуй
|
|
|
|
|
Записан
|
|
|
|
kryvenko
Осваиваюсь на форуме
 
Репутация: +4/-0
Offline
Пол: 
Сообщений: 87
Joomla! 1.5.10, VirtueMart 1.1.3
|
 |
« Ответ #27 : 10.07.2009, 12:21:30 » |
|
kryvenko,есть такое дело) - ищет только по одному)
Ааа!!! Заработало, спасибо +
|
|
|
|
|
Записан
|
|
|
|
kryvenko
Осваиваюсь на форуме
 
Репутация: +4/-0
Offline
Пол: 
Сообщений: 87
Joomla! 1.5.10, VirtueMart 1.1.3
|
 |
« Ответ #28 : 11.07.2009, 11:39:06 » |
|
тогда надо так: $category_id = vmRequest::getInt( 'category_id' ); global $mm_action_url, $sess,$vmInputFilter; <form action="<?php $sess->purl( $mm_action_url."index.php?[color=red]page=shop.browse&category=$category_id[/color]" ) ?>" method="post" name="attr_search"> тогда укажеш форме чтобы открывалась страница списка товаров в нужной категории. Если отставить <form action="<?php $sess->purl( $mm_action_url."index.php?page=shop.browse&category_id=$category_id" ) ?>" method="post" name="attr_search"> То поиск идет не по всем продуктам с необходимым типом товара а только по продуктам с необходимым типом в категории в которой отображ форма(( Тоесть есть каталог товаров: Категория1 -товар 1 (с типом 1) -товар 2 (с типом 1) -товар 3 (с типом 1) Подкатегория2 -товар 4 (с типом 1) -товар 5 (с типом 1) -товар 6 (с типом 1) Подкатегория2 -товар 7 (с типом 1) -товар 8 (с типом 1) -товар 9 (с типом 1) Если видим форму поиска в Категории1, то поиск идет только в Категории1 и под категории не затрагивает ((( (товары 4-9 не участвуют в поиске) А если свойства кнопки "поиск" оставить стандартные <form action="<?php echo URL ?>index.php" method="post" name="attr_search"> то поиск идет по всем категориям и подкатегориям, но результаты поиска отображаются как бы в корне сайта а хотелось что бы результаты появлялись в тойже категории 
|
|
|
|
« Последнее редактирование: 11.07.2009, 11:49:14 от kryvenko »
|
Записан
|
|
|
|
kryvenko
Осваиваюсь на форуме
 
Репутация: +4/-0
Offline
Пол: 
Сообщений: 87
Joomla! 1.5.10, VirtueMart 1.1.3
|
 |
« Ответ #29 : 14.07.2009, 02:07:04 » |
|
Последний трабл решил следующим способом: - Cделал вывод товаров из подкатегорий в родительскую категорию http://joomlaforum.ru/index.php/topic,44112.msg267573.html#msg267573
- Получил:
Категория1 "id50" -товар 1 (с типом 1) -товар 2 (с типом 1) -товар 3 (с типом 1) -товар 4 (с типом 1)(из Подкатегории1) -товар 5 (с типом 1)(из Подкатегории1) -товар 6 (с типом 1)(из Подкатегории1) -товар 7 (с типом 1)(из Подкатегории2) -товар 8 (с типом 1)(из Подкатегории2) -товар 9 (с типом 1)(из Подкатегории2) Подкатегория1 "id72" -товар 4 (с типом 1) -товар 5 (с типом 1) -товар 6 (с типом 1) Подкатегория2 "id77" -товар 7 (с типом 1) -товар 8 (с типом 1) -товар 9 (с типом 1) Категория2 Категория3
- Форму поиска по характеристикам вывел в категории1 "id50" и подкатегориях (1 "id72", 2 "id77")
- И что бы из подкатегорий(1 "id72", 2 "id77") мы могли осуществлять поиск по всем товарам категории1("id50") меняю
<form action="<?php $sess->purl( $mm_action_url."index.php?page=shop.browse&category_id=$category_id" ) ?>" method="post" name="attr_search"> на явное указание категории 1 ("id50") <form action="<?php $sess->purl( $mm_action_url."index.php?page=shop.browse&category_id=50" ) ?>" method="post" name="attr_search"> - Далее хочу более компактно и рационально преобразовать стандартную форму поиска (хочу убрать подписи к полям ввода поисковых значений)
Вид вывода выпадающего списка меняю:
echo "<option value=\"\">".$VM_LANG->_('PHPSHOP_SELECT')."</option>\n"; foreach($fields as $field) { echo "<option value=\"$field\"".(($get_item_value==$field) ? " selected>" : ">"). $field."</option>\n"; } на: echo "<option value=\"\">".$db->f("parameter_label")."</option>\n"; foreach($fields as $field) { echo "<option value=\"$field\"".(($get_item_value==$field) ? " selected>" : ">"). $field."</option>\n"; } Изменяю вид вывода целого типа. По умолчанию выбор значения "<=" switch( $parameter_type ) { case "C": // Char if (!empty($parameter_values)) { // List of values - no comparison echo "<td><input type=\"hidden\" name=\"".$item_name."_comp\" value=\"eq\" />\n</td>\n"; break; } case "I": // Integer case "F": // Float case "D": // Date & Time case "A": // Date case "M": // Time echo "<td width=\"10%\" height=\"2\" valign=\"top\" align=\"center\">\n"; echo "<select class=\"inputbox\" name=\"".$item_name."_comp\">\n"; echo "<option value=\"lt\"".(($get_item_value_comp=="lt")?" selected":"")."><</option>\n"; echo "<option value=\"le\"".((empty($get_item_value_comp)||$get_item_value_comp=="le")?" selected":"")."><=</option>\n"; echo "<option value=\"eq\"".(($get_item_value_comp=="eq")?" selected":"").">=</option>\n"; echo "<option value=\"ge\"".(($get_item_value_comp=="ge")?" selected":"").">>=</option>\n"; echo "<option value=\"gt\"".(($get_item_value_comp=="gt")?" selected":"").">></option>\n"; echo "<option value=\"ne\"".(($get_item_value_comp=="ne")?" selected":"")."><></option>\n"; echo "</select></td>"; break;
Далее замена: case "M": // Time echo " (".$VM_LANG->_('PHPSHOP_PRODUCT_TYPE_PARAMETER_FORM_TYPE_TIME_FORMAT').")"; break; на: case "M": // Time if ($get_item_value=='') { // выводим название параметра в поле, кликнув по полю можно ввести значение для поиска echo "<input value=\"".$db->f("parameter_label")."\" onfocus=\"if (this.value=='".$db->f("parameter_label")."') this.value=''\" onblur=\"if (this.value=='') this.value='".$db->f("parameter_label")."'\" type=\"text\" class=\"inputbox\" name=\"$item_name\" size=\"20\" />"; } else { // выводит значение параметра, которое участвует в поиске echo "<input value=\"$get_item_value\" onfocus=\"if (this.value=='".$db->f("parameter_label")."') this.value=''\" onblur=\"if (this.value=='') this.value='".$db->f("parameter_label")."'\" type=\"text\" class=\"inputbox\" name=\"$item_name\" value=\"".$db->f("parameter_label")."\" size=\"20\" />"; } break;
Получаю (advs1.png) - Идеально, казалось бы, проходит поиск. Видно результат поиска; +значения параметров, по которым производился поиск; + вывод результата в нужной категории (advs2.png)
- НО есть капля дегтя
: - Проблема в "целом типе". Нужно во время отправки формы производить проверку:
если $get_item_value ==$db->f("parameter_label"), то $get_item_value ='' [/li]
- запутался с синтаксисом, так понимаю нужно использовать "onsubmit="javascript: if...."?
|
|
|
|
|
Записан
|
|
|
|
|