Не так давно начал работать с CMS Simpla, документации по ней особо нет, но есть форум, в котором тоже нет ответов на многие вопросы. На некоторые вопросы есть ответы, но не полные. Собственно в этой статье я хочу написать пошаговую инструкцию «Как добавлять новые поля в корзину заказа».
Шаг 1 (заведение новых полей в форму):
— открываем файл design/имя_вашего_шаблона/html/cart.tpl
— находим подобный код, после которого вы хотите добавить новые поля:
<label>Телефон*</label>
<input name="phone" type="text" value="{$phone|escape}" />
— заводим новые поля по аналогии:
<label>Новое поле*</label>
<input name="new-field" type="text" value="{$new-field|escape}" />
Шаг 2 (заведение новых полей в письмо):
— открываем файл design/имя_вашего_шаблона/html/email_order.tpl
— находим подобный код, после которого вы хотите добавить новые поля:
{if $order->phone}
<tr>
<td style="padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
Телефон
</td>
<td style="padding:6px; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
{$order->phone|escape}
</td>
</tr>
{/if}
— заводим новые поля по аналогии:
{if $order->new-field}
<tr>
<td style="padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
Новое поле
</td>
<td style="padding:6px; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
{$order->new-field|escape}
</td>
</tr>
{/if}
Шаг 3 (заведение новых полей в форму ответа, после отправки):
— открываем файл design/имя_вашего_шаблона/html/order.tpl
— находим подобный код:
{if $order->phone}
<tr>
<td>
Телефон
</td>
<td>
{$order->phone|escape}
</td>
</tr>
{/if}
— заводим новые поля по аналогии:
{if $order->new-field}
<tr>
<td>
Новое поле
</td>
<td>
{$order->new-field|escape}
</td>
</tr>
{/if}
Шаг 4 (заведение новых полей в админку):
— открываем файл /simpla/design/html/order.tpl
— находим подобный код, после которого вы хотите добавить новые поля:
<li>
<label class=property>Телефон</label>
<div class="edit_order_detail" style='display:none;'>
<input name="phone" class="simpla_inp " type="text" value="{$order->phone|escape}" />
</div>
<div class="view_order_detail">
{if $order->phone}
<span class="ip_call" data-phone="{$order->phone|escape}" target="_blank">{$order->phone|escape}</span>{else}{$order->phone|escape}{/if}
</div>
</li>
— заводим новые поля по аналогии:
<li>
<label class=property>Новое поле</label>
<div class="edit_order_detail" style='display:none;'>
<input name="new-field" class="simpla_inp " type="text" value="{$order->new-field|escape}" />
</div>
<div class="view_order_detail">
{if $order->new-field}
<span class="ip_call" data-new-field="{$order->new-field|escape}" target="_blank">{$order->new-field|escape}</span>{else}{$order->new-field|escape}{/if}
</div>
</li>
Шаг 5 (заведение новых полей в скрипты сайта):
— открываем файл simpla/OrderAdmin.php
— находим подобный код:
if($this->request->method('post'))
{
$order->id = $this->request->post('id', 'integer');
$order->name = $this->request->post('name');
$order->email = $this->request->post('email');
$order->phone = $this->request->post('phone');
$order->address = $this->request->post('address');
— заводим новые поля:
$order->new-field = $this->request->post('new-field');
— далее по файлу находим:
// Если новый заказ и передали get параметры
if(empty($order->id))
{
$order = new stdClass;
if(empty($order->phone))
$order->phone = $this->request->get('phone', 'string');
if(empty($order->name))
$order->name = $this->request->get('name', 'string');
if(empty($order->address))
$order->address = $this->request->get('address', 'string');
— добавляем:
if(empty($order->new-field))
$order->new-field= $this->request->get('new-field', 'string');
— дальше открываем файл viewCartView.php
— находим:
if(isset($_POST['checkout']))
{
$order = new stdClass;
$order->delivery_id = $this->request->post('delivery_id', 'integer');
$order->name = $this->request->post('name');
$order->email = $this->request->post('email');
$order->address = $this->request->post('address');
— добавляем:
$order->new-field = $this->request->post('new-field');
— дальше по файлу находим:
$this->design->assign('delivery_id', $order->delivery_id);
$this->design->assign('name', $order->name);
$this->design->assign('email', $order->email);
$this->design->assign('phone', $order->phone);
$this->design->assign('address', $order->address);
— добавляем:
$this->design->assign('new-field', $order->new-field);
— дальше по файлу находим:
// Данные пользователя
if($this->user)
{
$last_order = $this->orders->get_orders(array('user_id'=>$this->user->id, 'limit'=>1));
$last_order = reset($last_order);
if($last_order)
{
$this->design->assign('name', $last_order->name);
$this->design->assign('email', $last_order->email);
$this->design->assign('phone', $last_order->phone);
$this->design->assign('address', $last_order->address);
— добавляем:
$this->design->assign('new-field', $last_order->new-field);
— потом открываем файл api/Orders.php
— находим:
public function get_order($id)
{
if(is_int($id))
$where = $this->db->placehold(' WHERE o.id=? ', intval($id));
else
$where = $this->db->placehold(' WHERE o.url=? ', $id);
$query = $this->db->placehold("SELECT o.id, o.delivery_id, o.delivery_price, o.separate_delivery, o.payment_method_id, o.paid, o.payment_date, o.closed, o.discount, o.coupon_code, o.coupon_discount, o.date, o.user_id, o.name, o.address,
— добавляем после запятой наши поля по аналогии:
o.address, o.new-field
— дальше по файлу находим подобную запись:
// Выбираем заказы
$query = $this->db->placehold("SELECT o.id, o.delivery_id, o.delivery_price, o.separate_delivery, o.payment_method_id, o.paid, o.payment_date, o.closed, o.discount, o.coupon_code, o.coupon_discount, o.date, o.user_id, o.name, o.address,
— и аналогично, после запятой, добавляем наши поля:
o.address, o.new-field
Шаг 6 (заведение новых полей в Базу Данных):
Для этого вам нужно пройти в phpMyAdmin и добавить ваши новые поля в таблицу s_orders.
Вот и всё, надеюсь данная статья будет полезной для вас!
Автор: ювелир