Без лишних предисловий переходим сразу к делу. Есть два варианта регистрации пользователей в virtuemart.
Регистрация через стандартную форму Joomla
При таком способе все пользователи будут автоматически зарегистрированы и в virtuemart, поскольку данные о пользователях virtuemart берутся из общей таблицы пользователей joomla.
Это удобно, но применяется очень редко, поскольку кроме стандартных пользовательских полей joomla в virtuemart есть дополнительные поля (например, Имя, Адрес, Телефон и т.д.), которые также могут понадобиться при регистрации. Поле Имя (first_name) используется почти всегда, но при стандартной регистрации joomla оно останется пустым и пользователю его придется дополнительно заполнить. В итоге получается какая-то полурегистрация. Плюс к этому у пользователя может возникнуть непонимание, почему при регистрации он указывал имя (в поле Отображаемое имя), а в личном кабинете virtuemart и при заказе его нет. О причинах такого поведения чуть ниже.
В virtuemart 3.2.10 был добавлен плагин VM Framework Loader during Plugin Updates, который редиректит со стандартной формы регистрации joomla на страницу с регистрацией virtuemart. Отключите его, если не получается перейти на страницу с регистрацией joomla.
Регистрация через форму virtuemart
В virtuemart есть встроенная форма регистрации пользователей. Отобразить ее можно, создав пункт меню с типом Virtuemart > Учетная запись. Для незарегистрированных пользователей будут показаны формы авторизации и регистрации, для зарегистрированных - личный кабинет, в котором можно изменить свои данные и посмотреть все заказы.
При первом взгляде на стандартную форму сразу пропадает желание регистрироваться. Просто огромное количество полей, которые нужно заполнить.
Первый этап упрощения регистрации - это отключение всех ненужных полей.
На скрине видно, что все поля делятся на 2 блока - стандартные поля для регистрации в joomla и дополнительные поля virtuemart.
При регистрации средствами joomla все данные о пользователе хранятся в таблице _users. Virtumeart использует эти данные, плюс в таблице _virtuemart_userinfos хранятся данные из дополнительных полей самого магазина.
В Virtuemart > Настройки > Поля, заполняемые пользователями можно настроить все дополнительные поля.
На странице регистрации показываются поля, у которых в настройках активна опция Показать в учетной записи.
Отключим все лишние поля и в списке всех полей зададим правильный порядок следования.
Отключив все лишние поля и оставив только поле с именем покупателя (first_name), мы получим уже более приятную форму.
Имя пользователя и Отображаемое имя - поля для стандартной регистрации joomla, при их отключении зарегистрироваться не получится.
Имя - единственное дополнительное поле от virtuemart.
Вот так мы получили в одной форме регистрации целых 3 имени. С ними разберемся чуть позже, а пока посмотрим как можно отключить поля с паролями.
Настройки регистрации пользователей находятся в Пользователи > Менеджер пользователей > Настройки.
Разрешить регистрацию пользователей - опция обязательно должна быть активна.
Группа для регистрирующихся пользователей - относится к группам пользователей joomla, в virtuemart можно присвоить собственные группы в Virtuemart > Заказы и покупатели.
Отсылать пароль - при включении этой опции пароль будет отсылаться в письме. Если в форме регистрации поля с паролем отключены, то он генерируется автоматически, поэтому эту опцию обязательно нужно включить, чтобы пользователь мог увидеть сгенерированный пароль.
Активация нового пользователя - Нет - пользователь активируется автоматически, Самостоятельно - ссылка на активацию отправляется пользователю в письме, Администратором - пользователя активирует администратор. Если пароль генерируется, то нужно выбрать Самостоятельно.
Исходя из этих настроек, можно выбрать самостоятельную активацию, выбрать отсылку пароля, отключить поля с паролем в форме и получить в итоге такую форму регистрации.
Но на мой взгляд, поле с паролем нужно оставить, чтобы в дальнейшем пользователь смог его при необходимости изменить в личном кабинете. Для удобства можно убрать поле для подтверждения, но об это чуть ниже.
Теперь поля с именами. Все три поля необходимы для правильной регистрации, но в форме нужно показать только одно. Я предлагаю в поле Имя пользователя копировать данные из поля Эл. почта, а в поле Отображаемое имя автоматически копировать данные из поля Имя.
Поля будут заполняться автоматически, поэтому с помощью css их можно просто скрыть. Плюс в качестве приятного дополнения пользователи смогут авторизовываться не по логину, а по email (логин и почта будут совпадать), как это сделано на большинстве сайтов. Если на сайте уже есть зарегистрированные пользователи, то можно установить плагин Authentication - EMail, чтобы все пользователи могли авторизоваться по email.
Автозаполнение и скрытие лишних полей нужно настроить на следующих страницах:
- регистрация
- корзина (если выбрано оформление заказа с регистрацией)
- профиль пользователя
- письмо, приходящее пользователю после регистрации. Там тоже показываются все имена и лишние нужно удалить.
Для автозаполнения и скрытия всех лишних полей на сайте можно использовать плагин VM Clean Registration.
Совместимость: Joomla 3; Virtuemart 3
После стандартной установки в Менеджере плагинов нужно активировать плагин VM Clean Registration и выбрать поля, которые нужно скрыть.
Результатом работы плагина станет вот такая форма регистрации.
Плагин бесплатный. Если он помог в работе, то можно поддержать проект.
По поводу капчи при регистрации. Если коротко, то встроенная recaptcha в форме регистрации virtuemart пока работает с ошибками. Почитать подробнее и найти альтернативу можно в этой статье.
И, наконец, переходим в последнему пункту - редактированию письма, приходящего пользователю после регистрации.
В письме по умолчанию будут показаны все поля.
Отредактировать шаблон письма можно в файле /components/com_virtuemart/views/user/tmpl/mail_html_reguser.php. Удалите или закомментируйте следующие строки
1 2 |
echo vmText::_('COM_VIRTUEMART_YOUR_LOGINAME') . $this->user->username . $li; echo vmText::_('COM_VIRTUEMART_YOUR_DISPLAYED_NAME') . $this->user->name . $li; |
и замените
1 |
if (!empty($userField['value']) && $userField['type'] != 'delimiter' && $userField['type'] != 'hidden') |
на
1 |
if (!empty($userField['value']) && $userField['type'] != 'delimiter' && $userField['type'] != 'hidden' && $userField['name'] != 'name') |
Чтобы изменения сохранились после обновления скопируйте измененный файл в папку /templates/имя_шаблона/html/com_virtuemart/user/.
После всех правок письмо будет выглядеть так.
На этом всё. Статья получилась объемная но, я надеюсь, полезная.
2 комментария
N1
ЗдОрово, всё получилось, огромное вам спасибо! Наконец-то эта регистрация с тремя полями имён в прошлом.
admin
Рад, что статья оказалась полезной.