Jump to content
покупайте без комиссии
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

Модуль цены за м2 / доработка шаблона Techstore


Recommended Posts

Добрый день! 

 

Плитка, Ламинат и любой товар который описывается в цене за метр квадратный, метр погоднный может отпускаться со складов только упаковками. 

Пример, Ламинат egger стоит 700 рублей м2, отпускается кратно упаковкам, в ней 1.985 м2

Плитка почти вся отпускается коробками разных форматов, но стоимости за метр. 

Думаю суть идеи понятна. На любом интернет магазине данный функционал есть.

Edited by Soong
Link to post
Share on other sites

34 минуты назад, Soong сказал:

На любом интернет магазине данный функционал есть.

 

Этим вы пытаетесь цену снизить?)))

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

 

Этим вы пытаетесь цену снизить?)))

Нет, пытаюсь понятно объяснить, что зайдя на любой интернет магазин, можно посмотреть как это выглядит. Не понятна ваша шутка, разве я написал, что я стараюсь с экономить? 

Edited by Soong
Link to post
Share on other sites

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

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

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

Значит я повышу востребованность данной модификации. 

Link to post
Share on other sites

3 часа назад, buslikdrev сказал:

Такое есть:

Это называется "недо" товарное предложение. 
Такой модификатор только более симпатичный мне уже предложили создатели шаблона tech store. 
Это полезный модификатор, но мне шас нужно именно цена за м2 , м погонный , упаковку и т д. 
т к я имею сайт на битрикс ( das-stroy.ru )  , могу сказать , что данная функция идет в битриксе " из упаковки " , чего я тут с удивлением не обнаружил , я даже не мог подумать, что такие простейшие как мне казалось вещи не имеют места быть на движке опенкарта. ( окстор ) 
p.s. мой запрос на услугу и то, что вы предоставили это абсолютно разные вещи. 
p.s.s. но за попытку спасибо! 

Edited by Soong
Link to post
Share on other sites

Делал такое, Цена на сайте за кв. метр-минимальный шаг продажи  количество метров, с дробным числом, равное упаковке.

Link to post
Share on other sites

Делал такое, правда давно. Для ОС 1.5

http://mpn-oc.org/laminat-001.html

До выкладывания модуля не дошло. Очень низкая востребованность.

  • +1 1
Link to post
Share on other sites
3 часа назад, Ganga123 сказал:

Делал такое, Цена на сайте за кв. метр-минимальный шаг продажи  количество метров, с дробным числом, равное упаковке.

 

3 часа назад, mpn2005 сказал:

Делал такое, правда давно. Для ОС 1.5

http://mpn-oc.org/laminat-001.html

До выкладывания модуля не дошло. Очень низкая востребованность.


Вот парень уже занялся разработкой. 
https://manwhocode.ru/opencart/index.php?route=product/product&product_id=42
Весьма не плохо, завтра, скоро и до ума доведет) 

Edited by Soong
Link to post
Share on other sites

17 минут назад, Soong сказал:

 


Вот парень уже занялся разработкой. 
https://manwhocode.ru/opencart/index.php?route=product/product&product_id=42
Весьма не плохо, завтра, скоро и до ума доведет) 

так давно лежит в дополнениях

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

так давно лежит в дополнениях

где?

Link to post
Share on other sites

58 минут назад, Soong сказал:

где?

 

1 час назад, AWARO сказал:

в дополнениях

 

 

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
  • 1 year later...
В 28.05.2018 в 23:59, mpn2005 сказал:

Делал такое, правда давно. Для ОС 1.5

http://mpn-oc.org/laminat-001.html

До выкладывания модуля не дошло. Очень низкая востребованность.

То что нужно для нас!

Для ocStore 2.1.0.2.1 можете сделать?

Link to post
Share on other sites

8 минут назад, helen2014 сказал:

То что нужно для нас!

Для ocStore 2.1.0.2.1 можете сделать?

Опишите подробности в личку.

Какой именно товар и как продаётся. Упаковки, по доскам, погонные метры и т..д.

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

Опишите подробности в личку.

Какой именно товар и как продаётся. Упаковки, по доскам, погонные метры и т..д.

Ок!

Вечером все распишу.

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.