Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

Кратность добавления заказа в корзину


Recommended Posts

Продаем керамическую плитку коробками. Цена указана за м2. Как сделать, чтобы заказ был с шагом количества м2 в коробке? Пример на скриншоте.

Скриншот 09-07-2018 194828.png

Link to post
Share on other sites

Это Вам надо делать калькулятор в карточке товара. Я специализируюсь. Если интересует пишите мне в ЛС я посмотрю и сообщу по стоимости.

Link to post
Share on other sites

мегакалькулятор Вам в помощь

Link to post
Share on other sites
2 часа назад, whiteblue сказал:

мегакалькулятор Вам в помощь

сразу ссылку почему бы не приложить?

Link to post
Share on other sites
10 часов назад, AWARO сказал:

сразу ссылку почему бы не приложить?

забанят за внешнюю ссылку 

Link to post
Share on other sites
13 минут назад, whiteblue сказал:

забанят за внешнюю ссылку 

а сюда выложить чо?

Link to post
Share on other sites
15 минут назад, AWARO сказал:

а сюда выложить чо?

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

Link to post
Share on other sites

Как вариант "дешево и сердито":

Заносим кол-во кв.м в упаковке в любое неиспользуемое поле товар(jan, например). 

Или используем для этого атрибуты.

Идем в контроллер товара и добавляем вывод этого поля в шаблон(если атрибуты, то они и так обычно уже там есть)

В шаблоне для вывода кол-ва кв.м делаем кол-во * на содержимое нашего поля/атрибута

Для отображения всяких там цен за кв.м производим соответствующие арифметические операции с нашим полем/атрибутом.

Подробнее могу в личке рассказать или сделать сам, но за деньги.

Link to post
Share on other sites

@strojremont

https://opencartforum.com/search/?q=квадратные метры

Спойлер

Открываем файл admin/catalog/view/template/catalog/product_form.tpl

ищем строки:


<div class="form-group">
  <label class="col-sm-2 control-label" for="input-price"><?php echo $entry_price; ?></label>
  <div class="col-sm-10">
	<input type="text" name="price" value="<?php echo $price; ?>" placeholder="<?php echo $entry_price; ?>" id="input-price" class="form-control" />
  </div>
</div>

после них вставляем:


<div class="form-group">
  <label class="col-sm-2 control-label" for="input-mpn">Количество м<sup>2</sup> в упаковке</label>
  <div class="col-sm-10">
    <input type="text" name="mpn" value="<?php echo $mpn; ?>" id="input-mpn" class="form-control" />
  </div>
</div>

Эти строки удаляем:


<div class="form-group">
  <label class="col-sm-2 control-label" for="input-mpn"><span data-toggle="tooltip" title="<?php echo $help_mpn; ?>"><?php echo $entry_mpn; ?></span></label>
  <div class="col-sm-10">
   <input type="text" name="mpn" value="<?php echo $mpn; ?>" placeholder="<?php echo $entry_mpn; ?>" id="input-mpn" class="form-control" />
  </div>
</div>

 

 

Поле для ввода количества штук в упаковке
после строк выше добавляем:


<div class="form-group">
  <label class="col-sm-2 control-label" for="input-isbn"><span data-toggle="tooltip" >Количество шт. в упаковке</span></label>
  <div class="col-sm-10">
    <input type="text" name="isbn" value="<?php echo $isbn; ?>" placeholder="<?php echo $entry_isbn; ?>" id="input-isbn" class="form-control" />
  </div>
</div>

Удаляем код для ввода isbn


<div class="form-group">
  <label class="col-sm-2 control-label" for="input-isbn"><span data-toggle="tooltip" title="<?php echo $help_isbn; ?>"><?php echo $entry_isbn; ?></span></label>
  <div class="col-sm-10">
    <input type="text" name="isbn" value="<?php echo $isbn; ?>" placeholder="<?php echo $entry_isbn; ?>" id="input-isbn" class="form-control" />
  </div>
</div>

Открываем файл admin/model/catalog/product.php

код:


price = '" . (float)$data['price'] . "',

заменяем на:


price = '" . (float)$data['price'] * ($data['mpn']?$data['mpn']:1) . "',

Открываем файл admin/controller/catalog/product.php

Находим строки:


if (isset($this->request->post['price'])) {
	$data['price'] = $this->request->post['price'];
} elseif (!empty($product_info)) {
	$data['price'] = $product_info['price'];
} else {
	$data['price'] = '';
}  

Меняем их на:


if (isset($this->request->post['price'])) {
	$data['price'] = $this->request->post['price']/($this->request->post['mpn']?$this->request->post['mpn']:1);
} elseif (!empty($product_info)) {
	$data['price'] = $product_info['price'] / ($product_info['mpn']?$product_info['mpn']:1);
} else {
	$data['price'] = '';
}

 

Фронт

Открываем файл catalog/controller/product/product.php

Находим строки:


if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
	$data['price'] = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax')));
} else {
	$data['price'] = false;
}

Меняем их на:


if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
	$data['price'] = $this->currency->format($this->tax->calculate($product_info['price'] / ($product_info['mpn']?$product_info['mpn']:1), $product_info['tax_class_id'], $this->config->get('config_tax')));
} else {
	$data['price'] = false;
}

После этих строк вставляем


$data['in_box'] = $product_info['mpn'];
$data['count_in_box'] = $product_info['isbn'];

Открываем файл catalog/view/theme/default/template/product/product.tpl

Ищем код:


<input type="text" name="quantity" value="<?php echo $minimum; ?>" size="2" id="input-quantity" class="form-control" />

Меняем его на:


<div class="col-sm-12 form-group">
  <div class="col-sm-3">
    <span data-type="q_minus" class="control-in-de btn btn-primary btn-block">-</span>
  </div>
  <div class="col-sm-6">
    <input type="text" name="quantity_in_box" value="<?php echo $minimum * ($in_box?$in_box:1); ?> кв.м. (<?php echo $minimum; ?> уп.)" size="2" id="input-quantity" class="form-control" />
    <input type="hidden" name="quantity" value="<?php echo $minimum; ?>" />
  </div>
  <div class="col-sm-3">
    <span data-type="q_plus" class="control-in-de btn btn-primary btn-block">+</span>
  </div>
</div>

далее находим:


<?php echo $footer; ?>

И перед этой строкой вставляем


<script>
$('.control-in-de').click(function(){ 
	if($(this).data('type') == 'q_minus'){
	  if($('input[name="quantity"]').val() > '<?php echo $minimum; ?>'){
		$('input[name="quantity"]').val(parseInt($('input[name="quantity"]').val())-1);
	  }
	}else{
		$('input[name="quantity"]').val(parseInt($('input[name="quantity"]').val())+1);					
	}
	in_box = parseInt($('input[name="quantity"]').val())*<?php echo $in_box; ?>;
	$('input[name="quantity_in_box"]').val(in_box.toFixed(2) + ' кв.м. (' + $('input[name="quantity"]').val() + ' уп.)');
});
</script>

Для вывода


	<?php echo $count_in_box; ?>

Открываем файл catalog/controller/product/category.php

Находим строку:


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

Меняем ее на:


$price = $this->currency->format($this->tax->calculate($result['price'] / ($result['mpn']?$result['mpn']:1), $result['tax_class_id'], $this->config->get('config_tax')));

 

  • +1 1
Link to post
Share on other sites
  • 2 weeks later...
В 18.07.2018 в 15:42, AWARO сказал:

@strojremont

https://opencartforum.com/search/?q=квадратные метры

 

  Показать контент

Открываем файл admin/catalog/view/template/catalog/product_form.tpl

ищем строки:



<div class="form-group">
  <label class="col-sm-2 control-label" for="input-price"><?php echo $entry_price; ?></label>
  <div class="col-sm-10">
	<input type="text" name="price" value="<?php echo $price; ?>" placeholder="<?php echo $entry_price; ?>" id="input-price" class="form-control" />
  </div>
</div>

после них вставляем:



<div class="form-group">
  <label class="col-sm-2 control-label" for="input-mpn">Количество м<sup>2</sup> в упаковке</label>
  <div class="col-sm-10">
    <input type="text" name="mpn" value="<?php echo $mpn; ?>" id="input-mpn" class="form-control" />
  </div>
</div>

Эти строки удаляем:



<div class="form-group">
  <label class="col-sm-2 control-label" for="input-mpn"><span data-toggle="tooltip" title="<?php echo $help_mpn; ?>"><?php echo $entry_mpn; ?></span></label>
  <div class="col-sm-10">
   <input type="text" name="mpn" value="<?php echo $mpn; ?>" placeholder="<?php echo $entry_mpn; ?>" id="input-mpn" class="form-control" />
  </div>
</div>

 

 

Поле для ввода количества штук в упаковке
после строк выше добавляем:



<div class="form-group">
  <label class="col-sm-2 control-label" for="input-isbn"><span data-toggle="tooltip" >Количество шт. в упаковке</span></label>
  <div class="col-sm-10">
    <input type="text" name="isbn" value="<?php echo $isbn; ?>" placeholder="<?php echo $entry_isbn; ?>" id="input-isbn" class="form-control" />
  </div>
</div>

Удаляем код для ввода isbn



<div class="form-group">
  <label class="col-sm-2 control-label" for="input-isbn"><span data-toggle="tooltip" title="<?php echo $help_isbn; ?>"><?php echo $entry_isbn; ?></span></label>
  <div class="col-sm-10">
    <input type="text" name="isbn" value="<?php echo $isbn; ?>" placeholder="<?php echo $entry_isbn; ?>" id="input-isbn" class="form-control" />
  </div>
</div>

Открываем файл admin/model/catalog/product.php

код:



price = '" . (float)$data['price'] . "',

заменяем на:



price = '" . (float)$data['price'] * ($data['mpn']?$data['mpn']:1) . "',

Открываем файл admin/controller/catalog/product.php

Находим строки:



if (isset($this->request->post['price'])) {
	$data['price'] = $this->request->post['price'];
} elseif (!empty($product_info)) {
	$data['price'] = $product_info['price'];
} else {
	$data['price'] = '';
}  

Меняем их на:



if (isset($this->request->post['price'])) {
	$data['price'] = $this->request->post['price']/($this->request->post['mpn']?$this->request->post['mpn']:1);
} elseif (!empty($product_info)) {
	$data['price'] = $product_info['price'] / ($product_info['mpn']?$product_info['mpn']:1);
} else {
	$data['price'] = '';
}

 

Фронт

Открываем файл catalog/controller/product/product.php

Находим строки:



if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
	$data['price'] = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax')));
} else {
	$data['price'] = false;
}

Меняем их на:



if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
	$data['price'] = $this->currency->format($this->tax->calculate($product_info['price'] / ($product_info['mpn']?$product_info['mpn']:1), $product_info['tax_class_id'], $this->config->get('config_tax')));
} else {
	$data['price'] = false;
}

После этих строк вставляем



$data['in_box'] = $product_info['mpn'];
$data['count_in_box'] = $product_info['isbn'];

Открываем файл catalog/view/theme/default/template/product/product.tpl

Ищем код:



<input type="text" name="quantity" value="<?php echo $minimum; ?>" size="2" id="input-quantity" class="form-control" />

Меняем его на:



<div class="col-sm-12 form-group">
  <div class="col-sm-3">
    <span data-type="q_minus" class="control-in-de btn btn-primary btn-block">-</span>
  </div>
  <div class="col-sm-6">
    <input type="text" name="quantity_in_box" value="<?php echo $minimum * ($in_box?$in_box:1); ?> кв.м. (<?php echo $minimum; ?> уп.)" size="2" id="input-quantity" class="form-control" />
    <input type="hidden" name="quantity" value="<?php echo $minimum; ?>" />
  </div>
  <div class="col-sm-3">
    <span data-type="q_plus" class="control-in-de btn btn-primary btn-block">+</span>
  </div>
</div>

далее находим:



<?php echo $footer; ?>

И перед этой строкой вставляем



<script>
$('.control-in-de').click(function(){ 
	if($(this).data('type') == 'q_minus'){
	  if($('input[name="quantity"]').val() > '<?php echo $minimum; ?>'){
		$('input[name="quantity"]').val(parseInt($('input[name="quantity"]').val())-1);
	  }
	}else{
		$('input[name="quantity"]').val(parseInt($('input[name="quantity"]').val())+1);					
	}
	in_box = parseInt($('input[name="quantity"]').val())*<?php echo $in_box; ?>;
	$('input[name="quantity_in_box"]').val(in_box.toFixed(2) + ' кв.м. (' + $('input[name="quantity"]').val() + ' уп.)');
});
</script>

Для вывода



	<?php echo $count_in_box; ?>

Открываем файл catalog/controller/product/category.php

Находим строку:



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

Меняем ее на:



$price = $this->currency->format($this->tax->calculate($result['price'] / ($result['mpn']?$result['mpn']:1), $result['tax_class_id'], $this->config->get('config_tax')));

 

 

А можете мне на платных условиях это осуществить? У самой не получается......

Link to post
Share on other sites

В 18.07.2018 в 13:07, afinalux сказал:

Как вариант "дешево и сердито":

Заносим кол-во кв.м в упаковке в любое неиспользуемое поле товар(jan, например). 

Или используем для этого атрибуты.

Идем в контроллер товара и добавляем вывод этого поля в шаблон(если атрибуты, то они и так обычно уже там есть)

В шаблоне для вывода кол-ва кв.м делаем кол-во * на содержимое нашего поля/атрибута

Для отображения всяких там цен за кв.м производим соответствующие арифметические операции с нашим полем/атрибутом.

Подробнее могу в личке рассказать или сделать сам, но за деньги.

А можете мне на платных условиях это осуществить? У самой не получается......

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

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.