OpenCart - модули, настройки, дизайнерские решения, шаблоны. Opencart оформление заказа убрать лишние поля


модули, настройки, дизайнерские решения, шаблоны : OpenCart — убираем обязательные поля в оформлении заказа

Не так давно мы рассмотрели способ удаления лишних шагов при оформлении заказа, вместо шести мы оставили всего лишь 2 шага. Сегодня же разберемся с вопросом о полях, которые помечены звездочкой, с вопросом об обязательных полях. Они обязательны для заполнения, но порой в них просто нет надобности, так что мы постараемся их скрыть, чтобы упростить оформление заказа.

Что мы можем предпринять для осуществления задуманного? Мы можем скрыть поля и удалить проверку на ошибки касательно этих полей.

OpenCart содержит два файла, отвечающих за ввод персональных данных в первом шаге заказа:

 catalog/view/theme/default/template/checkout/register.tpl  — при оформлении заказа с регистрацией

 catalog/view/theme/default/template/checkout/guest.tpl  - при гостевом оформлении заказа

Мы рассмотри процесс удаления ненужных для нас полей на примере оформления заказа с регистрацией, но для гостевой регистрации изменения будут идентичны. Редактировать мы будем следующее:

Все изменения рассмотрены на версии 1.5.3.1, на дефолтной теме.

Наши действия: 

1. Перестрахуемся и сохраним файл  catalog/view/theme/default/template/checkout/register.tpl   (всегда может что-то пойти не так, или произведенные действия не возымеют эффекта и т.д.).

2. Факс. В вышеупомянутом файле ищем строки касающиеся факса (19-22 строки):

<?php echo $entry_fax; ?><br /> <input type="text" name="fax" value="" /> <br /> <br />

И либо удаляем их, либо комментируем. Я обычно выбираю второй способ, если та или иная возможность мне еще может понадобиться в будущем.

3. Компания и Company ID . Находим строки о компании и поступаем с ними также, как и с факсом — удаляем или комментируем (приблизительно строки 36-39, 53-57):

<?php echo $entry_company; ?><br /> <input type="text" name="company" value="" /> <br /> <br />

и

<div><span>*</span> <?php echo $entry_company_id; ?><br />   <input type="text" name="company_id" value="" />   <br />   <br />   </div>

4. Почтовый Индекс. Все предыдущие поля не были обязательными, с индексом ситуация немного иная, так как это поле обязательно для заполнения и помечено в файле как «required». Поэтому, найдя строки с индексом (75-78), мы их закомментируем

<span>*</span><?php echo $entry_postcode; ?><br /> <input type="text" name="postcode" value="<?php echo $postcode; ?>" /> <br /> <br />

и для того, чтобы разобраться с ошибками мы будем также править файлы в контроллере:

 catalog/controller/checkout/register.php  - заказ с регистрацией,

 catalog/controller/checkout/guest.php  - гостевое оформление заказа.

Открываем  register.php и ищем строку с почтовым индексом, комментировать мы будем только его, поскольку все остальные поля, скрытые нами, необязательны для заполнения (приблизительно 23я и 50-54 строки):

$this->data['entry_postcode'] = $this->language->get('entry_postcode');
if (isset($this->session->data['shipping_postcode'])) { $this->data['postcode'] = $this->session->data['shipping_postcode']; } else { $this->data['postcode'] = ''; }

5. Для того же, чтобы объединить два поля с «именем, отчеством» и «фамилией» в одно поле, следует в файле catalog/view/theme/default/template/checkout/register.tpl

закомментировать строки (строки 7-10):

<span>*</span><?php echo $entry_lastname; ?><br /> <input type="text" name="lastname" value="" /> <br /> <br />

Мы убрали второе поле, для ввода фамилии, теперь для того, чтобы изменить название поля с «Имя, Отчество» на «ФИО», открываем файл catalog/language/russian/checkout/checkout.php и вносим изменения:

вместо

$_['entry_firstname'] = 'Имя, Отчество:';

прописываем

$_['entry_firstname'] = 'ФИО:';

Поля приобрели необходимый вид и структуру, но обработчик не пропустит покупателя дальше второго шага, так как поле с фамилией было обязательным для заполнения. Снова обращаемся к файлу  catalog/controller/checkout/register.php и комментируем строки (приблизительно 13 и 138-140):

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

Поскольку мы изменяем оформление заказа с регистрацией, то нам теперь необходимо открыть файл catalog/model/account/customer.php и 14 строку:

$this->db->query("INSERT INTO " . DB_PREFIX . "customer SET store_id = '" . (int)$this->config->get('config_store_id') . "', firstname = '" . $this->db->escape($data['firstname']) . "', lastname = '" . $this->db->escape($data['lastname']) . "', email = '" . $this->db->escape($data['email']) . "', telephone = '" . $this->db->escape($data['telephone']) . "', fax = '" . $this->db->escape($data['fax']) . "', password = '" . $this->db->escape(md5($data['password'])) . "', newsletter = '" . (isset($data['newsletter']) ? (int)$data['newsletter'] : 0) . "', customer_group_id = '" . (int)$customer_group_id . "', ip = '" . $this->db->escape($this->request->server['REMOTE_ADDR']) . "', status = '1', approved = '" . (int)!$customer_group_info['approval'] . "', date_added = NOW()");

изменить на

$this->db->query("INSERT INTO " . DB_PREFIX . "customer SET store_id = '" . (int)$this->config->get('config_store_id') . "', firstname = '" . $this->db->escape($data['firstname']) . /*"', lastname = '" . $this->db->escape($data['lastname']) .*/ "', email = '" . $this->db->escape($data['email']) . "', telephone = '" . $this->db->escape($data['telephone']) . "', fax = '" . $this->db->escape($data['fax']) . "', password = '" . $this->db->escape(md5($data['password'])) . "', newsletter = '" . (isset($data['newsletter']) ? (int)$data['newsletter'] : 0) . "', customer_group_id = '" . (int)$customer_group_id . "', ip = '" . $this->db->escape($this->request->server['REMOTE_ADDR']) . "', status = '1', approved = '" . (int)!$customer_group_info['approval'] . "', date_added = NOW()");

Также меняем 18ю строку:

$this->db->query("INSERT INTO " . DB_PREFIX . "address SET customer_id = '" . (int)$customer_id . "', firstname = '" . $this->db->escape($data['firstname']) . "', lastname = '" . $this->db->escape($data['lastname']) . "', company = '" . $this->db->escape($data['company']) . "', company_id = '" . $this->db->escape($data['company_id']) . "', tax_id = '" . $this->db->escape($data['tax_id']) . "', address_1 = '" . $this->db->escape($data['address_1']) . "', address_2 = '" . $this->db->escape($data['address_2']) . "', city = '" . $this->db->escape($data['city']) . "', postcode = '" . $this->db->escape($data['postcode']) . "', country_id = '" . (int)$data['country_id'] . "', zone_id = '" . (int)$data['zone_id'] . "'");

на

$this->db->query("INSERT INTO " . DB_PREFIX . "address SET customer_id = '" . (int)$customer_id . "', firstname = '" . $this->db->escape($data['firstname']) . /*"', lastname = '" . $this->db->escape($data['lastname']) .*/ "', company = '" . $this->db->escape($data['company']) . "', company_id = '" . $this->db->escape($data['company_id']) . "', tax_id = '" . $this->db->escape($data['tax_id']) . "', address_1 = '" . $this->db->escape($data['address_1']) . "', address_2 = '" . $this->db->escape($data['address_2']) .

annadvarri.blogspot.com

модули, настройки, дизайнерские решения, шаблоны : OpenCart — оформление заказа — убираем ненужные шаги

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

Что видит покупатель, бросив товар в корзину и нажав кнопку «Оформление заказа»? Он получает 6 шагов оформления заказа, которые могут повлиять на то, что покупатель отправится за нужным ему товаром в другой магазин, у которого покупка осуществляется проще и быстрее — никому не хочется тратить много времени на «бумажную работу». Итак, что мы можем предпринять для того, чтобы упростить заказ и тем самым облегчить заказ нашим покупателям? Мы можем скрыть ненужные шаги и сделать быстрое оформление заказа.

Способ протестирован на версии 1.5.3.1.

1. Оформление заказа без регистрации.

Первое, что можно сделать — разобраться с первым шагом, на котором покупателю предложено либо зарегистрироваться, либо оформить заказ без регистрации. По умолчанию отмечена радиокнопка с регистрацией, для того же, чтобы по умолчанию покупателю сразу было предложено оформить заказ без регистрации, открываем файлcatalog/view/theme/default/template/checkout/login.tpl и ищем код (с 6 строки ):

<input type="radio" name="account" value="register" checked="checked"/> <?php } else { ?> <input type="radio" name="account" value="register" /> <?php } ?> <b><?php echo $text_register; ?></b></label> <br /> <?php if ($guest_checkout) { ?> <label for="guest"> <?php if ($account == 'guest') { ?> <input type="radio" name="account" value="guest" checked="checked" /> <?php } else { ?> <input type="radio" name="account" value="guest" />

и меняем его на

<input type="radio" name="account" value="register" /> <?php } else { ?> <input type="radio" name="account" value="register" /> <?php } ?> <b><?php echo $text_register; ?></b></label> <br /> <?php if ($guest_checkout) { ?> <label for="guest"> <?php if ($account == 'guest') { ?> <input type="radio" name="account" value="guest" checked="checked" /> <?php } else { ?> <input type="radio" name="account" value="guest" checked="checked" />

Теперь, если мы проверим начало оформления заказа, то увидим, что отмечена радиокнопка «Оформить заказ без регистрации».

НО. Но если вы хотите, чтобы покупатель, нажав на кнопку «Оформление заказа», сразу переходил к вводу персональных данных, то можно просто аннулировать первый шаг. Для этого открываем вышеупомянутый файл - catalog/view/theme/default/template/checkout/login.tpl и в самом начале прописываем скрипт:

<script language="Javascript" type="text/javascript"> $(document).ready(function(){ $('#button-account').trigger('click'); }); </script>

Теперь движок будет игнорировать первый шаг и сразу направлять покупателя ко второму шагу. Осталось лишь в таблице стилей скрыть этот шаг. Открываем файл \catalog\view\theme\default\stylesheet\stylesheet.css и добавляем

#checkout { display:none; }

Теперь покупатель из корзины, минуя первый шаг, сразу попадает на шаг, в котором он должен ввести персональную информацию.

2. Уберем шаги 3 и 4, касающиеся доставки.

Открываем файл system/library/cart.php (в корневой папке сайта) и находим строку (приблизительно 381 строка)

public function hasShipping() {

сразу после нее добавляем

и строки примут вот такой вид:

public function hasShipping() { return false; $shipping = false;

Теперь у нас осталось три шага: 2, 5 и 6.

3. Убираем шаг с оплатой. Если в вашем магазине не предусмотрен выбор вариантов оплаты (к примеру, оплата только при доставке), будет вполне логично скрыть шаг, касающийся оплаты. Для этого открываемcatalog/view/theme/default/template/checkout/payment_method.tpl и точно также, как мы это делали ранее, добавляем в самом начале документа скрипт:

<script language="Javascript" type="text/javascript"> $(document).ready(function(){ $('#button-payment-method').trigger('click'); }); </script>

В этом же файле, ищем строку

<input type="checkbox" name="agree" value="1"/>

и меняем ее на

<input type="checkbox" name="agree" value="1" checked="checked" />

Снова обращаемся к таблице стилей — \catalog\view\theme\default\stylesheet\stylesheet.css, и скрываем отображение пятого шага:

#payment-method { display:none; }

У нас осталось всего два шага: Профиль & Платежная информация и Подтверждение заказа.

Дать им другие названия можно в языковом файле catalog\language\russian\checkout\checkout.php.Нижеописанный способ изобретен не мной, благодарность за него пользователю ingenerks.

annadvarri.blogspot.com

Opencart — убрать страну в оформлении заказа — Всё о web

Вариант первый: Вам нужно совсем убрать выбор страны и региона из оформления заказа. Для этого открываем шаблон гостевого заказа: /catalog/view/theme/default/template/checkout/guest.tpl

Сперва убираем страну, находим место её генерации:

<div> <label for="input-payment-country"><?php echo $entry_country; ?></label> <select name="country_id"> <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> </div>

      <div>

        <label for="input-payment-country"><?php echo $entry_country; ?></label>

        <select name="country_id">

          <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>

      </div>

Чтобы не модифицировать контроллер, меняем выбор страны на скрытый инпут, в который заносим значение по умолчанию:

<div> <label for="input-payment-country"><?php echo $entry_country; ?></label> <input type="text" value="176" name="country_id"> </div>

      <div>

        <label for="input-payment-country"><?php echo $entry_country; ?></label>

  <input type="text" value="176" name="country_id">

      </div>

Далее убираем выбор региона так же заменяя селект:

<div> <label for="input-payment-zone"><?php echo $entry_zone; ?></label> <select name="zone_id"> </select> </div>

      <div>

        <label for="input-payment-zone"><?php echo $entry_zone; ?></label>

        <select name="zone_id">

        </select>

      </div>

на скрытый инпут:

<div> <label for="input-payment-zone"><?php echo $entry_zone; ?></label> <input type="text" value="2761" name="zone_id"> </div>

      <div>

        <label for="input-payment-zone"><?php echo $entry_zone; ?></label>

        <input type="text" value="2761" name="zone_id">

      </div>

Эти же операции нужно проделать для шаблона регистрации пользователя: /catalog/view/theme/default/template/account/register.tpl

Вариант второй: Вам нужно убрать какую-либо страну из выпадающего списка. Для этого нужно открыть базу данных, например, через phpmyadmin, найти таблицу oc_country. В этой таблице содержится список всех стран. Удалите из этой таблицы все ненужные страны и они не будут содержаться в элементе выбора страны. Важно: после того как страны удалены, обязательно нужно очистить папку с кэшем /system/cache/

Вариант третий: в списке выбора страны нужно оставить только несколько нужных стран.Для этого придётся либо удалить все ненужные страны из таблицы oc_country, либо вручную переписать их в инпут выбора страны. Например, чтобы оставить только Россию и Украину, нужно заменить:

<select name="country_id"> <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>

        <select name="country_id">

          <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>

На:

<select name="country_id"> <option value="176">Россия</option> <option value="220">Украина</option> </select>

        <select name="country_id">

          <option value="176">Россия</option>

          <option value="220">Украина</option>

        </select>

где country_id подсмотрен из таблицы oc_country.

Поделиться "Opencart — убрать страну в оформлении заказа"

Рекомендуем

allwebstuff.info


Prostoy-Site | Все права защищены © 2018 | Карта сайта