Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


NoobMan

Recommended Posts

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

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

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

 

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

 

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

Надіслати
Поділитися на інших сайтах


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

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

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

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

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

  • +1 1
Надіслати
Поділитися на інших сайтах

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

В файле шаблона 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')));

 

не работает

Надіслати
Поділитися на інших сайтах


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

$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')));
  • +1 1
Надіслати
Поділитися на інших сайтах


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

 

В общем для умножения полей (и прочих математических дйствий)и вывода результатов на сайте нужно в \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')));

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

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

Надіслати
Поділитися на інших сайтах


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

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

Надіслати
Поділитися на інших сайтах


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

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

Надіслати
Поділитися на інших сайтах


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

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

Надіслати
Поділитися на інших сайтах

И все же приведу пример модификации 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
Надіслати
Поділитися на інших сайтах


  • 1 month later...

И все же приведу пример модификации 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 = цена на сайте. С одним еан получилось. Заранее спасибо 

Надіслати
Поділитися на інших сайтах


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

 
$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 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.