SimplaCMS: вывод закупочной цены
Потребовалось сделать вывод закупочной цены в админке. Итак, сначала добавим поля в шаблон в админке.
- Откроем /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>
- Далее добавим поля для указания данных в цикл $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>
- Теперь добавим отображение закупки в список товаров, для этого откроем файл /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="Старая цена — {$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>
- Отображение сделали, теперь нужно поработать над функционалом. Откроем файл /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
- Теперь откроем файл /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));
}