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

DarkMaster13

  • Захожу иногда
  • 77
  • 12 / 0
Ситуация такая:
  • Все товары разделены по категориям (всего их 4 пока без подкатегорий);
  • Все товары одного типа (Тип_1);
  • У Типа (Тип_1) есть 7 параметров (Параметр1 - Параметр7);
  • Значения параметров находятся в таблице jos_vm_product_type_1;
  • связаны с товаром по полю product_id.
А теперь вопрос: Как сделать сортировку товара по значению параметра типа для заданной категории?

Думаю такая сортировка вещь полезная и довольно универсальная.
Вобщем начинаю ковырять shop.parameter_search_form.
У кого какие идеи не стесняйтесь говорите  *DRINK*
« Последнее редактирование: 04.05.2009, 16:31:20 от beagler »
Копать отсюда и до обеда
*

DarkMaster13

  • Захожу иногда
  • 77
  • 12 / 0
Эй народ !!!! празднуете ? ;D С праздниками Всех. Но всетаки вернемся к моим баранам.
Выполнение такого запроса:
Код
SELECT a.`product_id` , a.`product_name` , b.`nvsh_mex` 
FROM `jos_vm_product` AS a, `jos_vm_product_type_1` AS b, `jos_vm_product_category_xref` AS c
WHERE a.`product_id` = b.`product_id`
AND a.`product_id` = c.`product_id`
AND c.`category_id` =1
AND a.`product_publish` = 'Y'
ORDER BY b.`nvsh_mex`

и расположение всех товаров согласно product_id меня наверно устроит :)
Вообще в shop.parameter_search_form много интересного но для сортировки он скорей всего не нужен.
вот shop_browse_queries гараздо интересней  ;)
в конце файла есть заремареная строка //echo $list;
если коментарий убрать то можно посмотреть какой запрос формируется.
Вот оно я уже де-то рядом :)
Копать отсюда и до обеда
*

DarkMaster13

  • Захожу иногда
  • 77
  • 12 / 0
Вобщем Что у меня вышло
browse_orderbyfields.tpl
Добавляем список параметров в сортировку
Код
$query = "SELECT distinct a.product_type_id,a.parameter_name,a.parameter_label FROM #__{vm}_product_type_parameter AS a ";
$query .= "ORDER BY a.parameter_label ASC";
$db = new ps_DB;
$db->query( $query );
$myres = $db->record;
foreach ($myres as $param) {
$selected = '';
if( @$_REQUEST['orderby'] == $param->parameter_name ) {
$selected = "selected=\"selected\"";
}
echo "<option value=\"".$param->parameter_name."\" $selected>". $param->parameter_label."</option>\n";
}
Немножко правим shop_browse_queries
Добавим нужную таблицу
Код
$table_names = '`#__{vm}_product`, `#__{vm}_category`, `#__{vm}_product_category_xref`,`#__{vm}_shopper_group`,`jos_vm_product_type_1`';
Поправим сортировку
Код
switch( $orderby ) {
case 'product_list':
$orderbyField = '`#__{vm}_product_category_xref`.`product_list`'; break;
case 'product_name':
    $orderbyField = '`#__{vm}_product_type_1`.`nvsh_mex`'; break;
// $orderbyField = '`#__{vm}_product`.`product_name`'; break;
case 'product_price':
$orderbyField = '`#__{vm}_product_price`.`product_price`'; break;
case 'product_sku':
$orderbyField = '`#__{vm}_product`.`product_sku`'; break;
case 'product_cdate':
$orderbyField = '`#__{vm}_product`.`cdate`'; break;
case 'nvsh_mex':
$orderbyField = '`#__{vm}_product_type_1`.`nvsh_mex`'; break;
case 'nvsh_model':
$orderbyField = '`#__{vm}_product_type_1`.`nvsh_model`'; break;
case 'nvsh_dlina':
$orderbyField = '`#__{vm}_product_type_1`.`nvsh_dlina`'; break;
case 'nvsh_cena':
$orderbyField = '`#__{vm}_product_type_1`.`nvsh_cena`'; break;
case 'nvsh_magazin':
$orderbyField = '`#__{vm}_product_type_1`.`nvsh_magazin`'; break;
case 'nvsh_cvet':
$orderbyField = '`#__{vm}_product_type_1`.`nvsh_cvet`'; break;
case 'nvsh_vibor':
$orderbyField = '`#__{vm}_product_type_1`.`nvsh_vibor`'; break;

default:
//$orderbyField = '`#__{vm}_product`.`product_name`'; break;
$orderbyField = '`#__{vm}_product_type_1`.`nvsh_mex`'; break;
}
В разделе // ASSEMBLE THE QUERY правим условие
Код
$where_clause[] = "`product_parent_id`=0 ";
if( !$perm->check("admin,storeadmin") ) {
$where_clause[] = "`product_publish`='Y' ";
$where_clause[] = "`category_publish`='Y' ";
 $where_clause[] = "`jos_vm_product_type_1`.`product_id`= `jos_vm_product`.`product_id`";
Вроде даже работает...
Копать отсюда и до обеда
*

DarkMaster13

  • Захожу иногда
  • 77
  • 12 / 0
Тяк... вобщем расщиренный поиск перестал работать  ;D
решил так
shop_browse_queries
в области // Filter Products by Product Type восстанавливаем список таблиц
Код
$table_names = '`#__{vm}_product`, `#__{vm}_category`, `#__{vm}_product_category_xref`,`#__{vm}_shopper_group`';
Копать отсюда и до обеда
*

beagler

  • Moderator
  • 3276
  • 391 / 4
  • https://alorisman.ru/
*

DarkMaster13

  • Захожу иногда
  • 77
  • 12 / 0
Спасибо. ^-^ VirtueMart Version 1.1.3

попробывать пока можно тутhttp://darkmaster13.no-ip.biz:8080/webstream/

Задача усложняется. В листе сортировки разделить все на блоки таким образом.
Вначале каждого блока выводить "Сортировать по". Например если выбран цвет
то так
Белый
1 2 3 4
--------------------
Голубой
1 2 3 4
5 6 7 8
--------------------
Черный
1 2 3

Может кто делал? Или идею... Пока не знаю как сделать.
Копать отсюда и до обеда
*

DarkMaster13

  • Захожу иногда
  • 77
  • 12 / 0
Бывает :) ща виртуальный хостинг настрою. Работает вроде. Идеи как вывести блоки есть?
« Последнее редактирование: 04.05.2009, 17:08:42 от DarkMaster13 »
Копать отсюда и до обеда
*

DarkMaster13

  • Захожу иногда
  • 77
  • 12 / 0
Длина мне не нужна будет :) но как вариант длину можно задать в метрах 0,9 м.;1 м.;1,1 м.; Правила сорировки как для строк так что должно работать.
« Последнее редактирование: 05.05.2009, 22:00:40 от DarkMaster13 »
Копать отсюда и до обеда
*

DarkMaster13

  • Захожу иногда
  • 77
  • 12 / 0
Так продолжаем :) Не совсем блоки вышли но приемлемо.
получим примерно такое

Белый 1 2 3 4
Голубой 5 6 7 Серый 8
Черный 1 2 3

Сделал так: правим shop.browse.php Добавим в начало $products[$i]['id'] = $db_browse->f('product_id');
Код
$products[$i]['id'] = $db_browse->f('product_id');
$products[$i]['product_name'] = shopMakeHtmlSafe( $product_name );
$products[$i]['product_s_desc'] = $product_s_desc;
$products[$i]['product_details'] = $product_details;
$products[$i]['product_rating'] = $product_rating;
$products[$i]['product_price'] = $product_price;
$products[$i]['product_price_raw'] = $product_price_raw;
$products[$i]['product_sku'] = $db_browse->f("product_sku");
$products[$i]['product_weight'] = $db_browse->f("product_weight");
$products[$i]['product_weight_uom'] = $db_browse->f("product_weight_uom");
$products[$i]['product_length'] = $db_browse->f("product_length");
$products[$i]['product_width'] = $db_browse->f("product_width");
$products[$i]['product_height'] = $db_browse->f("product_height");
$products[$i]['product_lwh_uom'] = $db_browse->f("product_lwh_uom");
$products[$i]['product_in_stock'] = $db_browse->f("product_in_stock");
$products[$i]['product_available_date'] = $VM_LANG->convert( vmFormatDate($db_browse->f("product_available_date"), $VM_LANG->_('DATE_FORMAT_LC') ));
$products[$i]['product_availability'] = $db_browse->f("product_availability");
$products[$i]['cdate'] = $VM_LANG->convert( vmFormatDate($db_browse->f("cdate"), $VM_LANG->_('DATE_FORMAT_LC') ));
$products[$i]['mdate'] = $VM_LANG->convert( vmFormatDate($db_browse->f("mdate"), $VM_LANG->_('DATE_FORMAT_LC') ));
$products[$i]['product_url'] = $db_browse->f("product_url");
добавляем такой код
Код
$test=$product_type_param; // Дополнительная перемення для проверки
$cursortfd=$_REQUEST['orderby']; // Получаем параметр по которому происходит сортировка
if ($cursortfd=="") $cursortfd="nvsh_model"; // Если сортировки нет устанавливаем сами тот который по умолчанию
$query1="SELECT `product_id`,".$cursortfd; // Запрос к базе отбираем значение нужного параметра
$query1.="\n FROM `#__{vm}_product_type_1`";
$query1.="\n WHERE product_id=".$products[$i]['id'];
$db = new ps_DB;
$db->query( $query1);
$myres = $db->record;
foreach ($myres as $param1){
$product_type_param=$param1->$cursortfd;
}
if ($test<>$product_type_param) // Проверяем если значение раньше не выводилось то выводим его
$products[$i]['product_type_param'] = $product_type_param;
else $products[$i]['product_type_param']="<p>&nbsp;</p>";// Если значение уже выводилось вставляем абзац а то иначе будет неровная таблица
Правим browse_N.php так как у меня выводится по 4-ре товара вв строке то я правил browse_4.php
Перед
Код
<h2>
    <a style="font-size: 16px; font-weight: bold;" href="<?php echo $product_flypage ?>"><?php echo $product_name ?></a>
  </h2>
вставляем
Код
<h1>
     <?php echo $product_type_param;?>
 </h1>
Пользуйтесь ... Найдете баг пишите.
« Последнее редактирование: 10.05.2009, 19:05:41 от DarkMaster13 »
Копать отсюда и до обеда
*

DarkMaster13

  • Захожу иногда
  • 77
  • 12 / 0
Нашел глюк. Если выводится несколько страниц теряется значение переменной $orderby устраняем так:
находим в shop.browse.php // Prepare Page Navigation и дописываем
$search_string .= empty($orderby) ? '' : '&amp;orderby='.$orderby;
Код
$search_string = $mm_action_url."index.php?option=com_virtuemart&amp;Itemid=$Itemid&amp;category_id=$category_id&amp;page=$modulename.browse";
$search_string .= empty($manufacturer_id) ? '' : "&amp;manufacturer_id=$manufacturer_id";
$search_string .= empty($keyword) ? '' : '&amp;keyword='.urlencode( $keyword );
$search_string .= empty($orderby) ? '' : '&amp;orderby='.$orderby;
Копать отсюда и до обеда
*

Sqvall

  • Захожу иногда
  • 95
  • 2 / 0
Доброго дня. Думаю что у меня похожая задача, сделать вместо стартовой страницы VirtueMart 1.1.3 где расположены фотографии главных групп, создать просто выборки в ячейках где выбираешь сначало Главную группу, далее в след ячейке все что относилось к главной группе (тоесть подгруппа), далее в след ячейке уже выбираю все товары относящиеся к этой подгруппе. Есть ли готовое решение данному вопросу?
*

DarkMaster13

  • Захожу иногда
  • 77
  • 12 / 0
Доброго! Готового нет. Я правлю код магазина в зависимомсти от потребностей. Если есть вопросы то связатся можно так: http://www.coder.cv.ua/index.php?option=com_content&view=article&id=3&Itemid=9
Копать отсюда и до обеда
*

Webprohozhiy

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Цитировать
Правим browse_N.php так как у меня выводится по 4-ре товара вв строке то я правил browse_4.php .....

А что вставлять в browse_listtable.tpl.php для отображения типа в таблице?
*

Master of Magic

  • Осваиваюсь на форуме
  • 39
  • 2 / 0
Не, не работает. Поменял shop_browse_queries.php и browse_orderbyfields.tpl.php
В фильтре выпадающий список (browse_orderbyfields.tpl.php) формируется правильно, появились все параметры.
Но при выборе любого из параметров - товаров нет. Всякие разные эксперименты в hop_browse_queries резульатов не дали, кто подскажет где копать? vm 1.1.7
Вот наткнулся на такой фильтр:
http://allancer.com/free-stuff/allancer-virtuemart-advanced-search
« Последнее редактирование: 08.06.2011, 17:54:45 от Master of Magic »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Сравнения товара в VM 1.1.X

Автор Bear

Ответов: 464
Просмотров: 67785
Последний ответ 17.06.2016, 10:44:50
от uralmas
[Решено] Невидимая регистрация ( Покупка без регистрации ) V1.1.3

Автор urodoff

Ответов: 319
Просмотров: 98987
Последний ответ 27.10.2014, 15:27:02
от gaalferov
[Решено] Отобразить кол-во товаров из всех подкатегорий V1.1.3

Автор bazic

Ответов: 19
Просмотров: 11039
Последний ответ 18.09.2014, 06:39:33
от fila61
вывод категории и её подкатегорий на одной странице

Автор sega

Ответов: 44
Просмотров: 12299
Последний ответ 30.04.2014, 14:05:45
от ИринаМ
[Решено] Добавление Watermark к фото товара V1.0.15 V1.1.3

Автор mickymouse

Ответов: 52
Просмотров: 19069
Последний ответ 13.06.2013, 01:04:46
от richman