Moushe.ru

Блог обо всём

OpenCart изменяем регистрацию (1 часть)



Один из минусов OpenCart’а это очень нудная регистрация, будем исправлять этот недостаток. В этом уроке мы укоротим регистрацию личного кабинета.

До:                                                       После:

1. Определим что нам нужно вырезать, на мой взгляд лишнее – Факс, Компания, Адрес 2, Индекс, Страна, Регион, значит их мы и удалим.

2. Откроем create.php (..\catalog\controller\account) и удаляем:

if (isset($this->error['postcode'])) {
$this->data['error_postcode'] = $this->error['postcode'];
} else {
$this->data['error_postcode'] = '';
}

if (isset($this->error[‘country’])) {
$this->data[‘error_country’] = $this->error[‘country’];
} else {
$this->data[‘error_country’] = »;
}

if (isset($this->error[‘zone’])) {
$this->data[‘error_zone’] = $this->error[‘zone’];
} else {
$this->data[‘error_zone’] = »;
}

Ниже удалим:

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

if (isset($this->request->post[‘company’])) {
$this->data[‘company’] = $this->request->post[‘company’];
} else {
$this->data[‘company’] = »;
}

if (isset($this->request->post[‘address_2’])) {
$this->data[‘address_2’] = $this->request->post[‘address_2’];
} else {
$this->data[‘address_2’] = »;
}

if (isset($this->request->post[‘postcode’])) {
$this->data[‘postcode’] = $this->request->post[‘postcode’];
} else {
$this->data[‘postcode’] = »;
}

if (isset($this->request->post[‘country_id’])) {
$this->data[‘country_id’] = $this->request->post[‘country_id’];
} else {
$this->data[‘country_id’] = $this->config->get(‘config_country_id’);
}

if (isset($this->request->post[‘zone_id’])) {
$this->data[‘zone_id’] = $this->request->post[‘zone_id’];
} else {
$this->data[‘zone_id’] = ‘FALSE’;
}

$this->load->model(‘localisation/country’);

$this->data[‘countries’] = $this->model_localisation_country->getCountries();

Ещё ниже удалим:

$this->load->model('localisation/country');

$country_info = $this->model_localisation_country->getCountry($this->request->post[‘country_id’]);

if ($country_info && $country_info[‘postcode_required’]) {
if ((strlen(utf8_decode($this->request->post[‘postcode’])) < 2) || (strlen(utf8_decode($this->request->post[‘postcode’])) > 10)) {
$this->error[‘postcode’] = $this->language->get(‘error_postcode’);
}
}

if ($this->request->post[‘country_id’] == ‘FALSE’) {
$this->error[‘country’] = $this->language->get(‘error_country’);
}

if ($this->request->post[‘zone_id’] == ‘FALSE’) {
$this->error[‘zone’] = $this->language->get(‘error_zone’);
}

3. Откроем файл create.tpl (..\catalog\view\theme\default\template\account) и удалим этот код:

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

потом этот:

<tr>
<td width="150"><?php echo $entry_company; ?></td>
<td><input type="text" name="company" value="<?php echo $company; ?>" /></td>
</tr>

потом этот:

<tr>
<td><?php echo $entry_address_2; ?></td>
<td><input type="text" name="address_2" value="<?php echo $address_2; ?>" /></td>
</tr>

потом этот:

<tr>
<td id="postcode"><?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>

потом этот:

<tr>
<td><span class="required">*</span> <?php echo $entry_country; ?></td>
<td><select name="country_id" id="country_id" onchange="$('select[name=\'zone_id\']').load('index.php?route=account/create/zone&country_id=' + this.value + '&zone_id=<?php echo $zone_id; ?>'); $('#postcode').load('index.php?route=account/create/postcode&country_id=' + this.value);">
<option value="FALSE"><?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>

Внизу удалим этот скрипт:

<script type="text/javascript"><!--
$('select[name=\'zone_id\']').load('index.php?route=account/create/zone&country_id=<?php echo $country_id; ?>&zone_id=<?php echo $zone_id; ?>');
$('#postcode').load('index.php?route=account/create/postcode&country_id=<?php echo $country_id; ?>');
//--></script>

На этом наш урок окончен. Следите за новостями.

61 Комментарий

  1. Привет, хотел сказать спасибо), и что оч полезные темы пишешь для опенкарта. И хотел бы отписать свое мнение по поводу регистрации. По мне так, пользователь невероятно ленив, ему не хочется помнить свой пароль, заводить учетную запись, заполняя эти нудные строки.
    Я выбрал следующее:

    catalog/controller/checkout/shipping.php

    тут

    $this->redirect(HTTPS_SERVER . 'index.php?route=account/login');

    заменяем на

    $this->redirect(HTTPS_SERVER . 'index.php?route=checkout/guest_step_1');

    Получаем, что при нажатии на «Оформить» покупателя перекидывает на гостевой заказ. Форму заполнения граф для заказа выпиливаем, как указано в статье.

    Делаем 4 графы

    Имя
    Емаил
    Телефон

    Адрес доставки (причем делаем его не обязательным для заполнения)

    Тут можно подредактировать название этих граф, а то Адрес 1. вообще не айс)
    cataloglanguagerussiancheckout
    Графу адреса, надо сделать подлиннее.

    Эта модель конечно не для всех типов товара) Если что то дорогое и с доставкой, то лучше так, ведь менеджер все равно будет связываться с клиентом и уточнять доставку.

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

    • Владислав Храмцов
      vkontakte.ru Владислав Храмцов

      24.11.2011 at 20:04

      У меня было в планах написать в одном из следующих уроках об этом, но видимо уже ненужно 🙂

  2. kvartnikstroy.ru

    24.11.2011 at 13:16

    Огромное спасибо!
    Все работает!
    У меня город и адрес пропал, остались только ФИО, email, телефон и пароль..
    Так еще лучше. Я не отслеживал по коду а удалял от 1 строчки поста до последней строчки. Видимо и захватил Город и Адрес.
    Владислав только одна проблема:
    Когда клиент выбирает при оформлении товара «Без регистрации личного кабинета» вылазит старая занудная форма …Надо бы там тоже исправить!

  3. Для гостевого режима править надо
    catalogcontrollercheckoutguest_step_1.php

    • антон

      24.11.2011 at 22:16

      Здравствуйте Олег можете написать что конкретно надо править
      для гостевого режима
      \catalog\controller\checkout\guest_step_1.php
      пытался удалять но постоянно выходят ошибки

  4. kvartnikstroy.ru

    24.11.2011 at 14:18

    Еще вылез косяк: при переходе на 2 шаг ( после заполнения всех полей) появляются по всему сайту крякозябы, после обновления страницы -исчезают

  5. kvartnikstroy

    24.11.2011 at 21:29

    Владислав по wordpress вопрос. Как сделать дату в календаре текущую, чтобы квадратиком красным выделялась…Знал и делал, но забыл:-))
    Спасибо!

  6. Владислав Храмцов
    vkontakte.ru Владислав Храмцов

    24.11.2011 at 22:04

    А я и не знал, и не делал — поэтому не смогу ничего сказать 🙁

  7. Могу и я описать на Вашем блоге, инструкцию, как в гест степе все порезать с кликаельными ссылками на мой ресурс))

    И кстать, важная информация для админа!!!

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

    Неприятно=(

    • Владислав Храмцов
      vkontakte.ru Владислав Храмцов

      24.11.2011 at 22:22

      Спасибо что сказали, счас порежем, а насчёт статьи я только за. 🙂

  8. тогда завтра напишу и скиньте мне на емаил ваш контакт, желательно аську

  9. сп за урок! где можно изменить размеры окошек при регисрации ?сам найти не смог

    • Владислав Храмцов
      vkontakte.ru Владислав Храмцов

      18.12.2011 at 21:44

      в самом файле create.tpl

  10. всё остальное меняется но только не окошки ):

  11. Владислав Храмцов
    vkontakte.ru Владислав Храмцов

    18.12.2011 at 23:07

    Тогда посмотрите самый низ stylesheet.css — возможно там — счас не имею доступ к OpenCart. 🙂

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

    • Владислав Храмцов
      vkontakte.ru Владислав Храмцов

      26.12.2011 at 21:23

      1. Тяжкий вздох. Приготовьтесь к большой работе
      2. Добавляете в базу данных новое значение в таблицу пользователя
      3. Выводите в админку поле для баллов (в карточку пользователя)
      4. Связываете окно с базой данных
      5. Проверяете — через форму добавляете цифры, через phpmyadmin смотрите появилось ли введёное через админку значение
      6. Привязываете вывод баллов в карточку пользователя
      7. Проверяем отображение баллов, выдыхаем 🙂

    • Большое спасибо за быстрый ответ. Но, к сожалению, я способна только на 1 пункт. Подскажите, пожалуйста, хотя бы где искать базу данных? Честно говоря, мне не принципиально связывать это с админкой. Главное, чтобы было видно пользователю.

    • Владислав Храмцов
      vkontakte.ru Владислав Храмцов

      26.12.2011 at 22:42

      http://moushe.ru/nashi-stati/web-dizajn-2/opencart-sozdayom-kratkoe-opisanie-tovara/ — вот типо того, а без базы данных не получится

  13. Спасибо огромное! Буду разбираться.

  14. Айдын

    02.02.2012 at 13:37

    А я почему-то не нашел файл create.php, его вообще нигде нет… У меня OpenCart 1.5.1.3 русский

    • Владислав Храмцов
      vkontakte.ru Владислав Храмцов

      02.02.2012 at 19:38

      🙂 Просто статья написана для OpenCart’a 1.4.9

  15. Владислав, день добрый! Не подскажете — нет ли урока по упрощению формы заказа товара для 1.5.1.3?

    • Владислав Храмцов
      vkontakte.ru Владислав Храмцов

      11.03.2012 at 21:03

      На офф форуме посмотрите — там были материалы на эту тему.

  16. Максим

    14.03.2012 at 15:52

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

  17. Дмитрий

    20.03.2012 at 01:34

    Владислав, а не подскажете как вовсе избавиться от строк «Войти в личный кабинет или зарегистрироваться» и ссылок, а также ссылки на «Личный кабинет» и «Заметки» ниже?

  18. Владислав Храмцов
    vkontakte.ru Владислав Храмцов

    20.03.2012 at 20:58

    В пятницу постараюсь сделать статью на эту тему.

  19. Максим

    21.03.2012 at 12:11

    fergo.com.ua можете посмотреть что у меня уже получилось с использованием vqmod и доработкой кода

    • Владислав Храмцов
      vkontakte.ru Владислав Храмцов

      21.03.2012 at 19:33

      Строчки адрес не хватает 🙂 или ваш курьер медиум — узнает адрес по городу 😉

  20. андрей

    23.03.2012 at 18:01

    а для ocStore v1.5.1.3 это подходит? Я не нашёл у себя файл create.php 🙁

    • Владислав Храмцов
      vkontakte.ru Владислав Храмцов

      24.03.2012 at 00:37

      Нет, не подходит — там немного по другому сделано, на оф форуме есть описание по переделке регистрации в 1.5.1

  21. Максим

    24.03.2012 at 12:14

    Ну … задумка не моя, мне сказали — я сделал, а добавить конечно сейчас будет геморно… Столько строк заново перешуршать придется что ого-го… 🙂

  22. Добрый вечер, не подскажите как строчку — «Войти в личный кабинет или зарегистрироваться» — переделать в поля для ввода имени и пароля? Что бы эти поля уже были бы в хедере?

    • Владислав Храмцов
      vkontakte.ru Владислав Храмцов

      05.04.2012 at 22:28

      Спросите на оф форуме — у меня нет нужных знаний.

  23. Добрый вечер.
    Владислав, а вы случаем не разбирались в том, как при оформлении заказа перепрыгивать со 2го шага сразу на 6ой? А то слишком много раз приходится просто жать кнопку далее, замедляя оформление заказа((

    • Владислав Храмцов
      vkontakte.ru Владислав Храмцов

      25.05.2012 at 12:43

      Нет я этого не делал — на форуме myopencart.ru попробуйте поискать.

  24. Эдуард

    26.07.2012 at 09:59

    Здравствуйте. А можно как-то прикрутить к opencart 1.5.1.3 ещё одну форму регистрации? Чтобы люди после заполнения этой формы регистрации попадали, допустим, в оптовики?

  25. Владислав Храмцов
    vkontakte.ru Владислав Храмцов

    26.07.2012 at 21:11

    Любому покупателю в админке можно присвоить группу — оптовики и т.д. Прикрутить то можно но половину OpenCart’а придётся перековырять.

  26. Здравствуйте!
    Очень нужна Ваша помощь. В ходе многочисленных манипуляций с сайтом проморгал момент когда блок с личным кабинетом растянулся на всю ширину окна (раньше занимал немного места справа). Подскажите пожалуйста как вернуть его на место. Заранее Вам благодарен

  27. Владислав, подскажите пожалуйста.делаю для версии 1.5.3.1. форма поменялась как мне нужно. но сама регистрация не происходит.т.е. после заполнения формы при нажатии -вперед-не происходит ничего.что это может быть?

    • Владислав Храмцов
      vkontakte.ru Владислав Храмцов

      12.12.2012 at 21:09

      Контроллер правили ?

  28. да, контроллер правила.только не тот файл.ведь в версии 1.5.1.3 файл называется не create.php , а register.php. а я работала с другим. спасибо за решение!

  29. сделала форму быстрой регистрации по инструкции. большое спасибо )

    но нет продолжения, как же убрать шаг 2 и комментарии поставить в шаг — 1?
    osstore 0.2.0 (opencart 1.4.9)

    • Владислав Храмцов
      vkontakte.ru Владислав Храмцов

      25.01.2013 at 21:38

      Я уже давно не работаю с OC 1.4.9

  30. вопрос тогда тем кто работает еще..помогите советом товарщи пожалуйста

    вот тут вроде опенкарт 1.49 и очень правильная форма оформления заказа… как они перенесли комментарии в шаг 1 а шаг 2 удалили?
    http://velolider.zp.ua/tormoza/rotory/rotor-shimano-sm-rt76-xt-saint

  31. Владислав, а вы не планируете статью о том, как скрыть лишние шаги в оформлении заказа для opencart 1.5.3? Нигде не могу найти такой информации. Спасибо!

    • Владислав Храмцов
      vkontakte.ru Владислав Храмцов

      13.02.2013 at 21:32

      Я не знаю буду ли вообще ещё писать статьи по ОпенКарту.

  32. сергей

    19.02.2013 at 18:28

    А у меня во такая проблемам
    http://tabletschina.ru/image/data/trables.jpg

    • Владислав Храмцов
      vkontakte.ru Владислав Храмцов

      19.02.2013 at 21:05

      Какая версия OC ? Если 1.4.9 значит допустили ошибку в контроллере, если иная — статья не подойдёт.

  33. Владислав

    07.04.2013 at 21:24

    А какой вы используете шаблон и будет ли он работать на MaxyStore 1.5.4.1?

    • Владислав Храмцов
      vkontakte.ru Владислав Храмцов

      07.04.2013 at 22:32

      Шаблон использовался стандартный от OpenCart 1.4.9, у макси сторе вроде бы первая сборка была сделана на 1.5.1, конечно могу и ошибаться ибо с макси сборками не работаю — один раз попробовал но не впечатлило.

  34. Галина

    08.06.2013 at 16:12

    Здравствуйте, Владислав. Я хочу сократить регистрацию, но не могу найти файл create.php в OcStore 1.5.4.1?

    • Владислав Храмцов
      vkontakte.ru Владислав Храмцов

      14.06.2013 at 19:42

      ../catalog/controller/account/register.php

  35. Ярослав

    26.08.2013 at 00:37

    Статью уже выучил просто но не могу решить проблему:
    Все сделал как написано по в конце получаю вот это…
    Notice: Undefined index: company in Z:\home\magaz\www\catalog\model\account\customer.php on line 7Notice: Undefined index: address_2 in Z:\home\magaz\www\catalog\model\account\customer.php on line 9Notice: Undefined index: postcode in Z:\home\magaz\www\catalog\model\account\customer.php on line 11Notice: Undefined index: fax in Z:\home\magaz\www\catalog\model\account\customer.php on line 13Notice: Undefined index: country_id in Z:\home\magaz\www\catalog\model\account\customer.php on line 17Notice: Undefined index: zone_id in Z:\home\magaz\www\catalog\model\account\customer.php on line 17Warning: Cannot modify header information — headers already sent by (output started at Z:\home\magaz\www\index.php:92) in Z:\home\magaz\www\system\engine\controller.php on line 27

    • Владислав Храмцов
      vkontakte.ru Владислав Храмцов

      26.08.2013 at 21:59

      Возможно у вас иная версия OpenCart’а поэтому и возникает ошибка

  36. Наташа

    14.05.2014 at 01:31

    Помогите! : ( Не работает оформление заказа (не активен ни один из 6-ти шагов). В чем может быть причина?

    • Владислав Храмцов
      vkontakte.ru Владислав Храмцов

      24.05.2014 at 23:42

      Пишите в контакте, будем разбираться.

  37. Александр

    10.06.2014 at 15:00

    Здравствуйте. Подскажите, каким образом можно добавить дополнительные поля к регистрации? Мне нужно сделать еще три поля «Счет1», «Счет2», «Счет3». Или скажите, какие файлы нужно править?
    Спасибо.

  38. Максим

    25.08.2016 at 17:42

    Для OC 2.0 планируется такая статья?

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

Your email address will not be published.

*

CAPTCHA image
*

© 2016 Moushe.ru При копировании материалов, ссылка на нас обязательна!

Вверх ↑



Яндекс.Метрика