Opencart изменить и удалить поля в «платежная информация»

В статье убираем ненужные шаги оформления заказа, или быстрый заказ OpenCart мы рассмотрели подробную инструкцию как удалить не нужные поля, как сделать некоторые из них не обязательными для заполнения когда клиент оформляет заказ без регистрации. В статье Упрощаем заказ с регистрацией или увеличиваем конверсию OpenCart мы рассмотрели вторую часть изменений которые необходимо внести в движок OpenCart, а именно когда клиент постоянный и хочет зарегестрироваться. Но тогда мы столкнулись с трудностью, которая связанна с тем что когда клиент хочет поменять адрес доставки и нажимает на кнопку «Изменить» то ему снова выпадают все теже поля. Давайте исправим это недоразумение.

Статья по умолчанию рассчитана на то что вы уже сделали предыдущих два шага, поэтому в этой части мы не будем расписывать все подробно, поскольку эта инструкция будет уж сильно похожа на предыдущие.

Итак, нам снова дают 10 полей:

  1. Имя — ничего не меняем
  2. Фамилия — убираем обязательность заполнения. Эти данные, если необходимо мы можем выяснить по телефону
  3. Компания — ничего не делаем
  4. ID компании — убираем, клиент не понимает что это такое
  5. Адрес — ничего не делаем
  6. Адрес продолжение — убираем. Все данные можно поместить в предыдущем шагу, а именно на заполнении «Адреса». Лишнее поле будет только мешать и вводить в заблуждение клиента
  7. Город — делаем не обязательным
  8. Индекс — убираем. Если что сможем выяснить по телефону, а лучше найдем сами, ведь эта информация с легкостью достается из интернета
  9. Страна — убираем. Этим полем никто не пользуется. Да и мы можем выяснить это по городу.
  10. Область — как и в случае с страной мы можем это выяснить по городу, ну или по телефону.

Как всегда будем менять не один а сразу несколько файлов. В отличии от предыдущих инструкций, эту я буду выкладывать в упрощенном варианте, не пошаговом, а сразу все изменения в одном файле. Это сделано для того чтобы вы не повторяли одну и туже работу много раз, да и в принципе вы уже сами научились профессионально менять поля. Итак, поехали:

Изменяем файл шаблона Платежной информации OpenCart

В первую очередь будем менять файл шаблона который находиться по пути:

catalog/view/theme/Ваша тема/template/checkout/payment_address.tpl

Удаляем из него такие строки, они отвечают за вывод страны и области

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<tr>
      <td><span class="required">*</span> <?php echo $entry_country; ?></td>
      <td><select name="country_id" class="large-field">
          <option value=""><?php echo $text_select; ?></option>
          <?php foreach ($countries as $country) { ?>
          <?php if ($country['country_id'] == $country_id) { ?>
          <option value="<?php echo $country['country_id']; ?>" selected="selected"><?php echo $country['name']; ?></option>
          <?php } else { ?>
          <option value="<?php echo $country['country_id']; ?>"><?php echo $country['name']; ?></option>
          <?php } ?>
          <?php } ?>
        </select></td>
    </tr>
    <tr>
      <td><span class="required">*</span> <?php echo $entry_zone; ?></td>
      <td><select name="zone_id" class="large-field">
        </select></td>
    </tr>

Чтобы убрать зведочки перед обязательными полями «Фамилия», «город» найдите два куска кода:

1
<td><span class="required">*</span> <?php echo $entry_lastname; ?></td>
1
 <td><span class="required">*</span> <?php echo $entry_city; ?></td>

И удалите из них такой участок:

1
<span class="required">*</span>

Убираем «Адрес (продолжение)», «ID компании», «Индекс», чистим следующие

1
2
3
4
<tr>
      <td><?php echo $entry_address_2; ?></td>
      <td><input type="text" name="address_2" value="" class="large-field" /></td>
    </tr>
1
2
3
4
<tr>
      <td><span id="payment-postcode-required" class="required">*</span> <?php echo $entry_postcode; ?></td>
      <td><input type="text" name="postcode" value="" class="large-field" /></td>
    </tr>
1
2
3
4
5
</tr>
    <tr>
      <td><span class="required">*</span> <?php echo $entry_company_id; ?></td>
      <td><input type="text" name="company_id" value="" class="large-field" /></td>
    </tr>

Изменяем файл контроллера платежной информации OpenCart

Это файл храниться по маршруту

1
catalog/controller/checkout/payment_address.php

Находим его и копируем к себе на компьютер, попутно не забывая создать резервную копию.

Чтобы убрать вывод страны и региона удаляем такое:

1
2
3
4
5
6
7
if ($this->request->post['country_id'] == '') {
					$json['error']['country'] = $this->language->get('error_country');
				}
 
				if ($this->request->post['zone_id'] == '') {
					$json['error']['zone'] = $this->language->get('error_zone');
				}
1
$country_info = $this->model_localisation_country->getCountry($this->request->post['country_id'])
1
2
$this->session->data['payment_country_id'] = $this->request->post['country_id'];
$this->session->data['payment_zone_id'] = $this->request->post['zone_id'];
1
2
3
4
5
6
7
8
9
10
11
12
if ($country_info) {
					if ($country_info['postcode_required'] && (utf8_strlen($this->request->post['postcode']) < 2) || (utf8_strlen($this->request->post['postcode']) > 10)) {
						$json['error']['postcode'] = $this->language->get('error_postcode');
					}
 
					// VAT Validation
					$this->load->helper('vat');
 
					if ($this->config->get('config_vat') && !empty($this->request->post['tax_id']) && (vat_validation($country_info['iso_code_2'], $this->request->post['tax_id']) == 'invalid')) {
						$json['error']['tax_id'] = $this->language->get('error_vat');
					}						
				}

Убираем обязательное заполнение фамилии и города:

1
2
3
if ((utf8_strlen($this->request->post['lastname']) < 1) || (utf8_strlen($this->request->post['lastname']) > 32)) {
					$json['error']['lastname'] = $this->language->get('error_lastname');
				}
1
2
3
if ((utf8_strlen($this->request->post['city']) < 2) || (utf8_strlen($this->request->post['city']) > 32)) {
					$json['error']['city'] = $this->language->get('error_city');
				}

Чтобы после изменений которые мы повносили не выскакивали ошибки нам надо будет поменять еще один файл.

Изменяем файл address.php чтобы не выскакивали ошибки в платежной информации

Данный файл находить по пути,

1
catalog/мodel/account/address.php

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

Ошибка ниже может выскакивать по причине того что мы удалили страну и область.

1
2
3
SyntaxError: JSON Parse error: Unrecognized token '<'
OK
<b>Notice</b>: Undefined index: zone_id in <b>/home/www/catalog/model/account/address.php</b> on line <b>4</b><b>Notice</b>: Undefined index: country_id in <b>/home/www/catalog/model/account/address.php</b> on line <b>4</b>[]

Чтобы исправить это удалите следующие:

1
, zone_id = '" . (int)$data['zone_id'] . "', country_id = '" . (int)$data['country_id'] . "

После того как мы удалили поля Индекс и адрес продолжение у нас выскакивает ошибка при изменении адреса:

1
2
3
SyntaxError: JSON Parse error: Unrecognized token '<'
OK
<b>Notice</b>: Undefined index: address_2 in <b>/home/www/catalog/model/account/address.php</b> on line <b>4</b><b>Notice</b>: Undefined index: postcode in <b>/home/www/catalog/model/account/address.php</b> on line <b>4</b>[]

Устраняем ее удаляя следующий участок из четвертой строчки:

1
, address_2 = '" . $this->db->escape($data['address_2']) . "', postcode = '" . $this->db->escape($data['postcode']) . "'

На этом мы закончили. Все что запланированно мы сделали. Но это только одна из работ которую нужно было сделать чтобы увеличить конверсию OpenCart. Если у вас остались вопросы вы можете их задать в комментариях или на почту. Также рекомендую прочитать следующие статьи на туже тематику:

 

загрузка...
3 комментария

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *