Новости Joomla

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

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Здравствуйте.

Если вы не хотите показывать товары в каталогах при обнаружении у них нулевой либо отрицательной цены определенного типа(для определенной группы покупателей), то можно создать следующие триггеры, которые соответственно после операций обновления, добавления, удаления цен для товара подсчитывают значение цены определенного рода(для определенной группы покупателей) и снимают товар с публикации либо возвращают его к публикации, если цена положительная.
Для этого надо например в phpMyAdmin исполнить следующий SQL:
Код
DELIMITER ;
USE имя_вашей_БД;
DROP TRIGGER IF EXISTS имя_вашей_БД.`after_update_price`;
DELIMITER $$
CREATE
DEFINER = CURRENT_USER
TRIGGER имя_вашей_БД.after_update_price
AFTER UPDATE
ON antilopa.ytgb1_virtuemart_product_prices
FOR EACH ROW
BEGIN
  SET @total_retail_price = 0;
  SET @id = NEW.virtuemart_product_id;
  SET @total_retail_price = IFNULL((SELECT
    SUM(IFNULL(product_price, 0))
  FROM `ytgb1_virtuemart_product_prices`
  WHERE virtuemart_product_id = @id AND virtuemart_shoppergroup_id = 0),0);
  IF @total_retail_price <= 0 THEN
    UPDATE ytgb1_virtuemart_products
    SET published = 0
    WHERE virtuemart_product_id = NEW.virtuemart_product_id;
  ELSEIF @total_retail_price > 0 THEN
    UPDATE ytgb1_virtuemart_products
    SET published = 1
    WHERE virtuemart_product_id = NEW.virtuemart_product_id;
  END IF;
END
$$

DROP TRIGGER IF EXISTS имя_вашей_БД.`after_insert_price`
$$
CREATE
DEFINER = CURRENT_USER
TRIGGER имя_вашей_БД.after_insert_price
AFTER INSERT
ON имя_вашей_БД.ytgb1_virtuemart_product_prices
FOR EACH ROW
BEGIN
  SET @total_retail_price = 0;
  SET @id = NEW.virtuemart_product_id;
  SET @total_retail_price = IFNULL((SELECT
    SUM(IFNULL(product_price, 0))
  FROM `ytgb1_virtuemart_product_prices`
  WHERE virtuemart_product_id = @id AND virtuemart_shoppergroup_id = 0),0);
  IF @total_retail_price <= 0 THEN
    UPDATE ytgb1_virtuemart_products
    SET published = 0
    WHERE virtuemart_product_id = NEW.virtuemart_product_id;
  ELSEIF @total_retail_price > 0 THEN
    UPDATE ytgb1_virtuemart_products
    SET published = 1
    WHERE virtuemart_product_id = NEW.virtuemart_product_id;
  END IF;
END
$$


DROP TRIGGER IF EXISTS имя_вашей_БД.`after_delete_price`
$$
CREATE
DEFINER = CURRENT_USER
TRIGGER имя_вашей_БД.after_delete_price
AFTER DELETE
ON antilopa.ytgb1_virtuemart_product_prices
FOR EACH ROW
BEGIN
  SET @total_retail_price = 0;
  SET @id = OLD.virtuemart_product_id;
  SET @total_retail_price = IFNULL((SELECT
    SUM(IFNULL(product_price, 0))
  FROM `ytgb1_virtuemart_product_prices`
  WHERE virtuemart_product_id = @id AND virtuemart_shoppergroup_id = 0),0);
  IF @total_retail_price <= 0 THEN
    UPDATE ytgb1_virtuemart_products
    SET published = 0
    WHERE virtuemart_product_id = OLD.virtuemart_product_id;
  ELSEIF @total_retail_price > 0 THEN
    UPDATE ytgb1_virtuemart_products
    SET published = 1
    WHERE virtuemart_product_id = OLD.virtuemart_product_id;
  END IF;
END
$$
DELIMITER ;
Создавалось под VM 2.0.18a
Будьте внимательны, заменяя имя_вашей_БД на свою, префиксы таблиц (ytgb1_) на используемые у вас, а также указывая свой virtuemart_shoppergroup_id в условиях SELECT'a
« Последнее редактирование: 09.06.2014, 16:41:12 от borro »
*

jumlancerCom

  • Захожу иногда
  • 52
  • 2 / 1
Затем так сложно, можно же просто в шаблон category/default.php наприме сразу после
Код: php
// Start the Output
foreach ($this->products as $product) {
добавить условие типа
Код: php
if($product->prices['salesPrice'] > 0) {
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Затем так сложно, можно же просто в шаблон category/default.php например сразу после
Код: php
// Start the Output
foreach ($this->products as $product) {
добавить условие типа
Код: php
if($product->prices['salesPrice'] > 0) {
Да, решение пожалуй по-проще, надо также будет скрыть товары из появления в модулях(новинки, рекомендуемые,...). Правда остается еще вопрос - не останутся ли поисковикам видны ссылки на детальные представления товаров, у которых пустые(нулевые цены). Похоже все-таки надо снимать их с публикации, если не хотите их показывать совсем.
« Последнее редактирование: 28.05.2014, 09:40:05 от borro »
*

jumlancerCom

  • Захожу иногда
  • 52
  • 2 / 1
borro, то что не выводится через рнр - не выводится вообще, аналогично снятию с публикации, не оставляя никаких хвостов
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как сделать товары в 2 колонки в моб версии?

Автор art22

Ответов: 4
Просмотров: 1140
Последний ответ 06.12.2022, 11:42:56
от art22
Как пересохранить все товары?

Автор stydent

Ответов: 1
Просмотров: 1776
Последний ответ 30.03.2022, 10:38:06
от itpremium
mod_virtuemart_product - как скрыть товары, которых нет в наличии?

Автор alexfom_16

Ответов: 40
Просмотров: 4456
Последний ответ 11.10.2021, 17:50:38
от hmr
Вывести товары из подкатегории в категорию

Автор xlite

Ответов: 78
Просмотров: 28299
Последний ответ 08.03.2021, 10:06:58
от kisBoss
Приоритетный Itemid для формирования ссылок на товары/категории

Автор rsn

Ответов: 2
Просмотров: 547
Последний ответ 10.03.2020, 08:21:45
от rsn