Настройка регистрации в VirtueMart

Опубликовано: 13 Апрель, 2018
Обновлено: 4 Сентябрь, 2018
Категория: Настройка VirtueMart
Комментариев: 24

Без лишних предисловий переходим сразу к делу. Есть два варианта регистрации пользователей в 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. Удалите или закомментируйте следующие строки

и замените

на

Чтобы изменения сохранились после обновления скопируйте измененный файл в папку /templates/имя_шаблона/html/com_virtuemart/user/.

После всех правок письмо будет выглядеть так.

Переадресация после регистрации

Чтобы после успешной регистрации происходил автоматический редирект, например, на главную страницу сайта в файле /administrator/components/com_virtuemart/models/user.php замените

на

Способ будет работать только если происходит автоматическая регистрация пользователей без подтверждения по email.

На этом всё. Статья получилась объемная но, я надеюсь, полезная.

24 комментария

    N1

    ЗдОрово, всё получилось, огромное вам спасибо! Наконец-то эта регистрация с тремя полями имён в прошлом.

      admin

      admin

      Рад, что статья оказалась полезной.

    juicy

    Все отлично получилось, спасибо. Еще вопрос, подскажите может где-нибудь есть решение, чтобы на главной, если пользователь залогинился, вместо "Мой аккаунт" отображалось имя пользователя?

      admin

      admin

      Это зависит от конкретного шаблона. Если у Вас шаблон, купленный на этом сайте, то задайте вопрос на его форуме поддержки.

    Anna

    Если пользователь меняет имя в личном кабинете, то меняется только одно имя, так и должно быть?

      admin

      admin

      Да, а что еще должно меняться?

    v.korchagin.p

    Пробовал ставить плагин, работает но у меня с ним пропадает сумма доставки в корзине

      admin

      admin

      Пришлите ссылку на сайт.

    Сергей

    Второе имя, то которое теперь скрыто. В приветствии отображается именно скрытое имя, и оно остается старым.

      admin

      admin

      Странно, потестировал на своем сайте, все работает правильно. Пришлите ссылку на сайт.

    Владимир

    sportmag52.ru (я на время его включу)

      admin

      admin

      На этой странице плагин не подключен. Подключите еще раз.

    Ростислав

    Спасибо за полезную статью и плагин. У меня возник дополнительный вопрос.

    В моем немного кривоватом шаблоне разработчики поставили кнопки "регистрация" и "отменить" НАД полями для данных пользователя. Я хочу их переместить на положенное место в нижню часть, но не могу найти файл, отвечающий за вывод этой формы.

    Гуглится только путь \administrator\components\com_virtuemart\html\checkout_register_form.php , но такой папки "html" у меня на сервере нет, видимо это было актуально для предыдущих версий VM.

    Ростислав

    Как часто бывает, задав вопрос, почти сразу разобрался сам. Путь к нужному файлу /components/com_virtuemart/views/user/tmpl/edit_shopper.php

    Lusy

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

    После удаления пользователем альтернативного адреса доставки:
    Notice
    COM_VIRTUEMART_ADDRESS_DELETED

    При добавлении альтернативного адреса доставки
    Warning
    Table userinfos check failed: address_type ST without name, autogenerated Delivery Address 8

    Если активировать поле Address Nickname, то это уведомление больше не показывается. Но это поле - очередной абсурд с целью прогнать пользователя. Его нельзя как-нибудь скрыть? Пусть даже хаком?
    Virtuemart 3.2.14

      admin

      admin

      Здравствуйте!

      Если отключить плагин ошибки уходят?
      Если активировать поле Address Nickname и не заполнять его заказ нормально оформляется? Если да, то можно скрыть с помощью css.
      Для более точного ответа пришлите ссылку на сайт.

        Lusy

        Если отключить плагин, ошибки остаются. На оформление заказа не влияют.
        При активированном и незаполненном поле Address Nickname заказ оформляется без проблем.
        Сам плагин в админпанеле имеет странный вид, кнопок нет, одни полосочки, но работает )) Как бы Вам скриншот прислать?
        Пожалуйста, удалите ссылку, сайт не должен индексироваться пока.

          admin

          admin

          Вы планируете оставить стандартную корзину? Ее еще можно упростить, например, с помощью этого плагина. Также можно просто скрыть область с дополнительным вводом адреса, посмотрите в этой статье.

    Lusy

    Конечно же я хочу красивую и несложную корзину, которая организована по принципу "Не заставляйте меня думать". Ради клиентов, не для меня лично. Я даже купила по Вашему совету плагин VirtueMart One Page Checkout. Оказалось еще большее убожество, чем дефолтная корзина VM. На демо меня привлекло то, что по сравнению с другими плагинами все компактно, мало полей для заполнения. Оказалось, что нужно опять вводить 3 имени, обязателен Address Nickname, шрифт в корзине такой же мелкий, как и в дефолтной. Особенно раздражала та зависающая полосатая лента, хотя в настройках отмечено без перезагрузки страницы. А если пользователь ввел что-то не так, то эта полоса зависает на вечные времена, и никаких подсказок, что, например, не заполнено поле Имя. Чтобы от нее избавится, нужно догадаться обновить страницу, но возвращаешься в исходное положение. А если пользователь пытается заполнить форму с телефона, то вообще сбежит через минуту. Удалила я этот плагин и даже не стала терять время на общение с разработчиком.
    Поэтому я не смею пока покупать другой плагин, вдруг опять та же история? Плагин VP One Page Checkout скроет лишние поля, как Ваш плагин?
    А по поводу вот этого:
    После удаления зарегистрированным пользователем альтернативного адреса доставки:
    Notice
    COM_VIRTUEMART_ADDRESS_DELETED
    Это никак не лечится? Другие уведомления выводятся нормально, в виде текста "Registration completed", например, а не ADDRESS_DELETED.
    У пользователей без регистрации нет опции удалить альтернативный адрес, только изменить. Может эту опцию как-то скрыть и для зарегистрированных пользователей?
    Извините за простыню, но уже три недели топчусь на месте из-за одной формы регистрации. Я сделала сайт на VM 1... несколько лет назад за более короткое время без всякого опыта, а в тройке такого наворотили...

    Lusy

    Вот в языковом файле нашла

    Вроде бы все прописано как надо, а выводится не текст Address has been successfully deleted, а COM_VIRTUEMART_ADDRESS_DELETED
    Пробовала совсем удалить эту строку, безрезультатно. У меня что, шаблон заколдованный?

      admin

      admin

      Нужно смотреть непосредственно на сайта.
      Пришлите доступ к админке и ссылку на вопрос на admin@virtuemart.su, попробую максимально упростить корзину и регистрацию.

        Lusy

        Спасибо, отправила.

    Ростислав

    Добрый день.

    Спасибо за содержательную статью, может быть поможете с одной дополнительной проблемой.

    После того, как пользователь ввел свои данные и нажал кнопку регистрации, ему отправляется письмо и появляется системное сообщение:

    "Внимание
    Регистрация завершена!
    Ваш аккаунт был создан. Письмо со ссылкой для его активации было отправлено на указанный вами адрес электронной почты."

    Вот это сообщение я хочу подкорректировать, но не могу найти файл с соответствующим участком кода. Не подскажете где искать?

      admin

      admin

      Здравствуйте!

      В Расширения > Менеджер языков > Переопределение констант создайте новую языковую константу COM_VIRTUEMART_REG_COMPLETE_ACTIVATE с нужным текстом.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*
Для вставки кода заключите его в теги [php] [/php]
*

С 15-18 июня admin в отпуске.

Ответы на все вопросы и ссылки на товары будут присланы 19 июня.

Спасибо за понимание и хороших выходных.

×