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

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


Recommended Posts

Добрый день! 

 

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

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

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

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

Змінено користувачем Soong
Надіслати
Поділитися на інших сайтах


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

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

 

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

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

9 минут назад, spectre сказал:

 

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

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

Змінено користувачем Soong
Надіслати
Поділитися на інших сайтах


5 минут назад, spectre сказал:

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

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

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


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

Такое есть:

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

Змінено користувачем Soong
Надіслати
Поділитися на інших сайтах


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
Весьма не плохо, завтра, скоро и до ума доведет) 

Змінено користувачем Soong
Надіслати
Поділитися на інших сайтах


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

 


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

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

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


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')));

 

 

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


  • 1 year later...
В 28.05.2018 в 23:59, mpn2005 сказал:

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

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

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

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

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

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


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

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

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

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

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

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

13 минут назад, mpn2005 сказал:

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

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

Ок!

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

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


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

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

Important Information

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