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

BenderRdrigues

  • Захожу иногда
  • 56
  • 0 / 0
Привет ребята (VM 2.6.6).
Такая задачка:
- Две группы пользователей (зареганые и нет)
- Две цены для одной группы и второй.

Как сделать так чтобы выводились обе цены?

Сейчас выводится одна цена, после входа на сайт - другая. !
*

Kirill Esaulov

  • Новичок
  • 1
  • 0 / 0
Всем добрый день. Тоже интересует данный вопрос, только мне нужно немного не так. Нужны 2 цены, розничная и оптовая. Розничные покупатели должны видеть только розницу, а оптовики - оптовую и розничную цены.
Можно ли это реализовать в VirtueMart 3?
*

neGODnic

  • Захожу иногда
  • 140
  • 4 / 0
И у меня такой же вопрос для VM3. Уже весь инет перекапал и горы форумов.
Нашел что можно группе покупателей ОПТОВИК насильно как-то через код, показывать цену покупателей розница. Но решение не работает.
Помогите!! Очень нужно!
Все цены выгружаются из 1с, в 3 группы. Розница для всех, Мелкий опт (для зареганных) и опт (в ручную).
Так вот задача чтобы каждая группа видела цены предыдущей. Розница только свои, мелкий опт - розницу и свои, опт - розницу, мелк опт и свои.
Так же подумываем ввести группу VIP.
Как решить этот вопрос? готов платно! может есть решения какие-нибудь?

Частичное решение в этой теме
http://joomlaforum.ru/index.php/topic,255385.msg1670715.html#msg1670715
« Последнее редактирование: 14.10.2016, 14:20:34 от neGODnic »
*

antonivanov

  • Новичок
  • 8
  • 0 / 0
А чо тут думать? Сначала создаете вручную группу пользователей в вм, потом у каждого товара можно задавать несколько типов цен, для каждой выбираете свою группу пользователей и все. Только еще надо будет в группе настроить вывод. Там все элементарно на самом деле, сам использую только штатные средства, даже в код не лазил.
*

galicin

  • Новичок
  • 3
  • 0 / 0
А чо тут думать? Сначала создаете вручную группу пользователей в вм, потом у каждого товара можно задавать несколько типов цен, для каждой выбираете свою группу пользователей и все. Только еще надо будет в группе настроить вывод. Там все элементарно на самом деле, сам использую только штатные средства, даже в код не лазил.
Вы бы сначала вопрос прочитали, а потом ответ писали...

И у меня такой же вопрос для VM3.
...........
Частичное решение в этой теме
http://joomlaforum.ru/index.php/topic,255385.msg1670715.html#msg1670715
Спасибо за подсказку.)) Немного доработал решение вывода всех цен для всех групп пользователей... (работает для любого количества групп)
............
Так вот задача чтобы каждая группа видела цены предыдущей. Розница только свои, мелкий опт - розницу и свои, опт - розницу, мелк опт и свои.
............
Готов помочь. Пишите в личку...
*

galicin

  • Новичок
  • 3
  • 0 / 0
И где решение? (если, конечно, готовы помочь)
Зачем? Можете здесь оставить ваше решение, никому не придется беспокоить вас по пустякам.
Выкладывать сырое решение сразу не хотел... немного доработал и протестил.. Теперь можно и выложить. )))
Сразу скажу, что хак основан на примере приведенном neGODnic здесь.

Идем в файл administrator/components/com_virtuemart/helpers/calculationh.php
в конце функции getProductPrices меняем строки
Код
		$this->productPrices = array_merge($prices,$this->productPrices);
return $this->productPrices;
}
на
Код
		$this->productPrices = array_merge($prices,$this->productPrices);
//добавляем модель для получения списка всех групп покупателей в массив  
$shopperModel = VmModel::getModel ('shoppergroup');
$shoppergroups = $shopperModel->getShopperGroups (TRUE, TRUE);
//обходим массив групп покупателей
foreach ($shoppergroups as $sh) {
 $this->_db->setQuery('SELECT * FROM #__virtuemart_product_prices  WHERE `virtuemart_product_id`="' . $product->virtuemart_product_id . '" AND `virtuemart_shoppergroup_id`=' .$sh->virtuemart_shoppergroup_id); //запрос цены для текущей группы
$row = $this->_db->loadAssoc();
if ($row) {
if (!empty($row['product_price'])) {
if ($sh->virtuemart_shoppergroup_id != $this->_shopperGroupId[0]) { //если покупатель не принадлежит данной группе массива
$this->productPrices["_wholesale shoppergroup-".$sh->virtuemart_shoppergroup_id]=$row['product_price']; //сохраняем в переменную
} else { //покупатель в текущей группе массива - цена не будет выводиться, чтобы избежать двойного показа одной и той же цены
$this->productPrices["_wholesale shoppergroup-".$sh->virtuemart_shoppergroup_id] = 0;
}
} else {
$app = Jfactory::getApplication();
$app->enqueueMessage('cost Price empty, if child, everything okey, this is just a dev note');
return false;
}
} else $this->productPrices["_wholesale shoppergroup-".$sh->virtuemart_shoppergroup_id] = 0; //если цена в карточке товара для группы отсутствует (без этого выводится ошибка)
}
return $this->productPrices;
}

в начале файла components/com_virtuemart/sublayouts/prices.php после строк
Код
defined ('_JEXEC') or die('Restricted access');
$product = $viewData['product'];
$currency = $viewData['currency'];
добавляем модель для получения списка всех групп покупателей
Код
$shopperModel = VmModel::getModel ('shoppergroup');
$shoppergroups = $shopperModel->getShopperGroups (TRUE, TRUE);
Затем, в этом же файле, в нужном месте добавляем строки
Код
	foreach ($shoppergroups as $sh) { //обходим полученный массив групп покупателей и выводим цену каждой группы(если она не равна нулю)
echo $currency->createPriceDiv ('_wholesale shoppergroup-'.$sh->virtuemart_shoppergroup_id, vmText::_('COM_VIRTUEMART_CART_PRICE').' '.$sh->shopper_group_name, $product->prices);
}
В выводе цен, заголовком цены используется языковая переменная COM_VIRTUEMART_CART_PRICE (Цена) совместно с названием группы в ВиртуеМарте.
Например, группа покупателей в ВМ называется "ОПТ", то заголовок цены будет выглядеть как "Цена ОПТ"
Так же используются классы Price_wholesale и shoppergroup-[id-группы] (shoppergroup-1, shoppergroup-2 и т.д.), что позволит гибко настроить стили отображения дополнительных цен.

Теперь для neGODnic решение этой задачи
............
Так вот задача чтобы каждая группа видела цены предыдущей. Розница только свои, мелкий опт - розницу и свои, опт - розницу, мелк опт и свои.
............
в изменениях файла administrator/components/com_virtuemart/helpers/calculationh.php, приведенных выше, в строке
Код
if ($sh->virtuemart_shoppergroup_id != $this->_shopperGroupId[0]) { //если покупатель не принадлежит данной группе массива
Меняем условие проверки с "неравно" (!=) на "меньше" (<) и получаем
Код
if ($sh->virtuemart_shoppergroup_id < $this->_shopperGroupId[0]) { //если покупатель принадлежит группе c id больше, чем id группы из массива массива
Важно:
id групп от гости до vip должны быть по возрастанию...
Иначе, если, к примеру, группа vip будет иметь id меньше чем у группы опт, то покупатели группы опт будут видеть цены группы vip. а покупатели группы vip не увидят цены группы опт...
« Последнее редактирование: 14.02.2017, 02:12:47 от galicin »
*

fsv

  • Moderator
  • 2665
  • 384 / 2
Хелперы хакать не надо. В переопределенных шаблонах работайте и (или) плагинами.
Веб-разработка: заказ. Только сложная и объемная разработка. Дорого.
*

galicin

  • Новичок
  • 3
  • 0 / 0
Это верно. Сначала и думал про написание плагина, но потом решил, что это лишняя трата времени. Из более 3х десятков магазинов, только на одном понадобилось такое решение. Да и хак только одного файла. Второй же - можно переопределить в шаблон...)))
А появится необходимость, тогда и будем думать о написании плагинчика...
*

VIPersone

  • Захожу иногда
  • 55
  • 2 / 0
Попробовал. В карточке товара в админке цены разные с учетом скидок, а выводятся во фронте одинаковые. В чем проблема?

Скажите, в ВМ3 возможно сделать так (выделил ):

« Последнее редактирование: 26.04.2017, 02:05:09 от VIPersone »
*

mishkadan

  • Новичок
  • 8
  • 1 / 0
Всем доброго времени суток. Нашел данное решение о выводе 2х цен, чему сильно рад. Но вот один нюанс:

Если цены для группы пользователя равна нулю, то она не отображается, а вот подпись, т.е. название цены -
 вот это "vmText::_('COM_VIRTUEMART_CART_PRICE').' '.$sh->shopper_group_name" отображается для всех групп пользователей даже при нулевой цене. Через классы Price_wholesale и shoppergroup-[id-группы] (shoppergroup-1, shoppergroup-2 и т.д.) удалось скрыть отображение ненужных групп, но вот одна так и осталась даже если цены нет для данной карточки товара.

Выходит что на сайте 2 цены:

1 просто цена
2 цена с учетом установки оборудования

так вот даже если цена установки оборудования не указана, то надпись "Цена с установкой (vmText::_('COM_VIRTUEMART_CART_PRICE').' '.$sh->shopper_group_name)" присутствует всегда.

Может кто подскажет как это исправить, а то не силен я в этом пока... учусь.
*

mishkadan

  • Новичок
  • 8
  • 1 / 0
Вопрос не актуален, разобрался. Если кому интересно, то вот решение (вставляем в нужном месте в components/com_virtuemart/sublayouts/prices.php )
Код
foreach ($shoppergroups as $sh) { //обходим полученный массив групп покупателей и выводим цену каждой группы(если она не равна нулю)
            if($product->prices["_wholesale shoppergroup-3"] > 0){ // "-3" - указываю группу покупателей из которой надпись "цена с установкой" не будет отображаться если цена не задана
echo $currency->createPriceDiv ('_wholesale shoppergroup-'.$sh->virtuemart_shoppergroup_id, vmText::_('COM_VIRTUEMART_CART_PRICE_S_USTANOVKOI'), $product->prices);
}
}
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывод настраиваемых полей в категории

Автор gm35

Ответов: 5
Просмотров: 377
Последний ответ 14.08.2020, 21:20:24
от vladimirpetrovich
Вывод наименование - настраиваемых полей?

Автор warlocksp

Ответов: 7
Просмотров: 158
Последний ответ 21.07.2020, 15:30:27
от sivers
Вывод товаров из под категории

Автор gm35

Ответов: 1
Просмотров: 108
Последний ответ 28.04.2020, 04:13:14
от gm35
[Решено] Вывод других товаров тойже категории в карточке товара

Автор x-render

Ответов: 30
Просмотров: 5652
Последний ответ 06.01.2020, 07:39:31
от Igoritaly
Есть ли способ вывести цены двух групп покупателей сразу?

Автор Socrat

Ответов: 0
Просмотров: 216
Последний ответ 20.03.2019, 08:57:28
от Socrat