NoobMan

Умножение полей в карточке товара = стоимость

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

NoobMan    16

Уважаемые, подскажите, как реализовать автоматическое умножение поля Цена на EAN и как вывести результат на сайт?

Поясню зачем это..

Изготавливаем кабель по такой то цене за метр, в зависимости от Ean (сечение) цена соответсвенно меняется, что и должно отображааться на сайте.

 

Нужно такое решение, чтобы в коде можно было прописать свою формулу например, цена * (EAN:n, где n - целое число) = сумма

 

Если кто знает решение, помогите пожалуйста

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


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

Умножать в админке или на фронте?

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


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

На фронтэнде должен быть результат, в админке поля не трогаем, заполняем как обычно

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


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

Тогда как-то так:

В файле шаблона product.tpl пишим такое выражение на php, перед выводм цены

<?php $price = $price * $ean; ?>
(не уверен в правильности названия переменной ean)

И аналогично для всех других файлов шаблона.

Или можно умножить в контроллере.

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


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

Тогда как-то так:

В файле шаблона product.tpl пишим такое выражение на php, перед выводм цены

<?php $price = $price * $ean; ?>
(не уверен в правильности названия переменной ean)

И аналогично для всех других файлов шаблона.

Или можно умножить в контроллере.

Увы, Notice: Undefined variable: ean in Z:\home\provod.ru\www\catalog\view\theme\default\template\product\product.tpl on line 36 Price: 0

В контроллер попробовал так вставить 

$this->data['price'] = $this->currency->format($this->tax->calculate($product_info['price']*[ 'ean'], $product_info['tax_class_id'], $this->config->get('config_tax')));

 

не работает

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


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

В контроллер попробовал так вставить 

$this->data['price'] = $this->currency->format($this->tax->calculate($product_info['price']*[ 'ean'], $product_info['tax_class_id'], $this->config->get('config_tax')));

 

не работает

 

А так?

$this->data['price'] = $this->currency->format($this->tax->calculate($product_info['price'] * $product_info['ean'], $product_info['tax_class_id'], $this->config->get('config_tax')));

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


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

А так работает_)) че то я не докадался полностью написать))

 

В общем для умножения полей (и прочих математических дйствий)и вывода результатов на сайте нужно в \catalog\controller\product\product.php строку

 





$this->data['price'] = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax')));

 

на





$this->data['price'] = $this->currency->format($this->tax->calculate($product_info['price'] * $product_info['ean'], $product_info['tax_class_id'], $this->config->get('config_tax')));

В шаблон ничего вставлять не нужно.

Благодарю всех отозвавшихся!

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


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

Боюсь, придется те же изменения делать еще в 27 местах (вывод цены в Каталоге, в Рекомендуемых, в Специальных, в корзине, при оформлении товара и т.д.)

Куда проще пересчитывать 'price' при сохранении товара в админке перед добавлением в БД. Или модифицировать функцию getProduct() во фронтенде.

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


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

Или модифицировать функцию getProduct() во фронтенде.

Нет, достаточно поменять именно в этом месте, в корзине и во всех остальных шаблонах цена выводиться по формуле

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


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

Переменные были написаны схематично. Как там правильно - надо смотреть.

Но вы уже разобрались и сами :)

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


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

И все же приведу пример модификации getProduct():

catalog/model/catalog/product.php после 16-й строки:

1.

if ($query->num_rows) {
добавить:
$ean = $query->row['ean'];if (empty($ean) || (!is_numeric($ean))) {  $ean = 1;}
Это была защита от дурака. Если поле 'ean ' пустое или в нем есть символы, то 'ean' будет равняться 1.

2. Ниже в массиве вместо

'ean'              => $query->row['ean'],
заменить на:
'ean'              => $ean,
3. Найти ниже:
'price'            => ($query->row['discount'] ? $query->row['discount'] : $query->row['price']),
Заменить на:
'price'            => ($query->row['discount'] ? $query->row['discount'] * $ean : $query->row['price']) * $ean,
Изменено пользователем 12strun

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


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

И все же приведу пример модификации getProduct():

catalog/model/catalog/product.php после 16-й строки:

1.

if ($query->num_rows) {
добавить:
$ean = $query->row['ean'];if (empty($ean) || (!is_numeric($ean))) {  $ean = 1;}
Это была защита от дурака. Если поле 'ean ' пустое или в нем есть символы, то 'ean' будет равняться 1.

2. Ниже в массиве вместо

'ean'              => $query->row['ean'],
заменить на:
'ean'              => $ean,
3. Найти ниже:
'price'            => ($query->row['discount'] ? $query->row['discount'] : $query->row['price']),
Заменить на:
'price'            => ($query->row['discount'] ? $query->row['discount'] * $ean : $query->row['price']) * $ean,

Подскажите пожалуйста,  а как умножить два числа: price x ean x jan = цена на сайте. С одним еан получилось. Заранее спасибо 

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


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

Пробовал так:

 
$ean = $query->row['ean'];if (empty($ean) || (!is_numeric($ean))) {  $ean = 1;};
$ean = $query->row['jan'];if (empty($jan) || (!is_numeric($jan))) {  $jan = 1;}
'ean'              => $ean,
'jan'              => $jan,
'price'            => ($query->row['discount'] ? $query->row['discount'] * $ean * $jan : $query->row['price']) * $ean * $jan,

 


Подскажите пожалуйста спецы, очень нужно

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


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

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

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

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

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

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

Войти

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

Войти


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

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