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

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

Вывод двух цен для двух групп пользователей?

 (Прочитано 641 раз)
0 Пользователей и 1 Гость смотрят эту тему.
BenderRdrigues
Осваиваюсь на форуме
***

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

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



« : 17.06.2014, 17:24:38 »

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

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

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

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

Сообщений: 1


« Ответ #1 : 22.05.2015, 17:05:44 »

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

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

Сообщений: 140


« Ответ #2 : 13.10.2016, 19:08:41 »

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

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

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

Сообщений: 8


« Ответ #3 : 07.01.2017, 04:31:32 »

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

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

Сообщений: 3


« Ответ #4 : 13.02.2017, 05:57:57 »

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

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

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

Сообщений: 3


« Ответ #5 : 14.02.2017, 00:46:47 »

И где решение? (если, конечно, готовы помочь)
Зачем? Можете здесь оставить ваше решение, никому не придется беспокоить вас по пустякам.
Выкладывать сырое решение сразу не хотел... немного доработал и протестил.. Теперь можно и выложить. )))
Сразу скажу, что хак основан на примере приведенном 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, 03:12:47 от galicin » Записан
fsv
Moderator
*****

Репутация: +367/-2
Offline Offline

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


« Ответ #6 : 14.02.2017, 03:18:26 »

Хелперы хакать не надо. В переопределенных шаблонах работайте и (или) плагинами.
Записан
galicin
Новичок
*

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

Сообщений: 3


« Ответ #7 : 14.02.2017, 07:17:40 »

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

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

Сообщений: 56


« Ответ #8 : 24.04.2017, 04:17:42 »

Попробовал. В карточке товара в админке цены разные с учетом скидок, а выводятся во фронте одинаковые. В чем проблема?

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

« Последнее редактирование: 26.04.2017, 03:05:09 от VIPersone » Записан
mishkadan
Новичок
*

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

Сообщений: 8


« Ответ #9 : 17.05.2017, 21:53:56 »

Всем доброго времени суток. Нашел данное решение о выводе 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
Новичок
*

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

Сообщений: 8


« Ответ #10 : 20.05.2017, 10:45:47 »

Вопрос не актуален, разобрался. Если кому интересно, то вот решение (вставляем в нужном месте в 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);
}
}
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

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