четверг, 20 июня 2013 г.

Упрощаем форму регистрации OpenCart 1 урок из 2

Сегодня будет изменять формы регистрации клиента (!) у вашем интернет-магазине. Как по мне, стандартная форма не очень привлекательная и много лишних полей. Нынче краткость ликует.
Перед тем, что бы начать что-то делать с этого урока уточню, он не закончен. Форма регистрации все будет изменена, но форма редактирование в профиле уже зарегистрировавшегося клиента остается стандартной, в которой остаются обязательные поля те, которые в этом уроке будут удалены или станут необязательными. Можно считать это 1 из 2 частей урока. Также в уроке не будет рассматриваться оформление css.
OpenCart 1.5.4.1

В уроке будем крутить:
\catalog\controller\account\register.php
\catalog\view\theme\default\template\account\register.tpl
\catalog\view\theme\default\template\checkout\register.tpl

1.
\catalog\controller\account\register.php
удаляем:
1.
$this->data['entry_fax'] = $this->language->get('entry_fax');

2.
$this->data['entry_company_id'] = $this->language->get('entry_company_id');

3.
$this->data['entry_address_2'] = $this->language->get('entry_address_2');

4.
if (isset($this->error['company_id'])) {
$this->data['error_company_id'] = $this->error['company_id'];
} else {
$this->data['error_company_id'] = '';
}

5.
if (isset($this->request->post['fax'])) {
$this->data['fax'] = $this->request->post['fax'];
} else {
$this->data['fax'] = '';
}

6.
if (isset($this->request->post['company_id'])) {
$this->data['company_id'] = $this->request->post['company_id'];
} else {
$this->data['company_id'] = '';
}

7.
if (isset($this->request->post['address_2'])) {
$this->data['address_2'] = $this->request->post['address_2'];
} else {
$this->data['address_2'] = '';
}
Удалим обработку форм с файла tpl:
1. Факс;
2. Company ID;
3. Адрес (продолжение);
4. 5. 6. 7. Вывод ошибки.

2.
\catalog\view\theme\default\template\account\register.tpl
удаляем:
1. Форма Факс
<tr>
<td><?php echo $entry_fax; ?></td>
<td><input type="text" name="fax" value="<?php echo $fax; ?>" /></td>
</tr>

2. Company ID:
<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>

3. Адрес (продолжение)
<tr>
<td><?php echo $entry_address_2; ?></td>
<td><input type="text" name="address_2" value="<?php echo $address_2; ?>" /></td>
</tr>

3.
\catalog\view\theme\default\template\checkout\register.tpl
удаляем:
1. Факс
  <?php echo $entry_fax; ?><br />
  <input type="text" name="fax" value="" class="large-field" />
  <br />
  <br />

2. Company ID
<div id="company-id-display"><span id="company-id-required" class="required">*</span> <?php echo $entry_company_id; ?><br />
  <input type="text" name="company_id" value="" class="large-field" />
  <br />
  <br />
</div>

3. Адрес (продолжение)
<?php echo $entry_address_2; ?><br />
<input type="text" name="address_2" value="" class="large-field" />
<br />
<br />

Урок закончен.

P.S.
Если вы хотите, что бы было 1. Основные данные - цифра 1. 2. и т.д. тогда зайдите в языковый файл
\catalog\language\russian\account\register.php
и редактируйте:
$_['text_your_details']    = '1. Основные данные';
$_['text_your_address']    = '2. Ваш адрес';
$_['text_newsletter']      = '4. Рассылка новостей';
$_['text_your_password']   = '3. Ваш пароль';
Плюс, если нужно, что бы формы были больше, тогда:
<td><span class="required">*</span> <?php echo $entry_lastname; ?></td>

в следующую строку вписать:
size="50"

на виходе:
<td><input type="text" size="50" name="lastname" value="<?php echo $lastname; ?>" />
все это крутить в файле:
\catalog\view\theme\default\template\account\register.tpl

26 комментариев:

  1. Прошу отписаться. кто будет делать этот урок у себя. Над уроком работал далеко от Интернета, вручную все писалось и проверялось только в общих чертах. поэтому если будут ошибки - будем решать оперативно.

    ОтветитьУдалить
  2. Анонимный03 июля, 2013 20:55

    Спасибо, пригодилось. Но еще пришлось править файл catalog/model/account/customer.php Программа сама выдаст ошибку, ориентируясь на нее нудно править.

    ОтветитьУдалить
    Ответы
    1. Анонимный03 июля, 2013 20:57

      ха-ха! Это конечно "нудно". Но в данном контексте имелось в виду "нужно"

      Удалить
    2. Какая ошибка? можно копипаст?

      Удалить
  3. А у меня почему-то вообще все поля на месте остались )хотя вроде все по инструкции, внимательно...

    ОтветитьУдалить
  4. Анонимный14 июля, 2013 14:03

    Спасибо большое ! Очень помогло, надеюсь будут следующие уроки

    ОтветитьУдалить
  5. Подтверждаю, в файле catalog/model/account/customer.php надо править ещё, на line 14 и 18 комментировать или удалять массивы не нужные.

    ОтветитьУдалить
  6. Как теперь сделать так чтобы был просто "Адрес", а не "Адрес 1"

    ОтветитьУдалить
    Ответы
    1. это делается в языковом файле (\catalog\language\russian\account\register.php)

      Удалить
  7. Здравствуйте, оформили регистрацию очень солидно..

    Вот бы ещё выпилить телефон обязательный..
    мои клиенты не всегда хотят регистрироваться из-за этого .

    ОтветитьУдалить
    Ответы
    1. А смысл? как вы свяжетесь с клиентом? если уже телефон не хотят уводить - тогда и мыло будет врятли присутствовать...

      Удалить
  8. мне не надо с ним связывать.
    Вся общение с клиентами по тикетам и почте,скайпу.
    Покажите как реализовать?

    ОтветитьУдалить
    Ответы
    1. Это все решается в файле: \catalog\controller\account\register.php
      Найдите строку с "$phone" или как он там обзывается и удалите, а лучше закоментируйте по аналогии 1 шага.

      Удалить
    2. Александр спасибо вашему уроку)
      Благодаря вам разобрался что да к чему..
      удалил телефон как и хотел.
      Правда ещё править тут пришлось
      catalog/model/account/customer.php

      так что стоит дополнить ваш урок....

      Удалить
    3. Блог готовиться к переезду на другую платформу. Так что тут уже уроки появляться не будут, да и версия ОС сейчас не 1.5.4.1.

      Удалить
  9. Здраствуйте. помогите пожалоста - неработает на сайте форма регистрации - человек заполняет полностю форму нажимает (продолжить) и его тупо переносит на вех странице-и ничего непроисходит. помогите пожалоста

    ОтветитьУдалить
    Ответы
    1. Добрый вечер.
      Рекомендую вернуть старую версию всех файлов.
      У вас что то с обработчиком отправки формы.

      Удалить
    2. Я уже так делал но все по сатрому (((

      Удалить
    3. Еслы сможете посмотрите пожалоста
      www.biserna-ledy.com.ua

      Удалить
    4. У вас кривой файл шаблона registration и может еще 1001 ошибка в файлах шаблона. Используйте стандартный шаблон или обратитесь к специалистам, кто сможет поправить Ваш шаблон.

      Удалить
    5. так ета форма регистрации взяти с стандартного шаблона ето просто переделаний стандартний шаблон на такой как Вы видите

      Удалить
    6. ДА вы же кеп очевидность) в теме написано "Упрощаем форму регистрации". Ясно ведь что это стандартный шаблон

      Удалить
  10. Анонимный20 января, 2014 03:25

    Notice: Undefined index: fax in
    \www\1\catalog\model\account\customer.php on line 14Notice: Undefined index: company in \www\1\catalog\model\account\customer.php on line 18Notice: Undefined index: company_id in
    \www\1\catalog\model\account\customer.php on line 18Notice: Undefined index: address_2 in \www\1\catalog\model\account\customer.php on line 18Warning: Cannot modify header information - headers already sent by (output started
    \www\1\index.php:104) in \www\1\system\engine\controller.php on line 28Warning: Cannot modify header information - headers already sent by (output started at \www\1\index.php:104) in
    \www\1\system\engine\controller.php on line 29

    ОтветитьУдалить
    Ответы
    1. Анонимный20 января, 2014 15:04

      У всех файлах удалите или лучше закоментируйте все, где есть слово "fax"

      Удалить
    2. Анонимный22 января, 2014 07:51

      Не помогло

      Удалить
  11. У меня opencart 2.0
    Все сделал, все получилось. Правда в 2,0 код немного отличается от примера в статье, однако догадался, сделал.
    Спасибо.

    ОтветитьУдалить