BlackWolf

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

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

BlackWolf    7

Видел плагин 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>';

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

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


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

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

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

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

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

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

Войти

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

Войти


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

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