Убираем ненужные шаги и поля или упрощаем регистрацию OpenCart
|Мы уже рассмотрели инструкции и мало того сделали их. На сейчас у нас красивая и простая форма оформления заказа без регистрации, без ничего лишнего. Также мы уже сделали простую форму оформления заказа с регистрацией и даже нашли специфику в этом шаге, а именно что после заполнения всей необходимой информации появляется кнопка «Изменить» при нажатии на которую возвращаются вся поля. Как это исправить мы тоже уже знаем. В этой же статье мы рассмотрим последний шаг который поможет нашим пользователям регистрироваться с удовольствием, и не заполнять кучи полей.
Как и в прошлой, третьей части я не буду писать очень подробную пошаговую инструкцию, а приведу общую, но для вас это не станет проблемой. Для людей которые только сейчас присоединились к нам расскажу. В первых двух частях мы использовали пошаговую инструкцию. А именно писали чтобы убрать такое-то поле делаем следующие изменения в таком файле, и в таком файле, проверяем что получилось. Но поскольку действия практически однотипные для всех разделов, как для оформления заказа так и для регистрации то в третей части, да и в этой мы будем писать общую инструкцию. А именно в самом начале составим план, а потом будет менять каждый файл по всему плану. Так будет проще и значительно сэкономит время.
План как исправить форму регистрации в OpenCart
Итак, план. У нас есть 5 полей в первой части:
- Имя — ничего не делаем
- Фамилия — делаем не обязательным, потому что много клиентов не любят оставлять фамилию, а для доставки по городу нам это и не особо нужно знать. Если понадобиться мы всегда можем уточнить по телефону
- Email — ничего не делаем
- Телефон — ничего не делаем, так как поседние два поля очень важны для контакта с клиентом.
- Факс — убираем, т.к. сегодня век технологий, Email, сканеров, PDF документов. Факса в компании днем с огнем не ссыщещь.
Второй блок данных посвящен адресу доставки, его как раз мы и будем править больше всего.
- Компания — если у вас бизнес расчитан на продажу или оказание услуг компанияем то оставляйте, если же конечному потребителю то удаляйте. Лично я буду оставлять из-за специфики бизнеса.
- ID компании — удаляем. Клиент не поймет что это такое, да и не нужно это нам.
- Адрес 1 — оставляем как есть.
- Адрес 2 — удаляем. Это поле никому не нужно, всю необходимую информацию можно поместить в предыдущее поле.
- Город — делаем не обязательным. Если надо сможем уточнить по телефону.
- Индекс — убираем. Сейчас все пользуются DHL, новой почтой, и другими службами, но не государственными, потому что они очень медленные и не надженые.
- Страна — удаляем. Мы эту информацию и так знаем. А если бизнес международный, то эту информацию вы можете узнать сами по городу или позвонив клиенту.
- Регион — та же история что и со страной. Удаляем.
Третий блок — пароли. Их мы оставляем без изменений по понятным причинам. С планом разобрались, давайте теперь приступать к изменениям? Поехали.
Удаляем не нужные шаги и поля в регистрации OpenCart файл шаблона.
Сам файл храниться по пути
1 | catalog/view/theme/Ваша тема/template/account/register.tpl |
Находим его, делаем резервную копию и давайте менять:
Делаем поля Фамилия, город, не обязательными, находим две строчки:
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 компании, Адрес 2, Идекс, Страна, регион/Область.
1 2 3 4 | <tr> <td><?php echo $entry_fax; ?></td> <td><input type="text" name="fax" value="<?php echo $fax; ?>" /></td> </tr> |
1 2 3 4 5 6 7 | <tr id="company-id-display"> <td><span id="company-id-required" class="required">*</span> <?php echo $entry_company_id; ?></td> <td><input type="text" name="company_id" value="<?php echo $company_id; ?>" /> <?php if ($error_company_id) { ?> <span class="error"><?php echo $error_company_id; ?></span> <?php } ?></td> </tr> |
1 2 3 4 | <tr> <td><?php echo $entry_address_2; ?></td> <td><input type="text" name="address_2" value="<?php echo $address_2; ?>" /></td> </tr> |
1 2 3 4 5 6 7 | <tr> <td><span id="postcode-required" class="required">*</span> <?php echo $entry_postcode; ?></td> <td><input type="text" name="postcode" value="<?php echo $postcode; ?>" /> <?php if ($error_postcode) { ?> <span class="error"><?php echo $error_postcode; ?></span> <?php } ?></td> </tr> |
Убираем выпадающее меню Страны и региона:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <tr> <td><span class="required">*</span> <?php echo $entry_country; ?></td> <td><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> <?php if ($error_country) { ?> <span class="error"><?php echo $error_country; ?></span> <?php } ?></td> </tr> <tr> <td><span class="required">*</span> <?php echo $entry_zone; ?></td> <td><select name="zone_id"> </select> <?php if ($error_zone) { ?> <span class="error"><?php echo $error_zone; ?></span> <?php } ?></td> </tr> |
1
Удаляем не нужные шаги и поля для регистрации OpenCart файл контроллера.
В отличии от шаблона в контролере мы будем менять не много. Файл находиться по пути
1 | catalog/controller/account/register.php |
Копируем его к себе на компьютер и не забываем сделать резервную копию. Итак, приступим.
Делаем поле Фамилия, имя не обязательным для заполнения, чистим файл от следующего кода
1 2 3 | if ((utf8_strlen($this->request->post['lastname']) < 1) || (utf8_strlen($this->request->post['lastname']) > 32)) { $this->error['lastname'] = $this->language->get('error_lastname'); } |
1 2 3 | if ((utf8_strlen($this->request->post['city']) < 2) || (utf8_strlen($this->request->post['city']) > 128)) { $this->error['city'] = $this->language->get('error_city'); } |
Убираем выпадающий список страна и регион/область.
1 2 3 4 5 6 7 | if ($this->request->post['country_id'] == '') { $this->error['country'] = $this->language->get('error_country'); } if ($this->request->post['zone_id'] == '') { $this->error['zone'] = $this->language->get('error_zone'); } |
На этом все. Если вы все сделали правильно то у вас должна быть картина как мы и планоровали. Но если у вас возникли трудности или вопросы напишите в комментариях или на email, попробую вам помочь.
Также рекомендую почитать другие статьи на ту же тему:
- Упрощаем заказ с регистрацией или увеличиваем конверсию OpenCart
- Убираем ненужные шаги оформления заказа, или быстрый заказ OpenCart
- Opencart изменить и удалить поля в «платежная информация». Эту инструкцию обязательно делать, но только после первого пункта
Добрый день! Странно, сделал Ваши рекомендации по удалению лишних полей, все отлично. А вот с регистрацией проблема. Не убирается звездочки с обязательных полей и error в файле убрал, а он все ровно выскакивает.
Скорее всего вы что-то пропускаете.
Andrey, здравствуйте.
выполнил все шаги по инструкции. Регистрация проходит, в админке добавляется новый покупатель и посетителю на почту приходит письмо об успешной регистрации, но после завершения регистрации посетитель попадает на страницу http://мой_сайт/index.php?route=account/register, на которой сообщение об ошибке:
Notice: Undefined variable: country_info in /home/мой_сайт/public_html/catalog/controller/account/register.php on line 372Notice: Undefined index: lastname in /home/мой_сайт/public_html/catalog/model/account/customer.php on line 14Notice: Undefined index: fax in /home/мой_сайт/public_html/catalog/model/account/customer.php on line 14Notice: Undefined index: lastname in /home/мой_сайт/public_html/catalog/model/account/customer.php on line 18Notice: Undefined index: address_2 in /home/мой_сайт/public_html/catalog/model/account/customer.php on line 18Notice: Undefined index: postcode in /home/мой_сайт/public_html/catalog/model/account/customer.php on line 18Notice: Undefined index: lastname in /home/мой_сайт/public_html/catalog/model/account/customer.php on line 61Notice: Undefined index: company in /home/мой_сайт/public_html/catalog/model/account/customer.php on line 64Notice: Undefined index: country_id in /home/мой_сайт/public_html/catalog/controller/account/register.php on line 27Notice: Undefined index: zone_id in /home/мой_сайт/public_html/catalog/controller/account/register.php on line 28Notice: Undefined index: postcode in /home/мой_сайт/public_html/catalog/controller/account/register.php on line 29Warning: Cannot modify header information — headers already sent by (output started at /home/мой_сайт/public_html/index.php:103) in /home/мой_сайт/public_html/system/engine/controller.php on line 28Warning: Cannot modify header information — headers already sent by (output started at /home/мой_сайт/public_html/index.php:103) in /home/мой_сайт/public_html/system/engine/controller.php on line 29
Удалите соответствующие поля из файлов controller.php, customer.php и register.php
Спасибо автор, все работает! Но в файле catalog/controller/account/register.php строки лучше не удалять, а закомментировать, на случай быстрого возвращения всего на свои места.
Я бы не рекомендовал комментировать, потому что эти комментарии отчетливо видно поисковым системам, конкурентам и.т.д.
Также, не надо исключать и человеческий фактор, когда можно что-то не так закоментировать. Лучше всего это создавать файл, в той же директории с названием register-so-vsemi-originalnimi-polyami.php и в случае чего откатиться назад намного быстрее. Просто переименованием файла
Каким образом комментарии в файле .php могут быть видны поисковым системам или конкурентам? PHP исполняется на веб-сервере, клиенту (будь то человек или поисковый бот) отдаётся результат выполнения. Комментарии не исполняются и к клиенту никак не смогут попасть.
Хорошая статья, но устаревшая. Как быть с 2.3.0.2.
Ведь захожу, а там и в помине такого нет.
Искал через поиск в файле register.tpl
catalog\view\theme\default\template\checkout есть все
Добрый день. Работаю на ocStore 2.3.0.2.3 открываю catalog/view/theme/Ваша тема/template/account/register.tpl, но там нет сторок, которые Вы прописали((, то есть, там нет строк, которые начинаются с *
Звёздочки с обязательных полей так и не смог убрать (как уже писал здесь в комментах кто-то в далёком 2014). В остальном справился…спасибо админу за сайт. Удачи.
Но если у вас возникли трудности или вопросы напишите в комментариях или на email, попробую вам помочь.
Прошу о помощь, т.к. не очень я с этими скриптами…заранее спасибо. Жду весточку.
Добрый день. Нашел где удалять строки template/account/register.tpl (у меня Ocstore 2.3.0) .строки удалились .В контроллере нашел но не те. в итоге все сломал.
Прочитал вашу статью. Все просто. Только у меня код совсем не такой))) У меня OC 2.1.0.1. Помогите, пожалуйста, навести порядок в регистрации?!
Добрый вечер. Почему после регистрации отображается пустая страница? В чем может быть проблема?