Перейти к содержанию
leotop

[РЕШЕНО] Вывод всех акций на странице продукта

Рекомендуемые сообщения

В зависимости от группы покупателя в карточке товара в акциях указана своя скидка.

Как вывести все скидки, если в шаблон передается одно значение и только для одной группы?

 

Должно получиться:

Базовая цена 1000 руб

Постоянный покупатель 900 руб

Старый клиент 800 руб

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Предположительно нужно править модель, чтобы из базы данных забиралсь информация не только об акции для одной группы, а все имеющиеся.

Может быть кто-то встречал модуль для вывода нескольких акций в код товара?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Зачем делить клиентов на "Старых" и "Постоянных"? Судя по ценнику, "Старый" для вас важнее, чем "Постоянный", что говорит (по логике вещей) о том, что "Старый" клиент не который один раз купил и получил скидку больше того, что затаривается ежедневно, а который также регулярно покупает что-то, что дает ему привилегированную цену. Так пусть он будет "VIP клиент", если у вас есть разница между постоянными клиентами по возрасту аккаунта. Сначала СМЕНИТЕ название клиента со "Старого" на нормальное уважительное, а потом уже выводите.

А то выглядит это, как "Старый пень" :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сначала пусть определится "акции" или "скидки".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сначала пусть определится "акции" или "скидки".

В чем нужно определиться? В опенкарт четкое разграничение.

 

Акция - это скидка которая не зависит от количества

Скидка - это скидка которая задается в зависимости от кол-ва товара для каждой группы.

 

Поэтому нужно вывести именно акции но для всех групп покупателей, а не только текущей.

 

 

Сначала СМЕНИТЕ название клиента со "Старого" на нормальное уважительное, а потом уже выводите.

А то выглядит это, как "Старый пень" :)

 

Сменим на колонка 1, колонка 2, от этого что-то измениться в решение поставленной задачи - вывод акций на страницу не зависимо от группы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Готовый модуль с выводом цен для разных групп никто не встречал?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

catalog/controller/product/product.php

...
			$this->load->model('account/customer_group');
			$customerGroupsList = $this->model_account_customer_group->getCustomerGroups();
			
			$this->data['wholeSpecials'] = array();
			if ($this->customer->isLogged()) {
				$ws_customer_group_id = $this->customer->getCustomerGroupId();
			} else {
				$ws_customer_group_id = $this->config->get('config_customer_group_id');
			}
			foreach ($customerGroupsList as $customerGroup) {
				if ($customerGroup['customer_group_id'] != $ws_customer_group_id) {
					$customerGroupName = $customerGroup['name'];
					
					$wholeSpecial = $this->model_catalog_product->getWholeProductSpecialData($this->request->get['product_id'], $customerGroup['customer_group_id']);
					
					if ($wholeSpecial) {
						$this->data['wholeSpecials'][] = array(
							'price'    => $this->currency->format($this->tax->calculate($wholeSpecial['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))),
							'customerGroup' => $customerGroupName
						);
					}
				}
			}
			...
catalog/model/catalog/product.php

...
public function getProductSpecials($data = array()) {
...
>>

...
	public function getWholeProductSpecialData($product_id, $customer_group_id_listed) {
		$query = $this->db->query("SELECT `price`, `date_end`, `customer_group_id` FROM " . DB_PREFIX . "product_special WHERE product_id = '" . (int)$product_id . "' AND customer_group_id = '" . (int)$customer_group_id_listed . "' AND ((date_start = '0000-00-00' OR date_start < NOW()) AND (date_end = '0000-00-00' OR date_end > NOW())) ORDER BY priority ASC, price ASC LIMIT 1");

		if ($query->num_rows) {
			return $query->row;
		} else {
			return FALSE;
		}
	}

public function getProductSpecials($data = array()) {
...
tpl

...
        <?php if ($wholeSpecials) { ?>
        <br />
        <div class="discount">
          <?php foreach ($wholeSpecials as $wholeSpecial) { ?>
			<?php echo "Для группы ".$wholeSpecial['customerGroup'].": ".$wholeSpecial['price'].""; ?>
			<br />
          <?php } ?>
        </div>
        <?php } ?>
...
  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отличное решение! Спасибо и тому кто создал тему и тому кто дал ответ как сделать! Все сделал у себя. Все работает! Оформил в нужный стиль и песня! :D

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

можно перевести синтаксис на 2.3? :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 18.04.2015 в 22:01, afwollis сказал:

catalog/controller/product/product.php

 


...
			$this->load->model('account/customer_group');
			$customerGroupsList = $this->model_account_customer_group->getCustomerGroups();
			
			$this->data['wholeSpecials'] = array();
			if ($this->customer->isLogged()) {
				$ws_customer_group_id = $this->customer->getCustomerGroupId();
			} else {
				$ws_customer_group_id = $this->config->get('config_customer_group_id');
			}
			foreach ($customerGroupsList as $customerGroup) {
				if ($customerGroup['customer_group_id'] != $ws_customer_group_id) {
					$customerGroupName = $customerGroup['name'];
					
					$wholeSpecial = $this->model_catalog_product->getWholeProductSpecialData($this->request->get['product_id'], $customerGroup['customer_group_id']);
					
					if ($wholeSpecial) {
						$this->data['wholeSpecials'][] = array(
							'price'    => $this->currency->format($this->tax->calculate($wholeSpecial['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))),
							'customerGroup' => $customerGroupName
						);
					}
				}
			}
			...

catalog/model/catalog/product.php

 


...
public function getProductSpecials($data = array()) {
...

>>

 


...
	public function getWholeProductSpecialData($product_id, $customer_group_id_listed) {
		$query = $this->db->query("SELECT `price`, `date_end`, `customer_group_id` FROM " . DB_PREFIX . "product_special WHERE product_id = '" . (int)$product_id . "' AND customer_group_id = '" . (int)$customer_group_id_listed . "' AND ((date_start = '0000-00-00' OR date_start < NOW()) AND (date_end = '0000-00-00' OR date_end > NOW())) ORDER BY priority ASC, price ASC LIMIT 1");

		if ($query->num_rows) {
			return $query->row;
		} else {
			return FALSE;
		}
	}

public function getProductSpecials($data = array()) {
...

tpl

 


...
        <?php if ($wholeSpecials) { ?>
        <br />
        <div class="discount">
          <?php foreach ($wholeSpecials as $wholeSpecial) { ?>
			<?php echo "Для группы ".$wholeSpecial['customerGroup'].": ".$wholeSpecial['price'].""; ?>
			<br />
          <?php } ?>
        </div>
        <?php } ?>
...

 

Дружище! Как на 2.3 сделать? Помоги пожалуйста! И в категории вывести эти цены... Можно платно, только предоставь код для разных версий движка 2.0 и 2.3

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.