Modx вывести email пользователя

MODX — Login (Личный кабинет пользователя)

Урок, в котором рассмотрим, как в MODX Revolution можно на основании компонента Login создать ресурсы «Личный кабинет пользователя», «Изменение пароля», «Редактирование данных».

Страница «Изменение пароля»

Страница «Изменение пароля» предназначена для отображения пользователю формы с помощью которой он сможет изменить свой пароль. Всё логику работы по изменению пароля пользователя выполняет сниппет ChangePassword.

Содержимое ресурса «Изменения пароля» (форма и сниппет ChangePassword):

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

Имя параметра Описание
submitVar Ключ, значение которого проверяется, перед тем как сниппет ChangePassword начнёт обрабатывать форму. Если в качестве значения этого параметра указать пустую строку или false, то сниппет ChangePassword будет обрабатывать форму при получении любого Post запроса. Значение ключа: change-password.
placeholderPrefix Префикс, который будут иметь плейсхолдеры, устанавливаемые с помощью этого сниппета. Значение: cp. .
validateOldPassword Указывает, требовать ли от пользователя ввод текущего пароля для успешного установления нового. Значение: 1 (да, требовать).
reloadOnSuccess Определяет необходимо ли перезагружать эту страницу (ресурс) после успешного установления нового пароля или нет. Если значение этого параметра установить равным 1, то данный сниппет перезагрузит эту страницу с параметром GET, предотвращающим повторную отправку данных на сервер. В противном случае (значение 0), сниппет ChangePassword выведет сообщение в плейсхолдер. Значение: 0 (вывести сообщение об успехе в плейсхолдер).
successMessage Если параметр reloadOnSuccess имеет значение 0, то данный сниппет выведет указанное в successMessage сообщение в плейсхолдер [prefix].successMessage. Значение: Ваш пароль успешно изменён.

Страница «Редактирование данных»

Эта страница предназначена для изменения данных пользователя, таких как полное имя (fullname), телефон (phone), мобильный телефон (mobilephone), адрес (address), страна (country), город (city), веб-сайт (website). Логику работы по обновлению данных пользователя выполняет сниппет UpdateProfile из пакета Login.

Содержимое ресурса «Редактирование данных» (сниппет UpdateProfile):

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

Имя параметра Описание
submitVar Имя кнопки submit, которая отправляет форму обновления профиля пользователя на сервер. Значение по умолчанию: login-updprof-btn
validate Список (через запятую) полей для валидации (проверки). Указывается так: имя:валидатор (например, username: required , email:required ). Валидаторы можно соединять в цепочки. Например, email:email:required .

Страница «Личный кабинет»

На этой странице будем отображать сведения из профиля пользователя, а также кнопки, с помощью которых пользователь может перейти на страницы «Изменения пароля» и «Редактирование данных». Для получения данных пользователя будем использовать сниппет Profile.

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

Содержимое ресурса «Личный кабинет» (сниппет Profile):

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

Имя параметра Описание
prefix Префикс, который будут иметь плейсхолдеры, установленные этим сниппетом.
user Необязательный параметр. Предназначен для указания пользователя, данные которого необходимо вывести. Задаётся параметр посредством указания идентификатора (id) или имени (username) пользователя. По умолчанию: текущий пользователь.
useExtended Определяет необходимо ли устанавливать все расширяемые поля пользователя в качестве плейсхолдеров. Значение по умолчанию: 1 (да, необходимо).

Комментарии:

Уважаемы Александр,
А отчего у меня только вот так работает
а вот так
уже не работает

ну и logout не отрабатывает
хотя
в снипете login выдает

Здравствуйте! Простите, где-то видела в комментариях хороший вопрос о словарных плейсхолдерах типа [[!%login.country]], [[!%login.update_profile]] и Ваш подробный ответ, но не могу найти этот коммент(

И в Управление словарями MODX не могу их найти, где они установлены, где их можно изменить.https://itchief.ru/assets/uploadify/1/f/0/1f0a1562b54eeaaefd72b56a3ce2316a.png

Здравствуйте! Этот? (для сохранения комментария себе в избранное можно нажать на значок «Звездочка» рядом с комментарием). Лексиконы имеет смысл использовать только на многоязычных сайтах или который может стать таким в будущем. В противном случае просто замените его на нужный текст.

Для изменения значения лексикона на странице «Управления словарями» необходимо сделать на нём двойной клик и поменять ему текст на другой.

Да, этот, благодарю! Наверно, мне это не нужно, да, проще заменить на слова.

Но вообще-то на странице «Управления словарями», как я прислала скриншот, у меня нет соответствующих записей для страны, телефона и прочих полей.

Подскажите, а как добавить следующий функционал в личный кабинет:
нужно чтобы по адресу mysite.ru/lk/info.html для каждого пользователя была доступна текстовая (или ссылки, картинки) информация, но для каждого пользователя она будет своя, вручную устанавливаемая админом. Причем для каждого пользователя это один и тот же набор полей.

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

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

Здравствуйте.
Подскажите пожалуйста такой момент.

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

И ещё один нюанс после авторизации на странице Личного кабинета, пользователя перебрасывает на главную страницу сайта, а должно перенаправлять на страницу для авторизованного пользователя. Как это поправить можно?

Попробовал добавить редирект который вы предложили. Не работает.
Просто не срабатывает как будто его и нет, в строке также остаётся url личного кабинета (lk).

В принципе меня даже больше смущает не то, что остается url личного кабинета, а то что редирект происходит на главную после авторизации на страницы с url’ом личного кабинета (lk).
Авторизуясь со страницы авторизации, всё срабатывает как должно и мы остаёмся на странице для авторизованного пользователя.

В ключе unauthorized_page у меня стоит не дефолтное значение, а id страницы авторизации.

Какие ещё могут быть варианты?


да, но именно этот плейсхолдер дает у меня сбой… он почему то имеет только одно значение «Ошибка авторизации», при этом вне зависимости от правильного или неправильного заполнения полей… так же обратите внимание, что у меня дает сбой плейсхолдер на проверку старого пароля, он выдает ошибку, хотя пароль устанавливается верно и процесс смены пароля ПРОИСХОДИТ — проверил сто раз… думаю, что верхний плейсхолдер с ошибкой зависит от второго, поэтому вопроса 2:
1) Почему у меня выводится только одно значение плейсхолдера с ошибкой вверху вне зависимости от характера ошибки в форме «Ошибка авторизации» Я то уж никак не могу повлиять на этот плейсхолдер…
2) Почему при проверке старого пароля он выдает ошибку, хотя пароль верный и сама программа смены пароля выполняется (поэтому и вверху сохраняется сообщение об ошибке, за которым следует сообщение об успешной авторизации)
Может это по причине, что после установки нового пароля программа сравнивает введенный и ОСТАВШИЙСЯ в форме старый пароль уже с НОВЫМ?!

Вообще на мой взгляд непонятно. почему взаимоисключаются функции сброса формы (перезагрузки) и сообщения об успехе… я бы например сделал лучше это одновременно

СОРРИ. Я С ДЖУМЛОЙ СПУТАЛ… КОНЕЧНО 2.6.5.

Как то я плохо понимаю работу плейсхолдеров…
у меня добавилось вопросов.
не совсем понял как работают поля в UpdateProfile
В Регистрации вроде все сделал — добавил поля через Extended, заполняю их при регистрации, они все попадают в Кабинет.
(кроме select пола, он почему то выдает «0», что то я с HTML не так сделал)
Но вот при редактировании профиля я не могу поменять значения этих добавленных полей. меняю, нажимаю на кнопку и возвращаются значения регистрационные… тыкаюсь как слепой… уже и префиксы пробовал устанавливать зачем то, не помогает — редактируются только изначально существующие поля в чанке, добавленные поля (я там тоже EXTENDED установил и добавил их) не редактируются. Какой смысл тогда в EXTENDED? что я не так делаю.

Итак, резюмирую свои нерешенные проблемы (я пока на локалке, хостинга нет. это мой первый проект, пока не отлажу сайт, смысл заливать его на хост):
1) двойное сообщение о регистрации. Это бы еще ничего, но так же дублируются сообщения при сбросе пароля. а это уже криминал, ибо в них разные ссылки и разные пароли
2) После авторизации и смене пароля в форме возникает ошибка авторизации почему то и сведения о неверном старом пароле ПРИ сообщении об успешной смене пароля. пароль меняется.
3) Не понял как редактировать расширенные поля. Ведь во время регистрации нельзя давать пользователю слишком много полей заполнять — уйдет с сайта, а вот после регистрации через изменение профиля он вполне мог бы добавить данные. Но после регистрации я могу менять сайт, fullname (вообще непонятное мне поле) телефон, адрес, город, страну. Все расширенные поля либо пустые, либо те, которые заполнялись при регистрации — не редактируются… И никаких сообщений об успешном изменении данных не выдается.

Источник

Читайте также:  Как чистить парогенератором пятна
Оцените статью