Pull to refresh

Добавление полей в корзине Simpla CMS

Не так давно начал работать с 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 и simpla/design/html/email_order_admin.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');

— дальше открываем файл view\CartView.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.

Вот и всё, надеюсь данная статья будет полезной для вас!
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.