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

anddm2001

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
 Добрый день, уважаемые форумчане!

Использую модуль mod_jshopping_filters вместе с JSH 4.6.0 все это на Joomla 3.3

Фильтр по характеристикам товара и по ценовому диапазону.

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

Как это сделано здесь (но тут не JSH, а VW) http://kursklimat.ru/products?page=shop.browse&category_id=11&vmcchk=1

В стандартных настройках модуля mod_jshopping_filters такой опции не нашел. Можно ли изменить это в коде модуля? И насколько трудоемко данное решение?



*

pvi1

  • Давно я тут
  • 566
  • 16 / 2
В коммерческом разделе есть такие фильтры
*

anddm2001

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Да это понятно, только деньги на это в проекте не выделены, да и самому хотелось бы понять принцип.

На собственный коммерческий проект не претендую, но буду излагать суть решения, как я понимаю.

Поэтапно, итак на сегодняшний момент в голове сформулировалась идея сначала вытащить id атрибутов характеристики, по каждому из которых будет считаться кол-во товара.

С помощью следующего sql-запроса это несложно реализовать:

SELECT  `id` AS  'brand_id'
FROM  `#_jshopping_products_extra_field_values`
WHERE  `field_id` =5

В консоли sql запросов отрабатывает хорошо и выводит в результирующую таблицу столбец с названием brand_id

Далее есть второй sql-запрос который суммирует кол-во товаров, у которых есть соответствующий атрибут характеристики, исключая при этом неопубликованные товары.

Текст запроса:

SELECT SUM(product_quantity)
FROM `vmuag_jshopping_products`
WHERE `extra_field_5`=30 AND `product_publish`=1

Запрос также отрабатывает нормально, и возвращает результат- сумму.

Теперь задача объединить эти два запроса, чтобы в WHERE `extra_field_5`= второго запроса, подставлять значения из первой результирующей таблицы, надо перебрать их все.

Некоторые соображения на этот счет:

1) Результат первого запроса вывести в php массив, а затем с помощью forearch перебирать элементы этого массива и подставлять переменную в WHERE `extra_field_5`= ... на счет этого способа- смущает, то, что в цикле будет постоянно отправляться запрос к базе sql.

2) Другая идея- не хранить значения первого запроса в массиве php, а сохранить их в результирующей таблице и привязать к ней с помощью JOIN второй столбец в котором будет количество товара по каждой характеристике.

3) Еще вариант создать новую таблицу, которая будет постоянно хранить эти значения в базе и просто выводить из нее количество по id

А теперь вопрос, к знатокам Joomla, какое решение предпочтительнее? Стоит ли использовать один большой запрос к базе или несколько запросов поменьше? И как оптимальнее организовать хранение информации, которая выбирается из базы?

Буду благодарен за любые советы и конструктивную критику.

*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
SELECT SUM(product_quantity), extra_field_5
FROM `vmuag_jshopping_products`
WHERE product_publish`=1
GROUP BY extra_field_5
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

anddm2001

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Спасибо, вывело таблицу из двух столбцов, в одном из них сумма.

С sql запросами теперь все понятно, а вот все таки как лучше обойтись с результатами- выгрузить в массив? Или каждый раз запросом рассчитывать эту таблицу и вытаскивать из нее?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
что такое "каждый раз"? вы в массив и выгрузите ее. вопрос - сколько времени будет этот массив актуальным. если в то время, пока вы фильтруете товары (вам показывается количество 25 например) другой пользователь покупает этот товар, то после его покупки вам же должно быть показано уже 24 ? вот и исходите из этого. сколько товаров, сколько времени тратится на такой запрос, какая итого получается нагрузка на сервер, и так далее.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

anddm2001

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Спасибо за советы!

Сейчас оформился следующий код: я вытаскиваю запросом таблицу в массив, затем перебираю массив двумя циклами и вывожу в столбик его содержимое:

Код
<?
define('_JEXEC', 1);
define('JPATH_BASE', dirname(__FILE__)); //файл лежит в корне, иначе меняйте пути
define('DS', DIRECTORY_SEPARATOR);
header('Content-Type: text/html; charset=utf-8');
 
require_once(JPATH_BASE . DS . 'includes' . DS . 'defines.php');
require_once(JPATH_BASE . DS . 'includes' . DS . 'framework.php');
jimport('joomla.database.table');
 
$app = JFactory::getApplication('administrator'); //для фронта site
$app->initialise();

$countProds=0;

$db = &JFactory::getDBO();
$dbquery = "SELECT SUM( product_quantity ) AS  `quantity` , extra_field_5
            FROM  `vmuag_jshopping_products`
            WHERE  `product_publish` =1
            GROUP BY  `extra_field_5` ";

$db->setQuery($dbquery);
$countProd = $db->loadAssocList();

$var = var_dump($countProd);

echo $var;

foreach ($countProd as $count) {

    echo '<dl style="margin-bottom: 1em;">';


  foreach ($count as $key => $value ) {

    echo "<dd>$value</dd>";
  }
 

  echo '</dl>';

}
?>
Теперь наитупейший вопрос к тем, кто может помочь (идея не приходит в голову): как вывести эти суммы товаров рядом с конкретной характеристикой (тут они у меня заведены по id)?

Идея такая же, как и в самом начале- получить фильтр, где рядом с характеристикой- выводиться кол-во товара, у которого она указана.

Буду благодарен за любую наводящую инфу, как говориться много голов, лучше, чем одна)))
« Последнее редактирование: 02.02.2015, 11:38:18 от anddm2001 »
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Думаю, что никакой особой идеи нет: нужно лишь связывать результаты с характеристиками - id и(или) название, связь которых между собой должна быть в какой-то таблице. После этого сравнить значение характеристики с тем, что на сайте, и если совпадают, то поставить результат рядом.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

anddm2001

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
т.е., если я вас правильно понял- нужен еще один запрос к бд, чтобы вытащить связку id характеристики - ее навзвание, затем загрузить это дело в массив, и затем уже организовывать сравнение?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Нет, еще один запрос не нужен, делайте это в первом же запросе.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

anddm2001

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
такс... по сути это данные из разных таблиц - их просто склеить через JOIN? Столбец id уже есть, мне просто нужно к нему приклеить столбец с названием характеристики?
*

anddm2001

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Вот такой запрос вытаскивает из базы все что нужно- и имена характеристик и сумму по ним и id:

Спойлер
[свернуть]

Весь код теперь выглядит так:
Спойлер
[свернуть]

Сейчас после выполнения запроса, я гружу результат в массив, затем перебираю его, для отладки на данном этапе использую var_dump, чтобы видеть, что внутри массива.

Сейчас работаю над следующим этапом: вывести из массива названия характеристик и рядом с ними кол-во товара по ним в скобках. Пока мысли такие: оформить код в виде функции и вызывать ее там, где вызывается, понравилось как это выглядит в модуле для VirtueMart mod_vm_cherry_picker, пытаюсь разобраться в коде, понятно, что структура таблиц бд и соответственно запросов к ним у VirtueMart и у jsh разная.

Есть у кого-нибудь идеи, как это вывести без лишних нагромождений в коде, чтобы не тормозило?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вместо названия товара - код названия товара, span и т.п

Автор Besa

Ответов: 1
Просмотров: 927
Последний ответ 10.03.2023, 12:57:59
от kit2m2
Кастомные поля у товара при заказе?

Автор psiworm

Ответов: 2
Просмотров: 1223
Последний ответ 15.02.2022, 01:18:30
от psiworm
Все товары этого продавца (вендора) в карточке товара?

Автор shop-user

Ответов: 5
Просмотров: 1394
Последний ответ 14.05.2021, 14:18:30
от nevigen
Проблема с подсчетом скидки товара

Автор sashahz

Ответов: 4
Просмотров: 651
Последний ответ 07.06.2020, 13:17:06
от sashahz
Описание доставки в карточке товара

Автор nichtraucher

Ответов: 1
Просмотров: 711
Последний ответ 05.12.2018, 12:28:06
от nevigen