Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Опция товара устанавливающая цену (префикс "=" price)


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

Видел плагин https://opencartforum.com/files/file/619-vqmod-dopolnitelnye-deistviia-s-tcenoi-optcii/
Он принципе делает что надо, но он требует vqmod (как я понял его в ocStore нет да и нафиг он нужен) да и возможно не совместим с ocStore 1.5.4.1. Вообщем решил просто подправить имеющийся функционал ocStore 1.5.4.1.

 

Ох пхп мой слаб.

Добавяю префикс "=" в class Cart (system\library\cart.php)

if ($option_value_query->num_rows) {
	if ($option_value_query->row['price_prefix'] == '+') {
		$option_price += $option_value_query->row['price'];
		$option_price_noprefix = 'no';
	} elseif ($option_value_query->row['price_prefix'] == '-') {
		$option_price -= $option_value_query->row['price'];
		$option_price_noprefix = 'no';
	} elseif ($option_value_query->row['price_prefix'] == '=') {
		$option_price = $option_value_query->row['price'];
		$option_price_noprefix = 'yes';
	}

делаю проверку нужно ли прибавить или вычесть из цены (префиксы + -) или нужно заменить (префикс =)

if ($option_price_noprefix == 'yes') {
	$new_price = $option_price;
	$new_price_total = $option_price * $quantity;
} else {
	$new_price = $price + $option_price;
	$new_price_total = ($price + $option_price) * $quantity;
}

это делаю перед массивом $this->data[$key] = array(

а в сам массив добавляю результат из предыдущей проверки

'price'           => $new_price,
'total'           => $new_price_total,

в итоге я имею префикс "=" который работает только для цены селекта.
Однако этот префикс можно добавить пока что только вручную в БД.


Иду в admin\view\template\catalog\product_form.tpl и добавляю префикс =

<?php if ($product_option_value['price_prefix'] == '+') { ?>
<option value="+" selected="selected">+</option>
<?php } else { ?>
<option value="+">+</option>
<?php } ?>
<?php if ($product_option_value['price_prefix'] == '-') { ?>
<option value="-" selected="selected">-</option>
<?php } else { ?>
<option value="-">-</option>
<?php } ?>
<?php if ($product_option_value['price_prefix'] == '=') { ?>
<option value="=" selected="selected">=</option>
<?php } else { ?>
<option value="=">=</option>
<?php } ?>

и еще сюда

	html += '    <td class="right"><select name="product_option[' + option_row + '][product_option_value][' + option_value_row + '][price_prefix]">';
	html += '      <option value="+">+</option>';
	html += '      <option value="-">-</option>';
	html += '      <option value="=">=</option>';

Такс, проверил вроде все работает как надо. Подскажите господа знатоки, где я тут чего то не учел или не совсем верно сделал (если такое имеется) ?

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

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

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