WeDiscountUserGroups. Модуль для создания скидок группам покупателей в OpenCart
Модуль позволяет устанавливать индивидуальные скидки группам покупателей.
Скидка может быть в процентах или же фиксированной.
Установка
- Скопировать файлы модуля в корень сайта (файлы ядра не модифицируются)
- В админке перейти в Дополнения -> Учитывать в заказе и установить модуль «Скидки группам покупателей»
- Нажать «изменить» в только что установленном модуле
- Включить его и выставить сортировку.
Использование
По адресу Модули -> Учитывать в заказе -> Скидки группам покупателей находится интерфейс управления скидками:
Каждая скидка привязывается к группе пользователей. Скидке можно выставить дату начала и дату конца активности. Можно, например, организовать «ночные» скидки.
Вывод скидки в карточке товара
Пишем небольшой Vqmod:
<modification> <id>wediscountusergroups_product</id> <version>1.0</version> <vqmver>1.0.8</vqmver> <author>OlegPro.ru</author> <file name="catalog/controller/product/product.php"> <operation> <search position="after" index="1"><![CDATA[ public function index() { ]]></search> <add> <![CDATA[ $this->load->model('checkout/wediscountusergroups'); $this->data['discount_info'] = $this->model_checkout_wediscountusergroups ->getDiscountByCustomerGroupId($this->customer->getCustomerGroupId()); ]]></add> </operation> </file> </modification>
Теперь в шаблоне карточки товара будет доступна переменная $discount_info. Если скидка есть для текущего пользователя, то это будет массив вида:
Array ( [id] => 5 [name] => Скидка 50% на всё [discount] => 50.0000 [type] => P [customer_group] => 1 [date_start] => 0000-00-00 00:00:00 [date_end] => 0000-00-00 00:00:00 [status] => 1 )
Если Vqmod не установлен, то прямо в шаблоне карточки товара вставляем:
$this->load->model('checkout/wediscountusergroups'); $discount_info = $this->model_checkout_wediscountusergroups ->getDiscountByCustomerGroupId($this->customer->getCustomerGroupId());
Модуль тестировал на версиях 1.5.1.3 и 1.5.5.1.1 OpenCart. Думаю, он должен работать и на более поздних версиях.
Ссылки
Репозиторий на гитхабе.
Скачать с OpenCart Форум.
53 комментария
Скачал. На ocStore 1.5.5.1.1. работает. Жму Вашу руку, спасибо
Rasskazhite podrobnee kak napisat nebolshej VqMod
kakoe imya u xtml fajla dolzhno bit?
ili vse ravno?
i kuda vstavlyat posle etogo vot eto? ili ono vijdet samo posle zagrizki vqmod na sajt?
Amin, vqmod создаете с любым названием, главное с расширением .xml. Положить его надо в папку /vqmod/xml/
Чтобы вставить в карточку товара, как в примере, надо хотя бы немного знать php.
Попробовал установить в mijoshop с opencart 1.5.5.1 не видно модуля в разделе модулях и в учитывать в заказе
Михаил, а что такое mijoshop? Первый раз слышу.
Это как бы сказать компонент joomla позволяющий использовать opencart в этой смс. Большинство дополнений opencat устанавливаются и работают без проблем
Михаил, а другие модули «Учитывать в заказе» пробовали устанавливать? У меня используется штатный механизм такого модуля, ничего не обычного.
Мне подходит именно Ваш модуль могу прислать модули установленные по умолчанию
Возможно ли последовательное применение 2 скидок для одной группы покупателей. Напимер скидка на сумму + скидка на группу
Михаил, вижу проблему с установкой на mijoshop решили?
Идея с применением нескольких скидок в одном модуле хороша. На текущий момент: если есть несколько скидок, то выбирается последняя добавленная. Подумаю на досуге.
Да могу прислать исправленный модуль (решил с помощью поддержки mijoshop)
почему то у меня модуль установился так, что дважды скидку считает. как исправить? http://vintagedream.ru/ скидка для зарег пользователей
Михаил, скиньте доступ в админку через обратную связь на этом сайте, посмотрю.
Для залогинившихся пользователей, состоящих в группе со скидкой, не отображается количество начисляемых баллов на странице товара.
Kс, чтобы вывести информацию о скидке на странице товара, нужно сделать по инструкции, написанной в этой заметке. Начиная с заголовка «Вывод скидки в карточке товара».
Информация о скидке отображается. Не отображается количество бонусных баллов, начисляемых за товар. При этом стоимость товара в баллах отображается нормально.
Kc, модуль реализован через штатный механизм учета в заказе.
Мне кажется бонусные балы тут никак не связаны.
Если расскажите по-подробнее или покажите как это должно работать что-нибудь придумаем.
Попробую как можно подробнее.
Сборка: ocStore 1.5.5.1.2, Дефолтный шаблон.
По умолчанию в карточке товара в блоке "description" (тот, что ниже названия товара, но выше цены) выводится следующая информация:Производитель, Модель, Бонусные баллы, Наличие.
Установил модуль, создал покупательскую учётку, создал новую группу покупателей, переместил эту учётку в новую группу, задал с помощью модуля скидку для этой группы, залогинился с этой учётки.
Вся вышеописанная информация на странице товара отображается, кроме количества баллов.
При этом, если добавлять скидку для дефолтной группы - вся информация отображается полностью.
Действительно, казалось бы, при чём здесь баллы, но, тем не менее, такой баг имеет быть.
Всё, разобрался. Прошу прощения за путаницу.
Баллы в товаре присваиваются для каждой группы отдельно.
Модуль работает отлично, спасибо.
подскажите как именно сделать что бы в карточке товара скидка тоже показывалась. а то при оформлении заказа она есть, а в карточке её нет.
Михаил, как вывести информацию о скидке написано выше в статье, после заголовка «Вывод скидки в карточке товара».
я это делал, значит у меня оно не работает. У меня Версия 1.5.5.1.2 может от этого зависеть?
Михаил, Ну раз при оформлении заказа работает, то версия OpenCart 1.5.5.1.2 не причем.
Проверяйте правильность кода по инструкции. Включите показ ошибок на сервере.
Добрый день. Попытался установить Ваш модуль но после попытки изменить в админке выдаёт ошибку: Notice: Error: Table 'testsaitocstore.wediscountusergroups' doesn't exist Error No: 1146 SELECT d.*, cg.
name
AS customer_group_name FROM wediscountusergroups AS d LEFT JOIN customer_group_description AS cg ON d.customer_group = cg.customer_group_id ORDER BY d.status
DESC, d.id DESC in Z:\home\testsaitocStore\www\system\database\mysql.php on line 50 Все файлы в корень сайта установлены верно, но видимо или чего-то не хватает или ошибка в запросе. Подскажите, пожалуйста, в чём может быть проблема?Виталий, добрый день! Эта ошибка говорит о том, что в базе данных нет таблицы модуля. Она должна создаваться при установке модуля.
Попробуйте руками выполнить этот sql запрос
Большое спасибо за подсказку и за быстрый ответ. Я было грешным делом подумал, что просто какого-то файла не хватает для создания таблицы и не догадался полностью просмотреть. А не создалась таблица потому что в запросе две ошибки. 1-я: имя таблицы 'wediscountusergroups' вместо
" . DB_PREFIX . "wediscountusergroups
(видимо просто ошибка при копировании, а так как в наименовании недопустимые ", то она и не создаётся), 2-я: для ключа KEY сначала надо указать тип индекса, а затем имя столбца, т. е. вместо KEYdate_end
(date_end
) USING BTREE надо KEYdate_end
USING BTREE (date_end
). Если это всё исправить, то всё работает. Спасибо.Виталий, приветствую!
" . DB_PREFIX . "wediscountusergroups тут конкатенация строк, приписывает префикс таблиц в базе данных. и на выходе будет oc_wediscountusergroups
странно. попробовал несколькими дамперами. sql формируется именно так, как он записан. какая у вас версия MySQL?
У меня стоит MySQL 5.0.45. Может в ней ещё какие ограничения действуют?
У меня стоит версия 1.5.4.1 . Все установилось но скидки в товаре почемуто нет. Не подскажите что делать.....
Петр, читали всё, что написано после заголовка «Вывод скидки в карточке товара»? Делали это?
Нет. Я просто не программист и не знаю как Писать небольшой Vqmod: Не подскажите
Здравствуйте. А можно поточнее куда и в какой файл поставить этот код? Спасибо
Array ( [id] => 5 [name] => Скидка 50% на всё [discount] => 50.0000 [type] => P [customer_group] => 1 [date_start] => 0000-00-00 00:00:00 [date_end] => 0000-00-00 00:00:00 [status] => 1 )
Здравствуйте.. Скачал ваш модуль, сделал как сказали залил на хост, и распаковал... Захожу в админку, и не вижу модуля в списке... http://shot.qip.ru/00i15B-6E2nOn0o7/ версия Opencart 1.5.4.1 ... пожалуйста помогите разобраться что я не так делаю :_(
Ильгизар, а заметку внимательно читали?
В разделе «Установка» написано «В админке перейти в Модули -> Учитывать в заказе и установить модуль «Скидки группам покупателей»
Дошло... Сбило с толку слово Модули.... Вам стоит в инструкции поправить это слово на пункт "Дополнения" - Учитывать в заказе
Алексей можно вывести примерно так в нужное место в product.tpl добавить
Подскажите, а как добавить выбор категории товаров к которой будет применяться скидка?
Антон, такой возможности в модуле нет.
А сколько будет стоить добавить эту функцию?
У меня сайт двуязычный. Никак не могу (не хватает, все-таки, достаточных знаний PHP) сделать, чтобы названия скидок выводилось в двух языках. Вроде бы надо вставить языковое определение в строку: $discount_info = $this->model_checkout_wediscountusergroups->getDiscountByCustomerGroupId($this->customer->getCustomerGroupId()); А как - не могу догадаться! Прошу помощи!!!!
Подскажите как сделать что бы в карточке товара работало на всех валютах! Что ему сделать? Зарание спасибо
Олег, огромное спасибо за столь замечательный модуль
Добрый день! В mijoshop не работает регистрация покупателей. Можете подсказать как настроить?
Добрый! Как это связано с заметкой?
Олег здравствуйте! Уже голову сломал, не хватает знаний.. как сделать так, что бы на акционые товары не работал?
Добрый день.
Установил модуль, создал отдкльную группу покупателей, для которых хочу предоставить скидку. При заказе этим покупателем продукции, выскакивает следующее сообщение: Notice: Undefined offset: 2 in /home/user1202717/www/latuk.by/catalog/model/shipping/sheduler.php on line 35Notice: Undefined offset: 2 in /home/user1202717/www/latuk.by/catalog/model/shipping/sheduler.php on line 37Warning: Cannot modify header information - headers already sent by (output started at /home/user1202717/www/latuk.by/index.php:92) in /home/user1202717/www/latuk.by/catalog/controller/checkout/simplecheckout_payment.php on line 212
Где копать?
Доброй ночи. Установил модуль. Версия ocStore 1.5.5.1.2 Что бы вывести на странице товара создал и поместил куда следует Vqmod:
На странице товара, в коде файла product.tpl прописал:
Вопрос: Как вывести цену товара с учетом скидки? пробовал разные коды в сообщениях темы и тут в блоге то цена выводится не правильная... а именно - (цена 1 рубль). Как вывести правильную цену товара с учетом скидки?
Валентин, мой модуль не выводит цену в карточке товара. Её вы должны вывести сами.
Если для пользователя есть скидка, то в вашем распоряжении массив $discount_info с данными скидки.
Пример:
На основе его уже можно вычислить итоговую цену товара с учётом скидки.
Олег Максименко Вот я вас и попросил помочь с выводом... так как не владею php совсем... Уверен этим вы поможете не только мне но и остальным пользователям вашего модуля. Спасибо.
Вопрос: Как вывести цену товара с учетом скидки? Если для пользователя есть скидка, то в вашем распоряжении массив $discount_info с данными скидки. А что мешает ее вычислить и тут же вывести?
Здравствуйте. Версия 1.5.5.1.2. Подскажите, почему выводится скидка два раза? Сделала группу "Постоянные покупатели" и присвоила им скидку 1%. Но в оформлении вижу ее два раза по 1%. Тут писали про языки англ/рус., но название группы у меня задаются только на одном языке. Как решить проблему? Спасибо.
Создал файл вложил
Но на сайте в товарной позиции ничего не поменялось
И не поменяется. Чтобы вывести в карточке товара — нужно немного попрограммировать. В комментариях к этой заметке есть примеры.