Форум русской поддержки Joomla!® CMS
10.12.2016, 05:13:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1] 2  Все   Вниз
  Добавить закладку  |  Печать  
Автор

mod_virtuemart_product - как скрыть товары, которых нет в наличии?

 (Прочитано 808 раз)
0 Пользователей и 1 Гость смотрят эту тему.
alexfom_16
Давно я тут
****

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

Сообщений: 257


« : 25.01.2016, 23:15:39 »

Здравствуйте!
Суть вопроса в названии темы.
Как-то не хорошо выводить товары в модуле, которых нет в наличии.
Скрыть товары, которых нет в наличии, у меня получилось, только вот количество товаров при этом тоже уменьшается на то количество, на которое нет в наличии, а нужно чтобы оставалось то количество, которое указано в настройках модуля.
Помогите, пожалуйста, решить этот вопрос.
Спасибо!
Записан
Liss
Давно я тут
****

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

Сообщений: 207


« Ответ #1 : 26.01.2016, 22:17:18 »

Стандартным модулем, боюсь, это не решить. Модуль запрашивает список товаров через функцию getProductListing. Можно передать запрос (и получить в ответ) только на след. данные $group, $nbrReturnProducts, $withCalc, $onlyPublished, $single, $filterCategory, $category_id

$group - группа товаров (новинки, рекомендуемые и т.д - см. в настройках модуля)
$nbrReturnProducts - кол-во товаров для вывода
$withCalc - показывать ли цену
$onlyPublished - только опубликованные (этого даже в настройках нет, в коде модуля явно прописано true)
$single - единичный (? но в коде прописано false)
$filterCategory - использовать ли фильтр категорий
$category_id - ID категории для фильтра

все. больше туда ничего не передать, т.е. узнать кол-во на складе через запрос к функции getProductListing невозможно. Писать прямой запрос в базу тоже не вариант, т.к. функция вернет, предположим, 10 товаров, ты проверишь их остатки уже постфактум, и останется, например, 8 товаров. Ковырять саму функцию getProductListing в модели типа "продукт", чтобы проверять на остатки нельзя, в других местах товары с нулевым остатком тоже могут пропасть (это ведь глобальная функция VM, а не только для модуля).

Рекомендую тут на форуме найти альтернативный mod_virtuemart_randcatproduct, в нем есть настройка "наличие товара на складе показывать / не показывать". Этот модуль не обращается к глобальной функции, в нем самом прописаны все необходимые запросы к БД

Записан
robert
Профи
********

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

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


« Ответ #2 : 26.01.2016, 22:32:12 »

все. больше туда ничего не передать, т.е. узнать кол-во на складе через запрос к функции getProductListing невозможно.
Фу, сколько букафф.
Можно, передав $onlyPublished===false.
В шаблоне модуля найдите переменную количества товаров, допустим, это $totalProd. Тогда, перед кодом вывода количества товаров вставьте
Код
$all_products=$productModel->getProductListing($Product_group,$max_items,$show_price,false,false,$filter_category,$category_id);
$totalProd=count($all_products);
 
Записан
Liss
Давно я тут
****

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

Сообщений: 207


« Ответ #3 : 26.01.2016, 22:46:34 »

$all_products=$productModel->getProductListing($Product_group,$max_items,$show_price,false,false,$filter_category,$category_id);
он получил список из 10 товаров

$totalProd=count($all_products);
и постфактум скрыл позиции с нулевым остатком, осталось 8

а суть вопроса то "только вот количество товаров при этом тоже уменьшается на то количество, на которое нет в наличии" - нужно 10, уже за вычетом нулевых
Записан
robert
Профи
********

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

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


« Ответ #4 : 26.01.2016, 22:54:38 »

Liss, я понимаю ваш энтузиазм - сам был таким. Но вы посмотрели функцию getProductListing()? Особенно когда 4-й аргумент===false?
Записан
alexfom_16
Давно я тут
****

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

Сообщений: 257


« Ответ #5 : 26.01.2016, 22:56:48 »

Не получается использовать этот код, может не туда вставлял
Код:
$all_products=$productModel->getProductListing($Product_group,$max_items,$show_price,false,false,$filter_category,$category_id);
$totalProd=count($all_products);

Выкладываю файлы может они как-то помогут
файл mod_virtuemart_product.php
Показать текстовый блок

Код шаблона default.php
Показать текстовый блок
Спасибо!
Записан
Liss
Давно я тут
****

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

Сообщений: 207


« Ответ #6 : 26.01.2016, 22:58:09 »

мне уже самому стало интересно  Smiley, как связана переменная "товар опубликован" со значением остатков на складе?
Записан
robert
Профи
********

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

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


« Ответ #7 : 26.01.2016, 23:03:22 »

Скрыть товары, которых нет в наличии, у меня получилось, только вот количество товаров при этом тоже уменьшается на то количество, на которое нет в наличии
Нет? Или я что-то не допонимаю?
Записан
alexfom_16
Давно я тут
****

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

Сообщений: 257


« Ответ #8 : 26.01.2016, 23:13:12 »

Я их скрыл сделав так:
Показать текстовый блок

Это наверное не совсем правильно
Записан
robert
Профи
********

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

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


« Ответ #9 : 26.01.2016, 23:15:01 »

Код шаблона default.php
Давно не работал с VM, что-то не вижу, где у вас выводится количество товаров. Может быть, default.php переопределен в шаблоне сайта?
Записан
alexfom_16
Давно я тут
****

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

Сообщений: 257


« Ответ #10 : 26.01.2016, 23:21:45 »

Давно не работал с VM, что-то не вижу, где у вас выводится количество товаров. Может быть, default.php переопределен в шаблоне сайта?
Нет не переопределен.
В предыдущем сообщении я привел часть кода, который поместил в
Код:
<?php if (!empty($product->product_in_stock)) { ?>
<?php } ?>
чтобы скрыть блок с товаром у которых количество 0

А весь код приведен в сообщении http://joomlaforum.ru/index.php/topic,323484.msg1618015.html#msg1618015
Записан
robert
Профи
********

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

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


« Ответ #11 : 26.01.2016, 23:24:41 »

А как и в каком месте у вас выводится
количество товаров при этом тоже уменьшается на то количество, на которое нет в наличии
? Может быть, ссылка на сайт?
Записан
alexfom_16
Давно я тут
****

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

Сообщений: 257


« Ответ #12 : 26.01.2016, 23:33:35 »

Ссылку сбросил в личку
Записан
robert
Профи
********

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

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


« Ответ #13 : 27.01.2016, 00:13:31 »

Не вижу
количество товаров, которое уменьшается на то количество, на которое нет в наличии
Записан
alexfom_16
Давно я тут
****

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

Сообщений: 257


« Ответ #14 : 27.01.2016, 00:15:29 »

Да, я сейчас убрал код
 
Код:
<?php if (!empty($product->product_in_stock)) { ?>
<?php } ?>

Сейчас сделаю
Записан
alexfom_16
Давно я тут
****

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

Сообщений: 257


« Ответ #15 : 27.01.2016, 00:16:59 »

Сейчас скрыл товары которых нет в наличии
Записан
alexfom_16
Давно я тут
****

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

Сообщений: 257


« Ответ #16 : 27.01.2016, 00:18:24 »

Из 6 товаров осталось только 4
Записан
robert
Профи
********

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

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


« Ответ #17 : 27.01.2016, 00:18:51 »

Где можно увидеть количество?
А, то есть было 6, стало 4 - это и есть уменьшение количества?
Бл..., было 6, вы убрали 2, и хотите, чтобы в итоге все равно осталось 6?
Может быть, на самом деле вы хотите просто скрыть надпись "Нет в наличии"?
« Последнее редактирование: 27.01.2016, 00:24:14 от robert » Записан
alexfom_16
Давно я тут
****

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

Сообщений: 257


« Ответ #18 : 27.01.2016, 00:23:13 »

На главной странице "лидеры продаж", сейчас 4 товара, которые есть в наличии, 2 скрылись
Количество выводимых товаров я задаю в настройках модуля в админке стоит 6шт
Записан
alexfom_16
Давно я тут
****

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

Сообщений: 257


« Ответ #19 : 27.01.2016, 00:24:35 »

Бл..., было 6, вы убрали 2, и хотите, чтобы в итоге все равно осталось 6?
Да
Записан
robert
Профи
********

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

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


« Ответ #20 : 27.01.2016, 00:28:10 »

Ппц, наконец-то понял. Сейчас посмотрю.
Записан
robert
Профи
********

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

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


« Ответ #21 : 27.01.2016, 00:40:43 »

Админка VM->Configuration->Shopfront->Action when a Product is Out of Stock-> Do not Display Product - отметить.
Не знаю, как переводили на русский.
Записан
alexfom_16
Давно я тут
****

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

Сообщений: 257


« Ответ #22 : 27.01.2016, 00:46:58 »

Я знаю про эту функцию, она скрывает товары на всем сайте, которых нет в наличии, а мне нужно только в модуле.
Записан
robert
Профи
********

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

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


« Ответ #23 : 27.01.2016, 00:51:26 »

Тогда только прямой запрос в БД.
P.S. Кстати
мне уже самому стало интересно  Smiley, как связана переменная "товар опубликован" со значением остатков на складе?
да, был не прав.
« Последнее редактирование: 27.01.2016, 00:54:56 от robert » Записан
alexfom_16
Давно я тут
****

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

Сообщений: 257


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

Тогда только прямой запрос в БД.
Не подскажите, как это сделать?
Записан
robert
Профи
********

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

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


« Ответ #25 : 27.01.2016, 01:27:28 »

Попробуйте вместо
Показать текстовый блок
вот это
Показать текстовый блок
Не проверял, но должно сработать.
Записан
alexfom_16
Давно я тут
****

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

Сообщений: 257


« Ответ #26 : 27.01.2016, 01:33:38 »

Весь модуль пропал
Записан
robert
Профи
********

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

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


« Ответ #27 : 27.01.2016, 01:51:37 »

А так
Показать текстовый блок
?
« Последнее редактирование: 27.01.2016, 02:25:34 от robert » Записан
alexfom_16
Давно я тут
****

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

Сообщений: 257


« Ответ #28 : 27.01.2016, 01:53:42 »

Так же
Записан
robert
Профи
********

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

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


« Ответ #29 : 27.01.2016, 01:57:56 »

Изменил.
Записан
Страниц: [1] 2  Все   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | 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