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

[Вопрос]Атрибуты товара. Как реализовать абсолютную цену для атрибута

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

В магазине предпологается продавать фанеру

различается только толщиной и ценой.

Делать 15 страниц одинаковых товаров с разной толщиной не практично и не удобно для пользователя.

Удобнее сделать 1 сраницу с выбором толщины в атрибутах.

Как реализовать цену для каждого атибута без префикса (+/-) а сразу указывать конечную цену. так логичнее и удобнее для себя и покупателя, нежели наценка к основной стоимости за каждый мм.

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


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

расчет стоимости атрибутов происходит в файле ..\system\library\cart.php

if ($option_value_query->row['prefix'] == '+') {
	$option_price = $option_price + $option_value_query->row['price'];
} elseif ($option_value_query->row['prefix'] == '-') {
	$option_price = $option_price - $option_value_query->row['price'];
}

и собственно тут

'price'        => ($price + $option_price),
'total'        => ($price + $option_price) * $quantity,

ну и придется отредактировать кучу файлов чтоб все это выглядело по "новому"

  • +1 1

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


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

расчет стоимости атрибутов происходит в файле ..systemlibrarycart.php

if ($option_value_query->row['prefix'] == '+') {
	$option_price = $option_price + $option_value_query->row['price'];
} elseif ($option_value_query->row['prefix'] == '-') {
	$option_price = $option_price - $option_value_query->row['price'];
}

и собственно тут

'price'		=> ($price + $option_price),
'total'		=> ($price + $option_price) * $quantity,

ну и придется отредактировать кучу файлов чтоб все это выглядело по "новому"

Интересно, а в какую кучу файлов необходимо редактировать? Кроме темы product.tpl

А то пытаюсь решить такую же задачу.

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


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

в cart.php сделал изменения:

if ($option_value_query->num_rows) {

if ($option_value_query->row['price_prefix'] == '+') {

$option_price += $option_value_query->row['price'];

} elseif ($option_value_query->row['price_prefix'] == '-') {

$option_price -= $option_value_query->row['price'];

} elseif ($option_value_query->row['price_prefix'] == '=') {$option_price = $option_value_query->row['price']; $d=1;} //Dobavlaem prefix =

и

if ($option_value_query->row['price_prefix'] == '=') {

$this->data[$key] = array(

...

'price' => ($option_price),

'total' => ($option_price) * $quantity,

...

);} else {

$this->data[$key] = array(

...

'price' => ($price + $option_price),

'total' => ($price + $option_price) * $quantity,

...

); }

Теперь при префиксе = цена в корзине равняется цене опции.

product.tpl подправил для корректного отображения префикса в списке опций.

Какие еще могут быть подводные камни?

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


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

в cart.php сделал изменения:

if ($option_value_query->num_rows) {

if ($option_value_query->row['price_prefix'] == '+') {

$option_price += $option_value_query->row['price'];

} elseif ($option_value_query->row['price_prefix'] == '-') {

$option_price -= $option_value_query->row['price'];

} elseif ($option_value_query->row['price_prefix'] == '=') {$option_price = $option_value_query->row['price']; $d=1;} //Dobavlaem prefix =

и

if ($option_value_query->row['price_prefix'] == '=') {

$this->data[$key] = array(

...

'price' => ($option_price),

'total' => ($option_price) * $quantity,

...

);} else {

$this->data[$key] = array(

...

'price' => ($price + $option_price),

'total' => ($price + $option_price) * $quantity,

...

); }

Теперь при префиксе = цена в корзине равняется цене опции.

product.tpl подправил для корректного отображения префикса в списке опций.

Какие еще могут быть подводные камни?

 

То что надо! Спасибо)

 

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

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


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

в cart.php сделал изменения:

if ($option_value_query->num_rows) {

if ($option_value_query->row['price_prefix'] == '+') {

$option_price += $option_value_query->row['price'];

} elseif ($option_value_query->row['price_prefix'] == '-') {

$option_price -= $option_value_query->row['price'];

} elseif ($option_value_query->row['price_prefix'] == '=') {$option_price = $option_value_query->row['price']; $d=1;} //Dobavlaem prefix =

и

if ($option_value_query->row['price_prefix'] == '=') {

$this->data[$key] = array(

...

'price' => ($option_price),

'total' => ($option_price) * $quantity,

...

);} else {

$this->data[$key] = array(

...

'price' => ($price + $option_price),

'total' => ($price + $option_price) * $quantity,

...

); }

Теперь при префиксе = цена в корзине равняется цене опции.

product.tpl подправил для корректного отображения префикса в списке опций.

Какие еще могут быть подводные камни?

А можно поподробнее?

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


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

что тут я не понял это где такое.

 

и


if ($option_value_query->row['price_prefix'] == '=') {
$this->data[$key] = array(
...
'price' => ($option_price),
'total' => ($option_price) * $quantity,
...
);} else {

$this->data[$key] = array(
...
'price' => ($price + $option_price),
'total' => ($price + $option_price) * $quantity,
...
); }

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

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

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