Inurl component users view registration бесцветный. Вязание крючком и спицами – схемы и узоры вязания. Встроенный менеджер перенаправлений

Урок, в котором познакомимся с дополнением Login. Данное дополнение предназначено для реализации на сайте всего что может понадобиться для работы с пользователями во front-end. Оно включает в себя элементы для реализации регистрации, подтверждения регистрации, восстановления и изменения пароля, авторизации, личного кабинета и многих других функций.

Установка приложения Login

Открываем страницу "Управление пакетами" (Приложения -> Установщик). Выполняем загрузку и установку компонента Login.

Создание группы пользователей и ресурсов "Users"

Открываем страницу "Контроль доступа" (Шестерёнка -> Контроль доступа). Нажимаем на кнопку "Новая группа пользователей".

В диалоговом окне "Создать группу пользователей" заполняем следующие поля:

  • Имя: Users;
  • Описание: Зарегистрированные пользователи;
  • Создать параллельную группу ресурсов: Да;
  • Политики бэкэнда: (нет политики).

Проверяем, появилась ли новая группа ресурсов "Users". Эта группа ресурсов была создана во время создания группы пользователей "Users" (включенная опция "Создать параллельную группу ресурсов"). Группа ресурсов "Users" необходима для помещения в неё ресурсов, доступ к которым будут иметь пользователи, расположенные в группе "Users". Это будут ресурсы "Личный кабинет", "Смена пароля" и "Редактирование данных". Анонимные пользователи не смогут получить доступ к этим ресурсам.

Настраиваем права группы пользователей "Users". Для этого на странице "Контроль доступа" нажимаем правой кнопкой мыши на группу "Users" и выберем пункт "Редактировать группу пользователей".

На странице "Группа пользователя: Users" нажимаем правой кнопкой мыши на поле "web" и выбираем пункт "Редактировать доступ к контексту".

В диалоговом окне "Доступ групп пользователей к контексту" устанавливаем политику доступа на значение "Load, List and View" и нажимаем на кнопку "Сохранить".

Создание страниц (ресурсов) для Login. Настройка доступа к этим страницам

Создадим следующие страницы (ресурсы):

  • Регистрация (28) и Подтверждение регистрации (31);
  • Авторизация (29) и Восстановление пароля (32);
  • Личный кабинет (30), Изменение пароля (33) и Редактирование данных (34).

Настроим доступ к страницам "Личный кабинет", "Изменение пароля", "Редактирование данных". Они должны быть доступны только зарегистрированным пользователям (Users).

Откроем страницу "Группы ресурсов" (Сайт->Группы ресурсов) и перенесём из правого дерева в группу «Users» вышеперечисленные ресурсы.

Кроме этого, группе пользователей (аноним) необходимо установить доступ "Load only". Это необходимо сделать для того чтобы они могли загружать страницы из группых ресурсов Users, проверять права доступа и получать ошибку 403 "Доступ запрещен". Если не дать (аноним) Load only, то для них эти страницы не будут существовать, и они получат ошибку 404 "Не найдено".

Порядок действий: Шестерёнка -> Контроль Доступа -> (аноним) -> Редактировать группу пользователей (правой кнопкой мыши) -> Доступ к группам ресурсов -> Добавить группу ресурсов.

В диалогово окне "Добавить группу ресурсов":

  • Группа ресурсов: Users;
  • Контекст: website (web);
  • Минимальная роль: member (9999);
  • Политика доступа: Load only.

Последнее что необходимо ещё сделать, это указать в качестве страницы ошибки 403 "Доступ запрещён" ресурс "Авторизация" (id=29). Осуществляется это в настройках системы с помощью параметра unauthorized_page. Теперь если анонимный пользователь захочет попасть на закрытые страницы, ему выведится страница "Авторизация".

Страница (ресурс) "Регистрация"

Страница "Регистрация" будет выполнять следующие действия:

  • выводить пользователю регистрационную форму;
  • обрабатывать отправленную пользователем форму (данные) на сервере с помощью сниппета Register.

Обработку формы сниппетом Register настроим так, чтобы он выполнял следующее:

  1. Переходил к обработке регистрационной формы только в том случае, если она была отправлена с помощью кнопки, у которой значение атрибута name равно submitbtn .
  2. Выполнял проверку (валидацию) полей формы на соответствие указанным требованиям. При обнаружении ошибок, выводил их в соотвествующие места ([[!+reg.error.имяПоля]]) формы.
  3. Если форма, заполненная пользователем, ошибок не имеет (прошла валидацию):
    • отображал сообщение об успехе;
    • отправлял пользователю email, в котором содержалась бы сообщение и ссылка. Данное действие необходимо для того, чтобы пользователь подтвердил email, т.е. активировал с помощью неё (ссылки) свою учётную запись.

Содержимое ресурса "Регистрация" (форма и сниппет Register):

[[!Register? &submitVar=`submitbtn` &activation=`1` &activationEmailSubject=`Подтверждение регистрации` &activationResourceId=`31` &successMsg=`

Спасибо за регистрацию. На вашу электронную почту [[!+reg.email]] отправлено письмо, содержащее ссылку, необходимую для активацию аккаунта. Перейдите по этой ссылке, чтобы завершить процедуру регистрации.

` &usergroups=`Users` &usernameField=`email` &passwordField=`passwd` &validate=`nospam:blank, passwd:required:minLength=^8^, passwdAgain:passwdAgain=^passwd^, fullname:required, email:required:email` &placeholderPrefix=`reg.` ]]
Регистрация
[[!+error.message:eq=``:then=`
[[!+reg.error.fullname]]
[[!+reg.error.email]]
[[!+reg.error.passwd]]
[[!+reg.error.passwdAgain]]
`:else=`
[[!+error.message]]
`]]

Описание используемых параметров сниппета Register:

Имя параметра Описание
submitVar Ключ, значение которого проверяется перед тем как сниппет Register начнёт обрабатывать форму. Если в качестве значения этого параметра указать пустую строку или false , то сниппет Register будет обрабатывать форму при получении любого Post запроса.
activation Определяет стоит ли подтверждать email, указанный в регистрационной форме, или нет. Т.е. пользователь не будет активированным до тех пор, пока он не подтвердит свой email. Значение: 1 (да, необходимо).
activationEmailSubject Тема письма, в котором приходит ссылка для активирования учётной записи.
activationEmailTpl Шаблон письма, содержащий информацию и ссылку для активирования учётной записи. Будем использовать шаблон по умолчаию: lgnActivateEmailTpl.
activationResourceId Идентификатор ресурса, в котором находится сниппет с помощью которого осуществляется активирование учётной записи пользователя. Значение: 31 (id ресурса "Подтверждение регистрации").
successMsg Отображает указанное сообщение после успешной отправки регистрационной формы. Этот параметр работает тогда, когда не используется параметр submittedResourceId.
submittedResourceId Перенаправляет пользователя на указанный ресурс после успешной отправки регистрационной формы.
usergroups Список (через запятую) названий групп пользователей или идентификаторов этих групп, в которые необходимо добавить только что зарегистрированного пользователя. Значение: Users.
usernameField Имя поля формы, содержащее в качестве значения имя пользователя. Значение: email.
passwordField Имя поля формы, содержащее пароль пользователя. Значение: passwd.
validate Список (через запятую) полей для валидации (проверки). Указывается так: имя:валидатор (например, username: required , email:required). Валидаторы можно соединять. Например, email:email:required .
placeholderPrefix Префикс для плейсхолдеров. Например, значения плейсхолдеров для поля email с учётом префикса reg. : [[!+reg.email]] (значения поля), [[!+reg.error.email]] (значение ошибки).

Как работает активация аккаунта

Происходит это так: после успешной валидации формы, сниппет Register создаёт объект modUser и устанавливает полю active значение 0. Далее он отправляет письмо пользователю по указанному в регистрационной форме email. Данное письмо содержит URL (ссылку для активации). Как только пользователь перейдёт по этому URL, сниппет ConfirmRegister изменит значение поля active на 1. Теперь пользователь сможет авторизироваться на сайте, т.е. войти под своей учётной записью.

Ресурс "Подтверждение регистрации"

Страница "Подтверждение регистрации" предназначена для активирования аккаунта пользователя. Активирование выполняет сниппет ConfirmRegister на основании URL. Принцип работы его заключается в том, чтобы изменить значение поля active пользователя на 1. После этого пользователь может авторизоваться на сайте, т.е. войти под своей учётной записью.


Содержимое ресурса "Подтверждение регистрации" (сниппет ConfirmRegister):

[[!ConfirmRegister? &authenticate=`1` &redirectTo=`4` &errorPage=`4` ]]

Описание используемых параметров сниппета ConfirmRegister.

User Registration plugin provides you with an easy way to create frontend user registration form and login form. Drag and Drop fields make ordering and creating forms extremely easy. The plugin is lightweight, extendible, and can be used to create any type of registration form.

Beside registration form, the plugin also supports beautiful frontend profile account page for profile edit, password change, Log out and more. Users can visit their account page after registration and view the details they have filled and can make changes if necessary.

The registration forms are 100% mobile responsive and optimized to display on any devices.

User Registration Plugin in action:

Features And Options:

  • Simple, Clean and Beautiful WordPress Registration Forms
  • Drag and Drop Fields
  • Unlimited Registration Forms
  • Inbuilt Login Form
  • Frontend Profile account page
  • Multiple Column Design
  • Multiple Form template designs
  • Shortcode Support
  • Google reCaptcha Support (v2 and v3)
  • Email notifications
  • Email Customizers
  • Form Duplicate Option
  • Admin approval option for registration
  • Auto login option
  • Email confirmation to register
  • Enable/Disable Strong Password
  • Default User Role Selection Option
  • Support for profile image upload
  • Form Preview Option on backend
  • User data export in CSV
  • Import/Export registration form
  • Well Documented
  • Translation ready

Premium Addons

User Registration can be easily extended with some premium addons.

User Registration plugin provides you with an easy way to create frontend user registration form and login form. Drag and Drop fields make ordering and creating forms extremely easy. The plugin is lightweight, extendible, and can be used to create any type of registration form.

Beside registration form, the plugin also supports beautiful frontend profile account page for profile edit, password change, Log out and more. Users can visit their account page after registration and view the details they have filled and can make changes if necessary.

The registration forms are 100% mobile responsive and optimized to display on any devices.

User Registration Plugin in action:

Features And Options:

  • Simple, Clean and Beautiful WordPress Registration Forms
  • Drag and Drop Fields
  • Unlimited Registration Forms
  • Inbuilt Login Form
  • Frontend Profile account page
  • Multiple Column Design
  • Multiple Form template designs
  • Shortcode Support
  • Google reCaptcha Support (v2 and v3)
  • Email notifications
  • Email Customizers
  • Form Duplicate Option
  • Admin approval option for registration
  • Auto login option
  • Email confirmation to register
  • Enable/Disable Strong Password
  • Default User Role Selection Option
  • Support for profile image upload
  • Form Preview Option on backend
  • User data export in CSV
  • Import/Export registration form
  • Well Documented
  • Translation ready

Premium Addons

User Registration can be easily extended with some premium addons.

Ранее были внесены изменения в файлы.

копируем из

components/com_users/views/registration/tmpl/ в
templates/protostar/html/com_users/registration/ файлы

default.php и default.xml и меняем им названия, к примеру на approval.php и approval.xml

approval.php

// здесь большое количество кода // .....

params->get("show_age_checkbox")):?>

" title="">

approval.xml

Добавлены языковые замещения

language/overrides/en-GB.override.ini

MY_NEW_REGISTRATION="Registration form with additional fields" TERMS_OF_SERVICE="Terms of service" AGREE="I agree to the terms of use" AGE="I am at least 18 years old"

language/overrides/ru-RU.override.ini

MY_NEW_REGISTRATION="Регистрационная форма с дополнительными параметрами" TERMS_OF_SERVICE="Условия обслуживания" AGREE="Я согласен с условиями обслуживания" AGE="Мне уже есть 18 лет"

administrator/language/overrides/en-GB.override.ini

MY_NEW_REGISTRATION_TITLE="Registration form with additional fields" SHOW_AGE_CHECKBOX="Show Age Checkbox" SHOW_AGE_CHECKBOX_DESCRIPTION="Show or hide the age checkbox" AGE_CHECKBOX_DESCRIPTION_HIDE="Hide" AGE_CHECKBOX_DESCRIPTION_SHOW="Show"

administrator/language/overrides/ru-RU.override.ini

MY_NEW_REGISTRATION_TITLE="Регистрационная форма с дополнительными параметрами" SHOW_AGE_CHECKBOX="Показывать подтверждение
возраста при регистрации" SHOW_AGE_CHECKBOX_DESCRIPTION="Показывать / скрывать подтверждение возраста при регистрации" AGE_CHECKBOX_DESCRIPTION_HIDE="Скрыть" AGE_CHECKBOX_DESCRIPTION_SHOW="Показать"

Для отправки в суперглобальный массив переменных $_REQUEST методом POST значений полей формы необходимо, чтобы у каждого поля был уникальный атрибут name . Дополним поля флажков данным атрибутом в файле approval.php

params->get("show_age_checkbox")):?>

Теперь перейдем собственно к созданию самого плагина.

Назовем его myregistration . Создадим для него папку plugins/user/myregistration , в ней файлы myregistration.php и myregistration.xml . Не забываем про заглушку index.html

myregistration.xml

plg_user_myregistration March 2012 admin//dog//joomla.org www.joomla.org 2.5.0 PLG_USER_MYREGISTRATION_XML_DESCRIPTION myregistration.php index.html language

myregistration.php

isSite()){ return true; } // загружаем файл языковой поддержки $this->loadLanguauge(); $result = true; // проверить, установлен ли флажок согласия с условиями обслуживания if (!JRequest::getBool("tos_agree")){ JError::raiseWarning(1000, JText::_("PLG_USER_MYREGISTRATION_TOS_AGREE_REQUIRED")); $result = false; } // проверить установку флажка на подтверждение достижения 18 лет if (!JRequest::getBool("old_enough")) { JError::raiseWarning(1000, JText::_("PLG_USER_MYREGISTRATION_OLD_ENOUGH_REQUIRED")); $result = false; } return $result; } }

Имя класса указываем в соответствии с принятыми обозначениями

plgUserMyRegistration

plg (подключаемый плагин), User (пользовательский тип подключаемого плагина), MyRegistration (название плагина). Этот класс расширяет класс JPlugin .

У данного класса имеется один метод, обозначаемый по имени обрабатываемого события - onUserBeforeSave() . Данное событие инициируется при попытке сохранить данные нового пользователя в админке или зарегистрировать его в пользовательской части.

JRequest::getBool() вызывается для получения элемента ввода tos_agree или old_enough из суперглобальной переменной $_REQUEST языка PHP. Возвращает false или true .

JError::raiseWarning() - вывод ошибки. В качестве аргументов указываются: код ошибки и текст ошибки. В данном случае код не используется и может быть любым, а текст выводим из файла языковой поддержки плагина.

Файлы языковой поддержки

Предпочтительно создавать их в папке с плагином.Русскоязычные должны быть в кодировке UTF-8 без BOM - иначе система их не подхватит.

Первые предназначены для всех переменных, которые используются на фронте и для вывода настроек самого плагина
plugins\user\myregistration\language\en-Gb\en-Gb.plg_user_myregistration.ini
plugins\user\myregistration\language\ru-RU\ru-RU.plg_user_myregistration.ini

Вторые используются для вывода названия плагина в менеджере плагинов и вывода сообщения после установки расширения
plugins\user\myregistration\language\en-Gb\en-Gb.plg_user_myregistration.sys.ini
plugins\user\myregistration\language\ru-RU\ru-RU.plg_user_myregistration.sys.ini

en-Gb.plg_user_myregistration.ini

PLG_USER_MYREGISTRATION_TOS_AGREE_REQUIRED="You must agree to the terms of service" PLG_USER_MYREGISTRATION_OLD_ENOUGH_REQUIRED="You must be at least 18 years old"

en-Gb.plg_user_myregistration.sys.ini

PLG_USER_MYREGISTRATION="User - My Registration" PLG_USER_MYREGISTRATION_XML_DESCRIPTION="Check that the Terms and Age boxes have been checked"

ru-RU.plg_user_myregistration.ini

PLG_USER_MYREGISTRATION_TOS_AGREE_REQUIRED="Вы должны согласиться с условиями обслуживания" PLG_USER_MYREGISTRATION_OLD_ENOUGH_REQUIRED="Вам должно быть не менее 18 лет"

ru-RU.plg_user_myregistration.sys.ini

PLG_USER_MYREGISTRATION="Юзер - Моя регистрация" PLG_USER_MYREGISTRATION_XML_DESCRIPTION="Проверка на согласие с условиями обслуживания и достижения пользователем возраста 18 лет"

Полностью автономная версия плагина.

Используется класс JForm для замещения регистрационной формы перед выводом на форму с допполями и проверки достоверности, что избавляет от необходимости иметь альтернативные пункт меню и шаблон вывода модуля.

Имя нового плагина myregistrationall. Состоит:

forms/form.xml
language/en-Gb/en-Gb.plg_user_myregistrationall.ini
language/en-Gb/en-Gb.plg_user_myregistrationall.sys.ini
language/ru-RU/ru-RU.plg_user_myregistrationall.ini
language/ru-RU/ru-RU.plg_user_myregistrationall.sys.ini
myregistrationall.php
myregistrationall.xml

Основной myregistrationall .xml файл плагина. В разделе конфигурации установлены поля для отображения в настройках плагина

plg_user_myregistrationall Mark Dexter and Louis Landry feat Taatshi March 2012 (C) 2012 Mark Dexter and Louis Landry GNU General Public License version 2 or later; See License.txt admin//dog//joomla.org www.joomla.org 2.5.0 PLG_USER_MYREGISTRATIONALL_XML_DESCRIPTION myregistrationall.php index.html language forms

form.xml

myregistrationall.php

getName()!="com_users.registration") { return; } // Загрузить файл языковой поддержки $this->loadLanguage(); // Загрузить xml-файл в форму регистрации пользователя - обратить внимаение - вокруг FILE идет ДВОЙНОЕ ПОДЧЕРКИВАНИЕ $form->loadFile(dirname(__FILE__)."/forms/form.xml"); // Проверка установки параметра показа чекбокса для проверки возраста в настройках плагина if (!$this->params->get("show_age_checkbox", "1")) { $form->removeField("old_enough"); // Если мы захотим сделать поле подтверждения возраста необязательным, достаточно будет добавть строку: // $form->setFieldAttribute("old_enough", "requried", "false"); } } }

en-Gb.plg_user_myregistrationall.ini

PLG_USER_MYREGISTRATIONALL_TERMS_OF_SERVICE="Added Fields for Terms of Service Agreement" PLG_USER_MYREGISTRATIONALL_AGREE="I agree to the terms" PLG_USER_MYREGISTRATIONALL_AGE="I am at least 18 years old" PLG_USER_MYREGISTRATIONALL_SHOW_AGE="Show Age Checkbox" PLG_USER_MYREGISTRATIONALL_SHOW_AGE_DESC="Whether to Hide or Show the Show Age Check box. If it is shown, it will be required."

ru-RU.plg_user_myregistrationall.ini

PLG_USER_MYREGISTRATIONALL_TERMS_OF_SERVICE="Согласие с правилами обслуживания" PLG_USER_MYREGISTRATIONALL_AGREE="Я согласен с условиями обслуживания" PLG_USER_MYREGISTRATIONALL_AGE="Мне уже есть 18 лет" PLG_USER_MYREGISTRATIONALL_SHOW_AGE="Подтверждение возраста" PLG_USER_MYREGISTRATIONALL_SHOW_AGE_DESC="Показывать или скрывать чекбокс для подтверждения возраста"

en-Gb.plg_user_myregistrationall.sys.ini

PLG_USER_MYREGISTRATIONALL="User - My Registration - stand-alone" PLG_USER_MYREGISTRATIONALL_XML_DESCRIPTION="Check that the Terms and Age boxes have been checked - stand-alone"

ru-RU.plg_user_myregistrationall.sys.ini

PLG_USER_MYREGISTRATIONALL="Юзер - Моя регистрация - автономка" PLG_USER_MYREGISTRATIONALL_XML_DESCRIPTION="Проверка на согласие с условиями обслуживания и достижения пользователем возраста 18 лет - автономка"

In Joomla, after successful registration, users by default are redirected to a login page (if account doesn"t need to be activated). From there (after logging in) users are redirected to a user profile page. This happens even if you have Login Redirection set to something else in Login Form Module .

To change this behaviour you can redirect users after registration to any other page on your website.
To do this you need to edit a core Joomla file. Be aware that your changes may be overwritten by a Joomla update. Always document changes you make to core Joomla files so you can quickly re-do them if required.

Open file:
components/com_users/controllers/registration.php

Scroll down to the very bottom. Starting line 162 or so you will have flowing code:

if ($return === "adminactivate" ) { $this -> setMessage (JText:: _() ) ; $this -> setRedirect (JRoute:: _(, false ) ) ; } else if ($return === "useractivate" ) { $this -> setMessage (JText:: _() ) ; $this -> setRedirect (JRoute:: _("index.php?option=com_users&view=registration&layout=complete" , false ) ) ; } else { $this -> setMessage (JText:: _() ) ; $this -> setRedirect (JRoute:: _("index.php?option=com_users&view=login" , false ) ) ; }

In this section you have 3 links starting index.php?

  • First one () is executed after user registration if account has to be activated by an administrator
  • Second (index.php?option=com_users&view=registration&layout=complete ), if account has to be activated by user
  • Third (index.php?option=com_users&view=login ), if account activation is not required.

Replace links depending on type of registration you use with FULL URL of your redirection page and you are done.
For example, if user activation on my website is not required and I want to redirect users after registration to http://www.mywebsite.com/welcome-reg the updated code will be:

// Redirect to the profile screen. if ($return === "adminactivate" ) { $this -> setMessage (JText:: _("COM_USERS_REGISTRATION_COMPLETE_VERIFY" ) ) ; $this -> setRedirect (JRoute:: _("index.php?option=com_users&view=registration&layout=complete" , false ) ) ; } else if ($return === "useractivate" ) { $this -> setMessage (JText:: _("COM_USERS_REGISTRATION_COMPLETE_ACTIVATE" ) ) ; $this -> setRedirect (JRoute:: _("index.php?option=com_users&view=registration&layout=complete" , false ) ) ; } else { $this -> setMessage (JText:: _("COM_USERS_REGISTRATION_SAVE_SUCCESS" ) ) ; $this -> setRedirect (JRoute:: _("http://www.mywebsite.com/welcome-reg" , false ) ) ; }

Regardless to which page on your website you redirect, system message "Thank you for registering... " will be still displayed. If you don"t want this message, remove full line above your redirection URL. e.g. $this->setMessage(JText::_("COM_USERS_REGISTRATION_SAVE_SUCCESS"));

If you don"t require account activation (New User Account Activation set to None ) this is all you need to avoid User Profile page. However, if user has to activate account via email (Account Activation set to Self ) this may not be enough. Immediately after registration user will be redirected to a web page you provided in the code as expected. However, when user clicks on a link in the activation email, they will be taken to the previously mentioned login form and if they use it to login, they will get to the User Profile page. To prevent this you can disable User Profile page completely and instead redirect users to any page you like. Read this article to find out how.

Joomla 1.6
Joomla 1.7
Joomla 2.5