SimplaCMS: вывод закупочной цены

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

  1. Откроем /simpla/design/html/product.tpl и добавим колонки Закупка и Прибыль для вариантов товаров:
<li class="variant_move"></li>
<li class="variant_name">Название варианта</li>	
<li class="variant_sku">Артикул</li>
<li class="variant_fprice">Закупка, {$currency->sign}</li>	
<li class="variant_price">Цена, {$currency->sign}</li>	
<li class="variant_discount">Старая, {$currency->sign}</li>	
<li class="variant_amount">Кол-во</li>
<li></li>
<li>Прибыль</li>
  1. Далее добавим поля для указания данных в цикл $product_variants:
<li class="variant_move"><div class="move_zone"></div></li>
<li class="variant_name">      <input name="variants[id][]"            type="hidden" value="{$variant->id|escape}" /><input name="variants[name][]" type="" value="{$variant->name|escape}" /> <a class="del_variant" href=""><img src="design/images/cross-circle-frame.png" alt="" /></a></li>
<li class="variant_sku">       <input name="variants[sku][]"           type="text"   value="{$variant->sku|escape}" /></li>
<li class="variant_fprice">     <input name="variants[fprice][]"         type="text"   value="{$variant->fprice|escape}" /></li>
<li class="variant_price">     <input name="variants[price][]"         type="text"   value="{$variant->price|escape}" /></li>
<li class="variant_discount">  <input name="variants[compare_price][]" type="text"   value="{$variant->compare_price|escape}" /></li>
<li class="variant_amount">    <input name="variants[stock][]"         type="text"   value="{if $variant->infinity || $variant->stock == ''}∞{else}{$variant->stock|escape}{/if}" />{$settings->units}</li>
<li>{if $variant->fprice} +{math equation = $variant->price - $variant->fprice} {$currency->sign}{/if}</li>
  1. Теперь добавим отображение закупки в список товаров, для этого откроем файл /simpla/design/html/products.tpl и добавим в цикл $product_variants:
<li {if !$variant@first}class="variant" style="display:none;"{/if}>
	<i title="{$variant->name|escape}">{$variant->name|escape|truncate:30:'…':true:true}</i>
	<input class="fprice" type="text" name="fprice[{$variant->id}]" value="{$variant->fprice}" />
	<input class="price {if $variant->compare_price>0}compare_price{/if}" type="text" name="price[{$variant->id}]" value="{$variant->price}" {if $variant->compare_price>0}title="Старая цена &mdash; {$variant->compare_price} {$currency->sign}"{/if} />{$currency->sign}  
	<input class="stock" type="text" name="stock[{$variant->id}]" value="{if $variant->infinity}∞{else}{$variant->stock}{/if}" />{$settings->units}
</li>
  1. Отображение сделали, теперь нужно поработать над функционалом. Откроем файл /api/Variants.php и обновим в двух местах SQL-запрос для функции get_variants:
$query = $this->db->placehold("SELECT v.id, v.product_id , v.price, v.fprice, NULLIF(v.compare_price, 0) as compare_price, v.sku, IFNULL(v.stock, ?) as stock, (v.stock IS NULL) as infinity, v.name, v.attachment, v.position
  1. Теперь откроем файл /simpla/ProductsAdmin.php и добавим возможность управления закупочной ценой на списке товаров:
// Обработка действий 	
if($this->request->method('post'))
{
// Сохранение цен и наличия
$prices = $this->request->post('price');
$fprices = $this->request->post('fprice');
$stocks = $this->request->post('stock'); 
		    foreach($fprices as $id=>$fprice)
{
	$this->variants->update_variant($id, array('fprice'=>$fprice));
}
foreach($prices as $id=>$price)
{
	$stock = $stocks[$id];
	if($stock == '∞' || $stock == '')
	$stock = null;
	$this->variants->update_variant($id, array('price'=>$price, 'stock'=>$stock));
}
Поделиться
Отправить
Запинить
 191   2019   simplacms
Популярное