MODx WebloginPE. Реализация регистрации пользователей на сайте.

Рано или поздно, каждый программист, занимающийся разработкой сайтов, сталкивается с проблемой регистрации и учета пользователей. Данная проблема охватывает большой круг решаемых задач. Например, это может быть управление пользователями (добавление/редактирование/удаление) менеджером сайта, регистрация и авторизация пользователей.

Существует множество вариантов решения этой проблемы, но все их можно разнести на три группы решений:

  1. Написать самому все с нуля
  2. Воспользоваться готовым решением
  3. Промежуточный вариант

Каждый программист, который думает, что он может практически все, скорее всего, выберет первый вариант. С одной стороны это хорошо и очень развивает способности, но с другой стороны можно потратить много времени на те вещи, которые придумали до нас.

Если же выбрать второй вариант, то возникают немного другие вопросы. А что если нас интересует не совсем данная реализация?

Ваш покорный слуга не является сторонником «изобретения очередного колеса», поэтому я смело воспользуюсь третьим вариантом. Ведь действительно, стоит один раз в корне разобраться в чем-то, сделать свои корректировки, а потом пользоваться этими наработками все оставшееся время.

Разработка сайтов под управлением MODx не является исключением. Существует несколько популярных сниппетов, осуществляющих регистрацию. К ним относятся WebLogin, WebSignUp, WebLoginPE и другие. Самым мощным по настройкам и возможностям является последний из них, поэтому мой выбор пал именно на него.

С помощью данного пошагового руководства, вы легко сможете настроить сниппет под Вас. В этой статье мы поставим нашей целью использовать данный модуль «по полной» на Вашем сайте.

Все, что нам понадобится, это переделанный сниппет, который можно скачать здесь. Изменения от стандартной комплектации кардинальные. Была убрана папка (Default forms). Вместо нее теперь будет один файл шаблонов webloginpe.templates.default.php , в котором и будут все стандартные шаблоны. Однако их использовать не рекомендую, так как на практике, при изменении размера шаблонов, верстка сразу же «распадается». Чтобы этого не было, теперь в файле webloginpe.templates.php содержатся написанные с нуля куски шаблонов, настраиваемые помощью css (чего также нет в оригинале). Благодаря этому, вы с легкостью сможете управлять внешним видом Ваших шаблонов. Также русифицированы многие элементы (все кнопки, языковой пакет, который теперь принят по умолчанию, названия стран). В описании класса WebLoginPE добавлены комментарии, которые помогут быстрее ориентироваться в коде. В итоге, архив содержит следующие файлы:

С чего же начать? А начать нужно с главного! После скачивания архива, заходим в админку MODx, где переходим Элементы → Управление элементами, где выбираем вкладку «Сниппеты» и добавляем новый.

Далее появится форма добавления сниппета. В качестве названия вводим WebLoginPE (с учетом регистра). Теперь открываем файл snippet.php из архива, копируем все его содержимое и вставляем в поле «Код сниппета(php)». Жмем кнопку «Сохранить» в верхней панели справа.

Теперь содержимое архива необходимо скопировать в папку на сервере, где хранятся все сниппеты MODx (обычно это папка assets/snippets). Вся база у нас готова, теперь можно приступить к настройке.

Допустим нам необходимо сделать следующее. На всех страницах разрабатываемого нами сайта в определенном месте (Вы выбираете сами) должна быть форма авторизации. Также должна быть страница, на которой должна быть форма регистрации, а также страница редактирования профиля. Этого будет достаточно.

Как и все другие сниппеты MODx, он имеет большое количество входных параметров. Однако нас будут интересовать следующие параметры (в таблице сразу приведено и их описание):

Параметр Описание Формат По умолчанию
liHomeId Страница, на которую будет перенаправлен пользователь после успешной авторизации. Если указано несколько, берет первый успешный список ID документов | пусто пусто
loHomeId Страница, на которую будет перенаправлен пользователь после выхода из профиля ID-документа | пусто пусто
profileHomeId Id страницы, на которой будет редактирование профиля ID-документа | пусто пусто
pruneDays Удаление неактивированных пользователей. Указывает количество дней, по истечении которых, удалять пользователя дни пусто
regHomeId Страница с формой регистрации ID-документа | пусто пусто
regSuccessId Страница, на которую будет осуществлен переход после успешной регистрации ID-документа | пусто пусто
regType Тип регистрации. Если задан первый, тогда пользователь задает лично пароль. Если задан второй, то пользователь получает пароль от системы автоматически instant | verify instant
type Вид сервиса. Самый, пожалуй, важный параметр. Речь о нем пойдет ниже simple | register | profile | users | manager | taconite simple

Параметр type имеет 6 возможных вариантов. В нашем примере мы будем использовать simple (для формы авторизации), register (для регистрации), profile (для редактрирования профиля), manager (для просмотра всех пользователей).

Для начала добавим необходимые нам страницы («Регистрация» и «Редактирование профиля»), а также папку для загрузки изображений (uploads в корне сайта, рядом с assets)

Чтобы добавить сниппет на все страницы, достаточно добавить его в Ваш шаблон. Однако когда мы создадим страницу с формой регистрации на основе этого шаблона, то у нас произойдет  ситуация «двойного вызова» сниппета, то есть когда на одной странице сниппет будет вызываться несколько раз. Можете, конечно, попробовать, но лучше сразу сделать обходной путь. На многих форумах обсуждается эта ситуация, и не всегда решения оказываются удачными. На мой взгляд, существует два варианта прокладки путей.

  1. Использование дополнительного шаблона. Мы создаем новый шаблон, в котором не будет вызова сниппета (как на всех страницах). Этот вариант прост, однако он не совсем правилен с точки зрения логики.
  2. Использование TV-параметра (рекомендуется).

Сейчас мы рассмотрим второй вариант. TV-параметр – это переменная шаблона. Для создания такой переменной переходим в админке Элементы → Управление элементами, где выбираем «Параметры (TV)» и выбираем «Новый параметр».

Далее, указываем имя и заголовок (например «reg» для обоих полей). Для поля «тип ввода» выбираем «DropDown List Menu». В поле «возможные значения» вносим:

WebLoginPE? &type=`simple` &regHomeId=`N` &liHomeId =`M` &loHomeId =`K`
&profileHomeId=`V` &pruneDays=`7`

Здесь буквы обозначают:

Ставим галочку возле шаблонов, в которых будет видна эта переменная.

Жмем «Сохранить». Теперь у нас есть переменная шаблона, которая принимает 2 значения.

Теперь переходим в редактирование нашего Шаблона сайта. Теперь в нужном месте (там , где мы хотим видеть авторизацию) просто ставим . По умолчанию, будет браться первое значение.

Теперь на страницах «Регистрация» и «Редактирование пользователя» (в режиме редактирования) в самом низу меняем параметр reg на второе значение (<div></div>) и сохраняем. Вот и все, мы решили проблему с двойным вызовом сниппета. Таким образом нужно поступать на каждой странице, на которой нам не нужна форма авторизации.

В содержимое страницы «Регистрация» вставляем такой вызов сниппета:

WebLoginPE?  &type=`register` &regSuccessId=`M` &loHomeId=`1` &regRequired=`formcode,tos`

M – id страницы, на которую нужно перейти. Желательно поставить сюда id главной страницы

В содержимое страницы «Редактирование профиля» вставляем такой вызов сниппета:

WebLoginPE? &type=`profile`

Вот этого набора обычно хватает для организации всего необходимого. Если вам нужна страничка администратора, на которой он может менять или даже удалять все профили, тогда проделайте такие же шаги, как и при создании страницы «Редактирование профиля», только при вызове сниппета укажите тип «manager». Аналогично можно создать страничку просмотра пользователей без возможности редактирования (тип users).

Если Вас интересует углубленная настройка, тогда Вам следует обратить внимание на следующие строки:

  1. Файл snippet.php :

  1. Файл webloginpe.class.php :

В данном сниппете есть еще один режим работы – taconite. Этот режим работает на основе Ajax-технологии, однако в стандартной комплектации мне так и не удалось увидеть его в деле. Просмотрев исходники, стала понятна идея, но складывается такое ощущение, что этот режим не доделан до конца, к сожалению.

  

Источник: http://zls.su/about/articles/webloginpe

Отправить заявку на создание сайта

Сообщение отправлено