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

Вывод цены товара в каталоге по минимальной из опций

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

Приветствую.
Столкнулся с проблемой вывода цен. Мне нужно чтобы выводилась минимальная цена из опций вместо обычной.
Нашел на забугорном форуме файлец для vqmod, который вроде для версии 1.5.3. 
Сам использую ocStore 1.5.5.1, и некоторым товарам он и вправду изменил цену на минимальную из опций, но не всем(как мне показалось изменил только первым нескольким позициям). В чем может быть проблема?

<modification>
	<id>Starting At Option Price</id>
	<version>1.5.x</version>
	<vqmver>2.1.5</vqmver>
	<author>qphoria</author>
	<file name="catalog/model/catalog/product.php">
	
		<operation info="Move price manipulation up so it can be managed">
			<search position="before"><![CDATA[
			return array(
			]]></search>
			<add><![CDATA[
			$query->row['price'] = ($query->row['discount'] ? $query->row['discount'] : $query->row['price']);
			
			
			// Show first (lowest) option price as "Starting at" price
			// But for product page, to avoid issues with option price update, use a different method
			if ($query->row['price'] == 0) {
				$options = $this->getProductOptions($product_id);
				
				$option_prices = array();
				if ($options) {
					foreach ($options as $j => $option) {
						if (!$option['option_value']) { continue; }
						foreach ($option['option_value'] as $l => $option_value) {
							if (!(float)$option_value['price']) { continue; }
							if ($option_value['price_prefix'] == '-') {
								$option_prices[] = -$option_value['price'];
							} else {
								$option_prices[] = $option_value['price'];
							}
							$options[$j]['option_value'][$l]['price_prefix'] = '';
						}
					}
				}
				if ($option_prices) {
					sort($option_prices);
					//if (!isset($this->request->get['product_id']) && !isset($this->request->post['product_id'])) {
					//if (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || $_SERVER['HTTP_X_REQUESTED_WITH']!='XMLHttpRequest' && !isset($this->request->get['product_id']) && !isset($this->request->post['product_id'])) {
					//if (isset($this->request->get['route']) && $this->request->get['route'] != 'product/product') {
					if ((!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || $_SERVER['HTTP_X_REQUESTED_WITH']!='XMLHttpRequest') && ((isset($this->request->get['route']) && $this->request->get['route'] != 'product/product') || !isset($this->request->get['route']))) {
						$query->row['price'] = reset($option_prices);
					} else {
						$this->session->data['start_at_price'] = $this->tax->calculate($option_prices[0], $query->row['tax_class_id']);
						$this->session->data['start_at_price_ex_tax'] = $option_prices[0];
					}
				}				
			}
			]]></add>
		</operation>
	
		<operation info="replace the original with the new variable">
			<search position="replace"><![CDATA[
			($query->row['discount'] ? $query->row['discount'] : $query->row['price']),
			]]></search>
			<add><![CDATA[
			$query->row['price'],
			]]></add>
		</operation>
	</file>
	
	<file name="system/library/currency.php">
		<operation>
			<search position="after"><![CDATA[
			public function format($number,
			]]></search>
			<add><![CDATA[
			$trace = debug_backtrace();
			if (isset($trace[1]['class']) && $trace[1]['class'] == 'ControllerProductProduct') {
				if ($number == 0 && !empty($this->session->data['start_at_price'])) {
					$number = $this->session->data['start_at_price'];
					$starting = true;
					unset($this->session->data['start_at_price']);
				}
				if ($number == 0 && !empty($this->session->data['start_at_price_ex_tax'])) {
					$number = $this->session->data['start_at_price_ex_tax'];
					$starting = true;
					unset($this->session->data['start_at_price_ex_tax']);
				}
			}
			]]></add>
		</operation>
		<operation>
			<search position="before"><![CDATA[
			return $string;
			]]></search>
			<add><![CDATA[
			if (isset($starting) && $starting) {
				$starting = false;
				$string = "Starting at $string";
			}
			]]></add>
		</operation>
		
	</file>

</modification>

price_by_options_153x.xml

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


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

Перезалил с 1с цены, всё плохо, этот код ничего не изменил... При выгрузке из 1с сайт цепляет первую цену для товара в файле offers, но она не та что нужна, так как пользуюсь связанными опциями с разными ценами(без + и -, а фиксированной).
Хотелось бы просто узнать, возможно отображать минимальную цену из опций для товара в каталоге, т.к. хочу сделать цены в виде: 'от 777 р'.

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

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

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