Jump to content
Sign in to follow this  
NoobMan

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

Recommended Posts

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

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

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

 

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

  • +1 1

Share this post


Link to post
Share on other sites

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

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

 

не работает

Share this post


Link to post
Share on other sites

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

$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

Share this post


Link to post
Share on other sites

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

 

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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

И все же приведу пример модификации 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,
Edited by 12strun

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 
$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,

 


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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.