Содержание

Авторизация пользователей на MODX Login

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

Перед тем, как переходит к изучению этой темы, рекомендуется выполнить действия, приведённые статье: Регистрация пользователей.

Форма авторизации и её обработка с помощью Login

Реализовывать страницу «Авторизация» будем с помощью компонента Login. Этот компонент будет отображать простую форму входа и выхода, а также обрабатывать аутентификацию пользователя.

1. Поместим в содержимое ресурса «Авторизация» вызов сниппета Login со следующими параметрами:

[[!Login?
  &tplType=`modChunk`
  &loginTpl=`myLoginTpl`
  &logoutTpl=`myLogoutTpl`
  &loginResourceId=`6`
]]

Описание некоторых параметров сниппета Login:

Имя параметра Описание
tplType Тип шаблона для loginTpl и logoutTpl. Значение: modChunk.
loginTpl Шаблон формы для авторизации (входа) пользователя.
logoutTpl Шаблон, который отображается авторизованному пользователю.
loginResourceId Ресурс, на который необходимо перенаправить пользователя при успешном входе в систему. Значение по умолчанию: 0 (перенаправит на эту же страницу)
errTpl Шаблон, который отображается пользователю при возникновении ошибки.
redirectToPrior Если установлено значение 1, то перенаправляет пользователя на предыдущую страницу (HTTP_REFERER) после успешного входа.

Содержимое чанка myLoginTpl (форма входа):

<div>
  <div>
    <div>[[+actionMsg]]</div>
      <div>
        [[+errors:notempty=`
          <div role="alert">[[+errors:striptags]]</div>
        `]]
        <form action="[[~[[*id]]]]" method="post">
          <div>
            <label for="username">[[%login.
username]]</label> <input type="text" name="username"> </div> <div> <label for="password">[[%login.password]]</label> <input type="password" name="password"> </div> <input type="hidden" name="returnUrl" value="[[+request_uri]]" /> <input type="hidden" name="service" value="login"> <input type="submit" name="login" value="[[+actionMsg]]"> </form> <p><a href="[[~5]]">Забыли пароль?</a></p> </div> </div> </div> </div>

Отображение ошибки при входе в систему:

Содержимое чанка myLogoutTpl:

<div>
  <div>
    <div>Пользователь: <b>[[!+modx.user.username]]</b></div>
    <div>
      [[+errors:notempty=`<div role="alert">[[+errors:striptags]]</div>`]]
      <div>
        <a href="[[~6]]">Личный кабинет</a>
        <a href="[[~7]]">Изменение пароля</a>
        <a href="[[~8]]">Редактирование данных</a>
        <a href="[[+logoutUrl]]">[[+actionMsg]]</a>
      </div>
    </div>
  </div>
</div>

Этот контент отображается авторизированному пользователю. В конце списка доступна кнопка для выхода из системы.

Сброс пароля. ForgotPassword и ResetPassword

Страница «Восстановления пароля» позволит пользователю сбросить пароль, если он его забыл. Переход на эту страницу осуществляется посредством нажатия на ссылку «Забыли пароль?», которая расположена в нижней части формы входа.

На этом ресурсе выполняются следующие действия:

  1. Отображение пользователю формы, с помощью которой он может запросить сброс пароля, указав в ней для этого свое имя или адрес электронной почты;
  2. Если пользователь с указанными данными имеется в системе, то ему отправляется письмо на email; письмо содержит ссылку, перейдя по которой выполнится сброс пароля;
  3. При успешном сбросе пользователю отображается сообщение.

Для выполнения этих действий на странице используются два сниппета: ForgotPassword

и ResetPassword.

ForgotPassword отображает пользователю форму для сброса пароля, а также отправляет письмо со ссылкой для подтверждения сброса. ResetPassword выполняет действия при открытии страницы посредством ссылки из письма. Он получает данные из URL и проверяет их на соответствие. В случае успеха сбрасывает пароль и отображает сообщение, содержащее ссылку для перехода на страницу входа.

Использование сниппетов ForgotPassword и ResetPassword для восстановления пароля:

[[!ResetPassword:empty=`
  [[!ForgotPassword?
    &tpl=`myForgotPassTpl`
    &emailSubject=`Восстановление пароля`
    &sentTpl=`myForgotPassSentTpl`
    &loginResourceId=`4`
    &resetResourceId=`[[*id]]`
  ]]`?
  &tpl=`myResetPassTpl`
  &loginResourceId=`4`
  &expiredTpl=`myExpiredTpl`
]]

Этот код необходимо вставить в содержимое ресурса «Восстановления пароля».

Описание некоторых параметров сниппета ForgotPassword:

Имя параметра Описание
tpl Шаблон формы для восстановления пароля.
Значение по умолчанию: lgnForgotPassTpl.
emailTpl Шаблон письма для отправки по email. Значение по умолчанию: lgnForgotPassEmail.
emailSubject Тема письма. По умолчанию: Password Retrieval Email.
sentTpl Сообщение, которое необходимо показать пользователю, когда электронное письмо было успешно отправлено. По умолчанию: lgnForgotPassSentTpl.
loginResourceId Ресурс, на который следует направить пользователей при успешном подтверждении. По умолчанию: 1.
resetResourceId Идентификатор ресурса, содержащий сниппет ResetPassword. По умолчанию: 1.

Описание некоторых параметров сниппета ResetPassword:

Имя параметра Описание
tpl Сообщение, содержащее информацию о сбросе пароля. По умолчанию: lgnResetPassTpl.
tplType Тип tpl, предоставляемый tpl. По умолчанию: modChunk
.
loginResourceId Ресурс, на который необходимо направить пользователя при успешном выполнении сброса пароля. По умолчанию: 1.
expiredTpl Сообщение, которое будет выводиться в случае, когда пароль по этой ссылке был уже сброшен или срок действия ссылки уже истек. Значение по умолчанию: lgnExpiredTpl.

Содержимое чанка myForgotPassTpl (форма для для сброса пароля):

<div>
  <div>
    <div>[[%login.forgot_password]]</div>
      <div>
        [[+loginfp.errors:notempty=`<div role="alert">[[+loginfp.errors:striptags]]</div>`]]
        <form action="[[~[[*id]]]]" method="post">
          <div>
            <label for="username">[[%login.
username]]</label> <input type="text" name="username" value="[[+loginfp.post.username]]"> </div> <div>[[%login.or_forgot_username]]</div> <div> <label for="username">[[%login.email]]</label> <input type="text" name="email" value="[[+loginfp.post.email]]"> </div> <input type="hidden" name="returnUrl" value="[[+loginfp.request_uri]]" /> <input type="hidden" name="login_fp_service" value="forgotpassword" /> <input type="submit" name="login_fp" value="[[%login.reset_password]]"> </form> </div> </div> </div> </div>

Содержимое чанка myForgotPassSentTpl (контент, который будет отображаться пользователю, когда электронное письмо было успешно отправлено):

<div>
  <div>
    <div>Сброс пароля</div>
    <div>
      Ссылка для сброса пароля отправлена на email <b>[[+email]]</b>.
</div> </div> </div>

Содержимое письма, которое будет отправлено на email находится в словаре login.forgot_password_email_text:

<p>Здравствуйте [[+username]].</p>
<p>Чтобы активировать ваш новый пароль, пожалуйста, перейдите по ссылке:</p>
<p><a href="[[+confirmUrl]]">[[+confirmUrl]]</a></p>
<p>Если подтверждение пройдет успешно, вы сможете использовать следующий пароль для входа:</p>
<p><strong>Пароль:</strong> [[+password]]</p>
<p>Если вы не запрашивали это сообщение, пожалуйста, игнорируйте его.</p>
<p>Спасибо.<br />
<em>Администрация сайта [[++site_name]]</em></p>

Содержимое чанка myResetPassTpl (сообщение, которое будет выводиться при успешном сбросе):

<div>
  <div>
    <div>Сброс пароля</div>
    <div>
      <b>[[+username]]</b>, Ваш пароль был успешно сброшен.  Пожалуйста, нажмите <a href="[[+loginUrl]]">сюда</a>, чтобы перейти на страницу входа.
    </div>
  </div>
</div>

Содержимое чанка myExpiredTpl (содержимое, которое будет показываться при ошибке сброса):

<div>
  <div>
    <div>Сброс пароля</div>
    <div>
      Ваш пароль уже был сброшен или срок действия ссылки истек. Если вам нужно снова сбросить свой пароль, нажмите <a href="[[~[[*id]]]]">здесь</a>.
    </div>
  </div>
</div>

Следующая тема: Личный кабинет пользователя на MODX Login.

Login MODX Revolution. Авторизации на сайте

Что такое Login?

Login – это дополнение, реализующее функции безопасности для MODx Revolution, оно позволяет обеспечить вход пользователю в персональный раздел из клиентской области, производить обновления персонального раздела, непосредственно регистрацию, восстановление забытого пароля.

История создания

Login написано Шоном МакКорником в качестве дополнения, реализующего функции входа в систему и обеспечение безопасности процессов, требующих авторизации. Впервые опубликовано 25 июня 2009.

Загрузка

Дополнение может быть загружено с помощью менеджера MODx Revolution, используя Package Management, или из хранилища дополнений MODx.

Использование

Дополнение Login включает в себя 10 сниппетов:

  • Login – Используется при авторизации.
  • UpdateProfile – Обеспечивает редактирование персонального раздела из клиентской области.
  • Profile – Формирует поля персонального раздела в виде плейсхолдеров, что позволяет вывести на экран персональный раздел пользователя.
  • ForgotPassword – Обеспечивает восстановление утерянного пароля.
  • ResetPassword – Сниппет, обеспечивающий подтверждение сброса пользовательского пароля.
  • Register – Обеспечивает работу формы регистрации.
  • ConfirmRegister – страница подтверждения, используемая для работы Формы регистрации и активации.
  • ChangePassword – Используется для изменение пароля пользователя из клиентской области.
  • ActiveUsers – Выводит список активных, вошедших с паролем пользователей.
  • isLoggedIn – Проверяет, имеет ли вошедший пользователь право доступа к текущему контенту или разделу. Если нет, то пользователь перенаправляется на страницу, сообщающую, что у него нет доступа.

Что такое Login?

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

Использование

Пример использования Login:

Можно задать определенный / специфический шаблон, но при этом нужно убедиться, что вызываются также и параметры &tpl типа:

Для использования дополнительных возможностей ознакомьтесь со свойствами сниппета.

Свойства

Login обладает несколькими свойствами, позволяющими настраивать его работу.


Имя

Описание

Значение по умолчанию

1

actionKey

Переменная Запрос (REQUEST), отображающая, какое действие запрашивается. По умолчанию ‘service’. Удобно использовать, если на сайте уже используется переменная REQUEST со значением ‘service’ и ее нужно изменить.

service

2

loginKey

Параметр для обеспечения входа / логина на сайт. По умолчанию ‘login’. Данный параметр сообщает Login начать работу, только если значением actionKeyявляется ‘login’. Например, если значение actionKey ‘service’ , а loginKey задан как ‘login’, то процесс входа начнется при обнаружении условия ‘&service=login’

login

3

logoutKey

Параметр для обеспечения выхода с сайта. По умолчанию ‘logout’. Данный параметр сообщает Login начать работу, только если значением actionKeyявляется ‘logout’. Например, если значение actionKey ‘service’ , а loginKey задан как ‘logout’, то процесс выхода начнется при обнаружении условия ‘&service=logout’

logout

4

rememberMeKey

Опционально. Имя поля переключателя Напомнить (Remember Me) для обеспечения возможности входа на сайт. По умолчанию «rememberme».

rememberme

5

tplType

Тип шаблона, обеспечивающий работу loginTpl or logoutTpl. Возможные значения описаны в разделах ниже.

inline

6

loginTpl

Шаблон формы входа. Тип определяется значением, заданным в свойствах tplType.

lgnLoginTpl

7

logoutTpl

Шаблон формы выхода. Тип определяется значением, заданным в свойствах. tplType

lgnLogoutTpl

8

errTpl

Шаблон сообщения об ошибке. Тип определяется значением, заданным в свойствах errTplType .

lgnErrTpl

9

errTplType

Тип шаблона, обеспечивающий работу errTpl.

modChunk

10

loginResourceId

Ресурс, перенаправляющий пользователей при успешном входе. 0 перенаправляет в персональный раздел. will redirect to self. Не заполняйте при использовании страницы без авторизации по умолчанию.

0

11

loginResourceParams

Параметры объекта JSON , присоединяемые к ссылке-редиректу при входе в аккаунт. Пример: {«test»:123} преобразуется в url. html?test=123


12

logoutResourceId

ID ресурса, на который перенаправляется пользователь после успешного выхода из аккаунта. 0 перенаправляет на себя.

0

13

logoutResourceParams

Параметры объекта JSON , присоединяемые к ссылке-редиректу при выходе из аккаунта. Пример: {«test»:123} преобразуется в url.html?test=123


14

loginMsg

Необязательное сообщение-ярлык при акте входа. Если не заполнена, будет использоваться назначенная по умолчанию строчка из словаря Login.


15

logoutMsg

Необязательное сообщение-ярлык при акте выхода. Если не заполнена, будет использоваться назначенная по умолчанию строчка из словаря Logout.


16

redirectToPrior

После успешного входа пользователь перенаправится на реферральную страницу (HTTP_REFERER), если значение устнаовлено как true / истина.

0

17

contexts

(Экспериментальный параметр) Контекстный список (разделитель — запятая) для входа. По умолчанию для использования текущего контекста не требуется задавать какие-либо параметры.


18

preHooks

Список ‘hooks’ (или сниппетов), исполняемых перед тем, как пользователь зарегистрируется, но после валидации. В качестве ‘hook’ можно задать ‘recaptcha’


19

postHooks

Список ‘hooks’ (или сниппетов), исполняемых после того, как пользователь зарегистрируется.


20

toPlaceholder

Если задан, будет направлять выходные данные сниппета-логина в плейсхолдер с данным именем вместо непосредственного вывода возвращаемого контента.


21

redirectToOnFailedAuth

(Для версии 1.6.4-pl & +) Перенаправляет на отдельную страницу при неверном входе.


Опции tplType

tplType и errTplType свойства обладают списком различных опций и позволяют их выбрать. Такими опциями могут быть:

  • modChunk — Обеспечиваемый шаблон должен быть назван именем чанка.
  • file – Должен быть абсолютный путь к файлу шаблона.
  • inline – Контент шаблона будет непосредственно в его свойствах.
  • embedded – Шаблон уже встроен в страницу, просто задайте свойства ошибки как плейсхолдер.

Использование reCaptcha

Сначала убедитесь, что Системные установки `recaptcha.public_key` и `recaptcha.private_key` установлены в соответствии с вашими reCaptcha API ключами. Затем все, что нужно сделать для их добавления- это добавить «recaptcha» preHook в ваш вызов сниппета.:

Убедитесь, что плейсхолдер является вашим loginTpl чанком. Это сделает reCaptcha необходимым при входе пользователя с паролем.

Logout

Как выполняется выход пользователя (log out)? Просто вызываете страницу, содержащую ваш сниппет Login и передаете определенный ‘logout’ как сервис / service через URL. В нижеприведенном примере сниппет Login snippet находится на странице 21:

 <a href="
" title="Logout">Logout</a>
(which automatically appends '&service=logout' to your URL)

ChangePassword?

Сниппет ChangePassword

ChangePassword простой сниппет, который используется в сочетании с Login, что позволяет пользователям менять свой пароль на сайте MODX Revolution. Вы можете разместить его в любом месте, и он будет обрабатывать форму для изменения пароля пользователем.

Использование ChangePassword

Просто создайте форму для восстановления пароля, а также в нужном месте страницы, поставить вызов сниппета. Например:

<h3>Восстановление пароля</h3>

<div></div>
<form action="documentation/login/" method="post">
    <input type="hidden" name="nospam" value="" />
    <div>
        <label for="password_old">Old Password
            <span></span>
        </label>
        <input type="password" name="password_old" value="" />
    </div>
    <div>
        <label for="password_new">New Password
            <span></span>
        </label>
        <input type="password" name="password_new" value="" />
    </div>
    <div>
        <label for="password_new_confirm">Confirm New Password
            <span></span>
        </label>
        <input type="password" name="password_new_confirm" value="" />
    </div>
    <div>
        <input type="submit" name="change-password" value="Change Password" />
    </div>
</form>

Свойства ChangePassword

ChangePassword поставляется с некоторыми свойствами установленными по умолчанию, их можно переопределить. К ним относятся:

Имя Описание По умолчанию
submitVar Если пусто, либо установлено значение false, ChangePassword будет обрабатывать все запросы POST в форме. logcp-submit
fieldOldPassword Имя поля для ввода старого пароля. password_old
fieldNewPassword Название поля для ввода нового пароля. password_new
fieldConfirmNewPassword Необязательно. Если установлено,то новый пароль надо будет подтвердить, повторно ввести. password_new_confirm
validateOldPassword Значение 1 или 0. Определите, требуется ли пользователю ввести текущий пароль, чтобы успешно сбросить пароль. 1
preHooks Список хуков введенных через запятую для проверки формы.
postHooks What scripts to fire, if any, after the user has been registered. This can be a comma-separated list of hooks, and if the first fails, the proceeding ones will not fire. A hook can also be a Snippet name that will execute that Snippet.
redirectToLogin Редирект для пользователей не авторизованных на сайте. Перенаправляет на указанную страницу. 1
reloadOnSuccess Если 1, то страница будет перенаправить к себе с параметром GET для предотвращения двойных обратных передач. 1
successMessage Если reloadOnSuccess установлен на 0, выход это сообщение в [префикса]. SuccessMessage заполнителя.
placeholderPrefix Префикс для использования для всех заполнителей, установленных этом фрагменте. logcp.

Сниппет ConfirmRegister?

ConfirmRegister простой фрагмент, С помощью которого пользователь должен подтвердить регистрацию на сайте, когда «активации» в сниппете Register устанавливается в 1 (по умолчанию). вызывать сниппет необходимо на отдельной странице.

Использование ConfirmRegister

Сниппет Register по умолчанию требует от пользователя активировать свою учетную запись. Затем пользователь получает электронное письмо с URL, чтобы активировать свою учетную запись. Как только пользователь переходит на страницу активации, он может авторизоваться на сайте.

Вам необходимо создать страницу Активация пользователя с вызовом сниппета:

[[! ConfirmRegister]]

К примеру страница регистрации будет выглядеть так:

таким образом пользователю будет отправлено письмо с содержимым указанным в чанке «myActivationEmailTpl», с указанным адресом(26) страницы для перехода что бы активировать учетную запись — на которой вы поместили вызов сниппета ConfirmRegister.

Свойства по умолчанию

ConfirmRegister имеет некоторые свойства установленные по умолчанию. К ним относятся:

Имя Описание Значение
redirectTo Необязательно. После успешного подтверждения, перенаправит на этот ресурс.
redirectParams Необязательно. Объект JSON параметров для передачи при перенаправлении с использованием redirectTo.
authenticate Аутентификация и авторизация пользователя в текущем контексте после подтверждения регистрации. 1
authenticateContexts Необязательно. Контексты через запятую для проверки подлинности. По умолчанию в текущем контексте.
errorPage Необязательно. Если установлено, будет перенаправлять пользователя на страницу ошибки, если они попытаются открыть страницу после активации своей учетной записи.

Сниппет ForgotPassword?

ForgotPassword простой фрагмента, которая обрабатывает форму, когда пользователь забыл свой пароль и нуждается в его восстановлении.

Использование ForgotPassword

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

[[ResetPassword!? &LoginResourceId=`72`]]

Затем создайте еще одну страницу с вызовом сниппета ForgotPassword и назначить страницу на которой вызван сброс пароля:

[[!ForgotPassword? &ResetResourceId=`123`]]

ForgotPassword Свойства

ForgotPassword поставляется с некоторыми свойствами по умолчанию их можно переопределить. К ним относятся:

Имя Описание Значения
tpl Чанк сообщения о сбросе пароля lgnForgotPassTpl
tplType Тип чанка tpl modChunk
emailTpl Чанк сообщения по электронной почте. lgnForgotPassEmail
emailSubject Тема почтового уведомления Password Retrieval Email
emailTplType Тип TPL, предоставляемой emailTpl modChunk
sentTpl Чанк сообщающий об успешной отправке lgnForgotPassSentTpl
sentTplType Тип TPL, предоставляемой sentTpl modChunk
loginResourceId Ресурс куда будет перенаправлен пользователь для авторизации. 1
resetResourceId Ресурс, который содержит Login. ResetPassword фрагмент. 1

tplType Опции

Имущество tplType занимает различные варианты. Они могут быть:

  • modChunk — TPL условии должно быть название кусок.
  • file — Должен быть абсолютный путь к TPL файла.
  • inline — Содержание TPL будет непосредственно в самой TPL собственности.
  • embedded — TPL уже на странице, просто убедитесь, свойства ошибках быть заполнители.
  • Сниппет Profile?

    Profile устанавливает все текущие поля пользователя (или заданного пользователя) , что позволяет отображать информацию о пользователе на странице.

    Использование

    Просто добавьте вызов сниппета на странице, на которой вы хотите отображать профиль пользователя MODX Revolution:

    </code><p></p>
    И плейсхолдеры<p></p>
    <code><p>Username: </p>
    <p>Email: </p>
    <p>State: </p>

    <u><strong>Поля пароль никогда не установдивайте в качестве заполнителей, по соображениям безопасности. </strong></u>

    Свойства Profile:

    Профиль поставляется с некоторыми свойствами по умолчанию их можно переопределить. К ним относятся:

    Имя Описание Значения
    prefix Строка в качестве префикса все заполнители для полей, которые будут установлены в сниппете.
    user Необязательно. Либо ID пользователя или имя пользователя. Если установлено, будет показан профиль этого пользователя.
    useExtended Если это включено, будет установлено в качестве заполнителей все расширенные поля, а также. 1

    Пример

    Вывод информации вошедшего пользователя

    
     
    <p>Username: </p>
    <p>Email: </p>

    Отображение вошедшего пользователя информации Любимы цвет с префиксом usr:

    [[!Profile? &prefix=`usr. `]]

    &lt;p>[[+usr.username]]'s favorite color is [[+usr.color]]&lt;/p>

    Сниппет ResetPassword?

    ResetPassword простой сниппет, который используется в сочетании с ForgotPassword, что позволяет пользователям восстанавливать забытый пароль. Этот сниппет размещается на странице, ссылку на которую пользователь получит по электронной почте, и перейдя по которой сбросит свой пароль.

    Использование

    Создайте ресурс с вызовом сниппета:

    [[!ResetPassword? &LoginResourceId=`72`]]

    Затем создайте другой ресурс с вызовом сниппета ForgotPassword, и укажите id ресурса где находиться вызов сниппета ResetPassword:

    [[!ForgotPassword? &ResetResourceId=`123`]]

    Свойства ResetPassword

    ResetPassword поставляется с некоторыми свойствами по умолчанию, их можно переопределить. К ним относятся:

    Name Description Default
    tpl Чанк сброса пароля lgnResetPassTpl
    tplType Тип TPL, предоставляемой TPL modChunk
    loginResourceId Ресурс, куда будет направлен пользователь при успешном сбросе. 1

    tplType Опции

    Свойства tplType имеет различные варианты. Такие как:

    • modChunk — TPL условии для чанка.
    • file — Должен быть абсолютный путь к TPL файлу.
    • inline — Содержание TPL будет непосредственно в самой TPL собственности.
    • embedded — TPL уже на странице, просто убедитесь, свойства ошибках быть заполнители.

    Сниппет UpdateProfile?

    UpdateProfile простой фрагмент, который позволяет пользователям, которые авторизованы на сайте редактировать свой профиль.

    Использование

    Для использования функции редактирования профиля, сначала создайте ресурса перейдя на который пользователь сможет отредактировать свой профиль. Затем добавьте этот вызов сниппета:

    [[!UpdateProfile? &validate=`fullname:required,email:required:email`]]

    Свойства UpdateProfile

    UpdateProfile поставляется с некоторыми свойствами по умолчанию, их можно переопределить. К ним относятся:

    Имя Описание Значения
    submitVar The name of the form submit button that triggers the submission. login-updprof-btn
    validate Через запятую список полей для проверки, с каждым именем поля, как имя: валидатор (например: username:required,email:required). валидаторов также может быть прикован, как электронная почта: email:email:required. Это свойство может быть указан на нескольких строках.
    redirectToLogin Редирект на страницу авторизации для анонимных пользователей 1
    reloadOnSuccess Сообщение об успешной отправке 1
    emailField Имя поля email для формы email
    preHooks Через запятую список плейсхолдеров, или сниппеты, которые будут выполняться при обновлении профиля, но после проверки. Также можно указать «капчу», как плейсхолдер.
    postHooks Через запятую список плейсхолдеров, или сниппетов, которые будут обработаны после обновления профиля
    syncUsername Если установлен как имя столбца в профиль, UpdateProfile попытается синхронизировать имя пользователя в этой области после успешного сохранения.
    useExtended Whether or not to set any extra fields in the form to the Profiles extended field. This can be useful for storing extra user fields. 1
    excludeExtended Через запятую список полей для исключения.
    placeholderPrefix Префикс для использования для всех заполнителей, установленных в этом сниппете.

    Форма UpdateProfile

    Затем, ниже вызова сниппета разместите форму html (добавьте любые поля, которые нужны в форме). Эта форма находится в чанке lgnupdateprofile.chunk.tpl.

    <div>
        <div></div>
        
     
        <form action="documentation/login/" method="post">
            <input type="hidden" name="nospam" value="" />
     
            <label for="fullname">login.fullname
                <span></span>
            </label>
            <input type="text" name="fullname" value="" />
     
            <label for="email">login.email
                <span></span>
            </label>
            <input type="text" name="email" value="" />
     
            <label for="phone">login.phone
                <span></span>
            </label>
            <input type="text" name="phone" value="" />
     
            <label for="mobilephone">login.mobilephone
                <span></span>
            </label>
            <input type="text" name="mobilephone" value="" />
     
            <label for="fax">login. fax
                <span></span>
            </label>
            <input type="text" name="fax" value="" />
     
            <label for="address">login.address
                <span></span>
            </label>
            <input type="text" name="address" value="" />
     
            <label for="country">login.country
                <span></span>
            </label>
            <input type="text" name="country" value="" />
     
            <label for="city">login.city
                <span></span>
            </label>
            <input type="text" name="city" value="" />
     
            <label for="state">login.state
                <span></span>
            </label>
            <input type="text" name="state" value="" />
     
            <label for="zip">login.zip
                <span></span>
            </label>
            <input type="text" name="zip" value="" />
     
            <label for="website">login. website
                <span></span>
            </label>
            <input type="text" name="website" value="" />
     
            <br />
     
            <div>
                <input type="submit" name="login-updprof-btn" value="login.update_profile" />
            </div>
        </form>
    </div>

    MODx Revo, настройка авторизации Login. Базовая установка / Хабр

    Данная статья в большей части является переводом урока с официального rtfm, а именно компонента «Login», но с вставками переводчика. На лучший перевод не иду, но суть в итоге должна быть понятной. Тем не менее, перевода на русский я до сих не нашёл.
    Данный урок, хоть и называется «базовым», имеет много взаимосвязанных частей. В данном уроке мы будем обсуждать, какие страницы надо создать, какие чанки (фрагменты кода) и сниппеты нужно опубликовать на страницах для полноценной авторизации пользователей.

    Номера в скобках — это ID ресурсов. Это page_id, у вас он может отличаться. Здесь они выбраны просто для удобства.

    Создаём нужные страницы

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

    • Страница входа (1): страница, содержащая форму входа
    • Сброс пароля (2): страница, где пользователи могут запросить восстановление пароля
    • Сброс пароля, обработчик (3): скрытая страница, которая будет на самом деле сбрасывать пароль. Пользователи её видеть не будут.
    • Страница только для пользователей (4): страница, содержимое которого видят только авторизованные пользователи сайта
    • Страница выхода (5): страница, на которую переадресовывается пользователь после успешного выхода

    Вот так у меня выглядит дерево ресурсов в данный момент. Имейте виду, что у вас ID ресурсов будет другой. В данном примере ничего кроме страниц для компонента «Login» нету.

    Дальше, нам нужно назначить правильные права для пользователей и ресурсов.

    Создаём необходимые группы пользователей и группы ресурсов

    MODX Revo имеет очень гибкую систему детализации прав, когда дело доходит до разрешений для пользователей, но в данной теме мы сделаем только то, что нам нужно не заходя глубоко в тему. И так, приступим.
    1. Безопасность → Группы Ресурсов
    Нажимаем на «Создать группу ресурсов» и называем её «Только для пользователей», например. Нажимаем «Сохранить» и всё, на данной странице больше ничего не меняем.

    2. Безопасность → Контроль доступа
    На первой вкладке «Группы пользователя» нажимаем на «Новая группа пользователей». Новую группу назовём «Пользователи» и нажмём «Сохранить». Группа пользователей будет иметь доступ к ресурсам «Только для пользователей». Зачем это нам, мы узнаем чуть позже в рамках этого урока.

    3. На этой же странице (Безопасность → Контроль доступа), щелкнём правой кнопкой мыши на созданную группу пользователей и выберем «Редактировать группу пользователей».

    Далее переходим на вкладку «Доступ к группам ресурсов» и щёлкаем на «Добавить группу ресурсов». Для правильной работы, должны быть как минимум такие параметры:
    Группа ресурсов: Только для пользователей (тот, который мы только что создали)
    Минимальная роль: Member-9999
    Политика доступа: Load, List and View
    Контекст: web
    И сохраняем.

    4. Безопасность → Управление пользователями
    Создаём «нового пользователя» и тем самым проверяем, как будет работать разграничение прав доступа для пользователей.
    В данном случае, используйте простой логин и пароль, ибо нам, как я уже выше писал — важно убедиться в том, что новый пользователь находится в группе «Пользователи». Для этого переходим на вкладку «Права доступа» и нажимаем на «Добавить пользователя в группу».
    Группа пользователя: Пользователи
    Роль: Member
    Затем нажимаем «сохранить» у окошка, а затем ещё раз в правом углу панели управления.

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

    Добавляем сниппеты на страницы

    Страница входа (1)

    Поместите следующий код вызова сниппета на странице входа пользователей.

    [[!Login? &loginTpl=`lgnLoginTpl` &logoutTpl=`lgnLogoutTpl` &errTpl=`lgnErrTpl` &loginResourceId=`4` &logoutResourceId=`5`]] 

    Чанк (фрагмент кода), который отображает форму входа, должна также включать в себя ссылку на страницу с «восстановлением пароля». Разберём, что у нас в вызове формы:
    &loginTpl=`lgnLoginTpl` — за форму входа отвечает чанк lgnLoginTpl, если пользователь не авторизован
    &logoutTpl=`lgnLogoutTpl` — если пользователь авторизован, то ему будет выдаваться содержимое чанка lgnLogoutTpl
    &errTpl=`lgnErrTpl` — при неправильном вводе данных для авторизации, или простым словом «ошибке», будет выводиться чанк lgnErrTpl
    &loginResourceId=`4` — куда переадресовывать пользователя после успешной авторизации. Указано в виде ID ресурса, в данном случае 4.
    &logoutResourceId=`5` — если пользователь авторизован, то при выходе будет переадресован на страницу с ID равным 5.
    Так же, хочу отметить, что эти чанки стандартные, можно создать свои чанки, на любой вкус, вёрстку, и реализацию. Это предоставляет возможность выводить форму входа/выхода и прочее в любом желаемом виде, и причём, не устраивая хаоса с кодом. Стандартные шаблоны, кстати, тоже можно изменять.
    Вот код, который будет отдаваться пользователям, которые ещё не авторизовались, другими словами — «форма входа». Чанк — lgnLoginTpl.

    <div>
        <div>[[+errors]]</div>
        <div>
            <form action="[[~[[*id]]]]" method="post">
                <fieldset>
                    <legend>[[+actionMsg]]</legend>
                    <label>[[%login.username]]
                        <input type="text" name="username" />
                    </label>
                     
                    <label>[[%login.password]]
                        <input type="password" name="password" />
                    </label>
                    <input type="hidden" name="returnUrl" value="[[+request_uri]]" />
     
                    [[+login.recaptcha_html]]
                     
                    <input type="hidden" name="service" value="login" />
                    <span><input type="submit" name="Login" value="[[+actionMsg]]" /></span>
                </fieldset>
            </form>
        </div>
    </div>
     
    <a href="[[~2]]">Забыли пароль?</a>

    Вы можете поставить ссылку на «Забыли пароль» (Сброс пароля) внутри вашего шаблона и ссылаться на него по ID. В моём случае, ID ресурса с восстановлением пароля — 2.

    Сброс пароля (2)

    Начнём с того, что это страница чаще всего скрыта из меню. Она является в большей части формой, с помощью которой пользователи могут сбросить пароль. Тут хочется вам объяснить то, что страница со сбросом пароля (с ID 2 в моём случае), предоставляет возможность сказать о том, что пароль нужно восстановить, а сам сброс делает страница «Сброс пароля, обработчик (3)».
    Вызываем форму сброса пароля следующим кодом:

    [[!ForgotPassword? &resetResourceId=`3` &tpl=`lgnForgotPassTpl`]]

    Разберём вызов:
    &resetResourceId=`3` — страница обработчик (в моём случае с ID 3), именно она сбрасывает.
    &tpl=`lgnForgotPassTpl` — чанк с кодом, в котором есть форма сброса пароля.
    Чтобы понять, зачем обработчик и как это работает, предлагаю взглянуть на картинку:

    Сброс пароля, обработчик (3)

    Данная страница должна быть спрятана из всяких менюшек. Тем не менее, даже если ссылка на неё будет — она будет просто бессмысленная.
    Суть её в следующем. Когда пользователь запрашивает сброс пароля, ему на почту приходит сообщение с этой ссылкой, а также с хэшем. Когда пользователь переходит по ссылке из почты, MODx сбрасывает пароль и переадресует пользователя на страницу с входом.
    На странице обработчика, сниппет вызывается вот так:

    [[!ResetPassword? &loginResourceId=`1`]]

    — &loginResourceId=`1` указывает, на какую страницу переадресовывать, в нашем случае на страницу с ID 1, где есть форма входа.

    Страница только для пользователей (4)

    Это страница, подтверждающая то, что пользователь успешно авторизовался. Содержимое данной страницы доступно только авторизованным пользователям.
    Для того чтобы страница была доступна только авторизованным пользователям, нам нужно назначить для неё права. Для этого, в дереве ресурсов нажимаем на «Страницу только для пользователей». Затем, переходим на вкладку «Права доступа», там мы видим текст «Только для пользователей» и справа от него, в колонке «Доступ» видим не отмеченный чек-бокс. Отмечаем чек-бокс и нажимаем «сохранить».

    Страница выхода (5)

    Это страница, на которую попадают пользователи после успешного выхода из аккаунта. Страница должна содержать только основное, например сообщение с прощанием, или ссылку на форму входа. Например:

    <p>Спасибо за посещение! Возвращайтесь скорее!</p>

    Дополнительно

    Страница выхода (5)

    Это не является обязательным, но для тестирования и вообще, удобства при разработке, можно получить специальную ссылку для выхода. Для этого создаём «новую ссылку» (web-link) и заполняем её страницу с ID 1. Например, вызывать страницу со ссылкой вот так:

    [[~1? &service=`logout`]]

    Это можно использовать для выхода в таком виде:

    <a href="[[~1? &service=`logout`]]" title="Выйти">Выйти</a>

    Возможные ошибки

    После того, как мы собрали все страницы, связали их, настроили права доступа, мы должны всё проверить. Если всё работает по нашему плану, то при входе мы будет переправлены на страницу «Только для пользователей». Выйти из аккаунта мы может через страницу входа, так как, если мы авторизованы — то на странице входа появится ссылка на выход. После успешного выхода, вы должны быть переправлены на «страницу выхода».

    Я не могу авторизоваться!

    Обычно, такие проблемы возникают при неправильном указании ID страниц, неправильно написанных имён чанков, или пропущенных квадратных скобок. Внимательно проверьте коды.

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

    [[!Login]]

    А не так:

    [[Login]]

    Я не могу выйти из аккаунта!

    Одной из причин, из-за которой никак выйти из аккаунта является то, что ссылка выхода указывает на страницу, где нету формы входа. Стоит помнить, что кнопка выхода должна указывать на страницу с формой входа.

    Так же, может быть, что при сбросе пароля, на электронную почту не приходит сообщение. В данном случае стоит настроить отправка почты на вашем сервере.

    Вопросы задавайте, если знаю ответ, несомненно помогу. Следующий урок будет переведён в свободное время. Ваши комментарии будут учтены 🙂
    За оформление кода извиняюсь — в первый раз, а как оформлять — нигде не написано…

    Как в modx сделать регистрозависимым логин пользователя

    Пособие по быстрой настройке компонента Login на вашем сайте

    Форма входа на сайт будет размещаться на всех страницах сайта (например, в хедере).

    Вот такую страницу регистрации мы хотим получить:

    Здесь тип учетной записи будет определять, в какую группу мы зарегистрируем пользователя. Так же полем для идентификации (username) будет электронная почта.

    Добавим на страницу вызов сниппета Register:

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

    Разберем параметры вызова:

    &submitVar=&#96;register-btn&#96; — указывает атрибут name тега input&#91;type=submit&#93;. То есть сниппет сработает, только если отправлена форма кнопкой с определенным именем.

    &activationResourceId=&#96;42&#96; — забегая вперед, 42 – это идентификатор страницы, на которой мы будет активировать пользователя.

    &activationEmailTpl=&#96;Email.Activation&#96; — чанк с письмом активации, о нем позже.

    &placeholderPrefix=&#96;reg.&#96; — указывает, что все плейсхолдеры, за редким исключением (об этом дальше), которые создаются в данном сниппете, должны начинаться с «reg.».

    &usernameField=&#96;email&#96; — указывает, что в качестве имени пользователя будет использоваться поле email.

    &usergroupsField=&#96;reg_type&#96; — определяет поле, устанавливающее группу, в которую будет добавлен новый пользователь. — пароли должны совпадать.

    email:required:email – электронная почта должна быть не пуста и являться собственно почтой.

    Конструкция &#91;&#91;!+error.message:default=&#96;&#91;&#91;!$Register.Form&#93;&#93;&#96;&#93;&#93; выводит сообщение об успешной отправке формы или чанк формы, если вы только зашли на страницу или заполнили ее неправильно.

    Создадим вышеупомянутый валидатор valueIn. Для этого создаем сниппет с названием valueIn и следующим кодом:

    Теперь требуется создать чанк Register.Form. В данном случае он будет следующим (используется Bootstrap 3):

    В этой форме замечу несколько вещей, касающихся MODX:

    &#91;&#91;*id&#93;&#93;&#93;&#93;» – форма обрабатывается на той же странице, на которой показывается.

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

    &#91;&#91;!+reg.error.email:notempty=&#96;&#91;&#91;!+reg.error.email&#93;&#93;&#96;&#93;&#93; – опять же в случае провала под полем отобразится сообщение об ошибке.

    <input type=«submit» name=«register-btn» – обязательно указываем имя кнопки, если ранее устанавливали свойство &submitVar.

    Теперь осталось создать чанк Email.Activation с письмом, которое сайт отправляет пользователю:

    Здесь можно использовать плейсхолдеры с именами полей формы. Заметьте, что они пишутся уже без «reg.». Так же добавляется плейсхолдер &#91;&#91;+confirmUrl&#93;&#93;, в котором уже сгенерирована ссылка для активации, даже ничего не нужно делать.

    Последним штрихом в искусстве регистрации нового аккаунта с помощью компонента Login будет создание страницы активации. Используем для этой страницы пустой шаблон, а в контенте страницы нужно указать всего лишь вызов тега:

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

    Приступим к настройке входа в профиль пользователя. Форма авторизации будет простая:

    Добавим ее, вызвав в нужном месте:

    Здесь мы указываем чанк с формой для входа, нарисованной выше (&loginTpl=&#96;Auth.Login&#96;), чанк с кодом, показывающимся авторизованным пользователям (&logoutTpl=&#96;Auth.Logout&#96;), небольшой чанк с выводом ошибки входа (&errTpl=&#96;Auth.Login.Error&#96;). Далее следуют параметры:

    &actionKey=&#96;action&#96; и &loginKey=&#96;login&#96; — основные идентификаторы для обработки запроса. Первый означает имя параметра в POST-запросе, а второй его значение. То есть форма должна передать значение $_POST&#91;’action’&#93;=’login’, чтобы сниппет Login ее обработал.

    &redirectToPrior=&#96;1&#96; — означает, что после входа мы переместимся на ту же страницу, с которой входили.

    &logoutResourceId=&#96;1&#96; — при выходе из профиля мы перейдем на страницу с идентификатором 1.

    Чанк Auth.Login:

    Форма обрабатывается на этой же странице. Если случилась ошибка, то она будет выведена ниже формы в плейсхолдере &#91;&#91;!+errors&#93;&#93;. Так же нужно не забыть ссылки на ресурсы с Регистрацией и восстановлением пароля. Заметьте, что в поле для электронной почты name=«username» – именно в это поле продублировал почту сниппет Register, и оно является для пользователей уникальным.

    Чанк Auth.Logout:

    Эта часть не обязательна, если все пользователи в одной группе. Но, чтобы отобразить группу пользователя, стандартных возможностей сниппетов, входящих в компонент Login, недостаточно. Можно написать простенький сниппет для получения названия группы на xPDO, а можно воспользоваться уже готовым сниппетом pdoUsers, входящим в пакет pdoTools. Параметры, указанные в этом сниппете:

    &users=&#96;&#91;&#91;+modx.user.id&#93;&#93;&#96; — выбираем только текущего авторизованного пользователя.

    &tpl=&#96;User.HeaderBadge&#96; — чанк, в котором мы выведем краткую информацию о пользователе.

    &innerJoin – JSON с джойнами таблиц групп пользователей, описание выходит за рамки статьи. Главное это работает J.

    &select – JSON, добавляющий в выборку поле modUserGroup.name с алиасом group_name.

    Так же за создание ссылки на выход из профиля отвечает плейсхолдер &#91;&#91;+logoutUrl&#93;&#93;. Другой вариант – создать ссылку на главную страницу с параметрами &#91;&#91;

    Чанк с бейджиком пользователя User.HeaderBadge:

    Если бы нам не нужна была группа пользователя, то содержимое этого чанка можно было бы вставить сразу в чанк Auth. Logout. Здесь можно выводить плейсхолдеры с любыми полями modUser и modUserProfile плюс c помощью pdoUsers добавилось поле group_name.

    В чанке Auth.Login.Error простой вывод ошибки:

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

    Разберем параметры этого вызова:

    &tpl=&#96;Auth.ForgotPass.Form&#96; — чанк формы, в которой пользователь введет свой email.

    &submitVar=&#96;forgotpass&#96; — в случае сниппета ForgotPassword достаточно, чтобы параметр с таким названием был передан на сервер и не важно с каким непустым значением.

    &errTpl=&#96;Auth.Login.Error&#96; — вывод ошибки аналогично сниппету Login

    &sentTpl=&#96;Auth. ForgotPass.Sent&#96; — в этом чанке содержится контент, который будет выведен в случае успешной отправки письма на смену пароля.

    &emailTpl=&#96;Email.ForgotPass&#96; — собственно письмо содержится здесь.

    &emailSubject=&#96;Восстановление доступа к аккаунту на сайте Example.Com&#96; — заголовок письма.

    &resetResourceId=&#96;29&#96; — идентификатор ресурса, на котором будет производиться сброс пароля на новый.

    Чанк Auth.ForgotPass.Form:

    Здесь можно использовать данные из формы выше.

    Email.ForgotPass:

    Все очень похоже на чанк письма активации, только пароль здесь сгенерированный в сниппете.

    Завершающим штрихом осталось создать ресурс, на который пользователь будет переходить из письма для обновления пароля. В этом ресурсе нам нужен вызов:

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

    Итак краткий план настройки авторизации и регистрации:

    1. Создаем страницу регистрации и добавляем на нее вызов сниппета Register.

    2. Создаем чанки с формой регистрации Register.Form и письмом активации Email.Activation.

    3. Создаем страницу подтверждения регистрации и размещаем на ней вызов сниппета ConfirmRegister.

    4. Добавляем вызов сниппета Login туда, где хотим разместить форму входа и бейджик авторизованного пользователя.

    5. Создаем чанк с формой входа Auth.Login, чанк с информацией об авторизованном пользователе Auth.Logout, чанк с сообщением об ошибке Auth.Login.Error.

    6. Создаем страницу восстановления пароля и размещаем на ней вызов сниппета ForgotPassword.

    7. Создаем чанк Auth. ForgotPass.Form с формой для восстановления пароля, чанк Auth.ForgotPass.Sent с сообщением об успешной отправке письма, чанк Email.ForgotPass с письмом на сброс пароля.

    8. Создаем ресурс с окончательным сбросом пароля и размещаем в нем вызов сниппета ResetPassword.

    Программное создание пользователей в MODX Revolution

    Эта заметка рассказывает о работе с пользователями MODX Revolution через API.
    Рассматриваются вопросы создания пользователей, изменения полей, авторизации программным методом.

    Создание пользователя

    В MODX Revolution за пользователей отвечает тип modUser. Соответственно, что бы создать пользователя, нужно создавать именно этот объект.

    modUser содержит лишь самую основную информацию, необходимую для авторизации, такую как username, password, remoteKey и еще несколько вспомогательных полей.

    Дополнительная информация о пользователе, такая как фамилия, телефон, email, хранится в профиле пользователя, это объект modUserProfile.

    Посмотрим на пример создания пользователя и его профиля:

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

    В профиле пользователя можно задать много информации (для примера в коде выше задается fullname и email), полный список полей:

    • fullname — полное имя
    • email — электронная почта
    • phone — телефон
    • mobilephone — мобильный телефон
    • dob — дата рождения
    • gender — пол (0 — не указан, 1 — мужской, 2 — женский)
    • address — адрес
    • country — страна
    • city — город
    • state — штат, провинция
    • zip — почтовый индекс
    • fax — факс
    • photo — фото (это путь к файлу, а не сам файл)
    • comment — комментарий
    • website — сайт
    • extended — дополнительные поля, в виде массива, об этом ниже

    Добавление в группы

    Как правило, все пользователи на сайте состоят в каких либо группах, так как же программно добавить пользователя в одну или несколько групп? А вот так:

    Поле extended

    Поле extended объекта modUserProfile позволяет задать набор дополнительных свойств для пользователя. Поле extended представляет собой массив, доступ к полям которого осуществляется по имени. MODX при сохранении в базу преобразует массив в JSON, а при получении объекта из базы преобразует обратно.

    Работать с этим полем очень просто:

    Как видим, $extended может быть любым массивом, в том числе и многомерным. Результат будет таким:

    Обратите внимание, что по полю extended не представляется возможным выполнять сортировку или фильтрацию пользователей (по крайней мере, на уровне базы данных). Так что будьте внимательны при его использовании! Если вам это необходимо, то по всей видимости придется добавлять новые поля, как это сделать написано в официальной документации: http://rtfm.modx.com/display/revolution20/Extending+modUser

    Авторизация

    Для авторизации под конкретным пользователем правильнее всего воспользоваться механизмом процессоров MODX. Для авторизации существует специальный процессор security/login:

    Автологин при регистрации в MODX

    Регистрация пользователя и схема активации, которая используется по-умолчанию в компоненте Register дополнения Login для MODX является полезной для многих приложений, которым нужна функция регистрации, в то же время есть случаи, когда вы не хотите, чтобы пользователь отвекался от некоторого задания, частью которого может быть данная регистрация…

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

    Вы можете видеть из документации дополнения Login, что для того, чтобы обеспечить возможность регистрации на фронтэнде нашего сайта мы должны просто включить сниппет Register в нашу страницу вместе с формой регистрации. По-умолчанию сниппет Register нужно, чтобы пользователь/покупатель «активировал» свой аккаунт нажатием на ссылку в отосланном сниппетом письме. Письмо отсылается по указанному в форме адресу после заполения самой формы и нажатия кнопки подтверждения. Эта ссылка подтверждения, которая остаётся активной в продолжение небольшого времени, является нашей гарантией того, что наш пользователь отправил верный и существующий адрес почты.

    Мы можем пропустить этот шаг активации, используя «активационный» параметр и устанавливая его в 0, таким образом наш вызов сниппета будет выглядеть как:

    Теперь у нас есть пользователь, который зарегистрирован и активирован, но не вошёл. Мы могли бы использовать параметр &submittedResourceID, чтобы перенаправить пользователя к нашей логин странице, НО в потоке коммерческого приложения, где вы пытаетесь направить людей к корзине как можно проще, есть смысл сделать для них автоматический вход и иметь сниппет, который переведёт их сразу же после регистрации на страницу корзины. К нашему счастью, мы легко можем это сделать с помощью параметра &postHooks в нашем вызове Register. Сниппеты, указанные в параметре postHooks, вызываются после того, как пользоваль зарегистрировался, но перед тем, как он перенаправлен на ресурс указанный в параметре submittedResourceID. Нам всего лиш нужно написать сниппет автоматического входа пользователя.

    Давайте назовём наш сниппет register-auto-login. Вызов нашего сниппета Register будет теперь выглядеть как:

    Наиболее простое использование нашего сниппета register-auto-login будет:

    В рабочем коде вы должно быть захотите проверить ответ, который вы получите от вызова runProcessor, чтобы удостоверится, что логин был успешным – используйте $response->isError для этого и возможно редирект к вашему логин ресурсу в нежелательном сценарии, когда автологин не срабатывает. При удачном логине мы можем использовать как преимущество параметр submittedResourceID для редиректа к нашей странице корзины и сразу же иметь детали пользователя под рукой, используя компонент Profile дополнения Login.

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

    Вы, случайно не подскажете как это реализовать в Evo? Моих знаний php не хватает чтобы реализовать самому. Гугл ничего конкретного не находит за исключением http://forums.modx.com/thread/43980/how-to-automatically-login-a-web-user-after-registration
    Но как использовать эту функцию непонятно..

    Viktorminator

    Нет. К сожалению, в Эво я не разбираюсь.

    Sparrow

    Отличная статья! Очень помогла. Пока только изучаю MODx и погружаюсь все глубже :)) Может натолкнете на правильную мысль, хотелось бы дополнить этот автологин распознованием пользователя по правам доступа, и соответственно отсылать после логина каждого на свою страницу, мембера на субадмина на скажем.

    Sparrow

    Понимаю что тут про регистрацию, а не про логин, но раз уж влез, не могу не поделиться :))) Великий и могутный интернет помог. Итак, если нам надо, что бы при логине/регистрации пользователь видел на странице только тот контент который мы хотим ему показать, на помощь приходит BobRay и его сниппет: http://forums.modx.com/thread/18807/change-the-contents-of-a-page-based-on-a-group-of-users#dis-post-408830
    Ну и создать каждой группе свой чанк
    И пользователей с группами :)))

    Георгий Малинка

    Не работает. Выводит в строку то что было забрано хуком. всё

    Viktor Minator

    установили дополнение Profile?

    Георгий Малинка

    Черт, вырвал из контекста, спасибо. Сейчас попробую

    Sergey Smirnov

    Не работает авто-логин. $response->isError содержит NULL. Авто-логина не происходит.
    Вот вызов сниппета Register, может, что-то я сделал не так?

    Sergey Smirnov

    Почему-то код вызова сниппета не вставился. Но я все делал как в статье написано.

    Office / Пользователи / Дополнения MODX / modstore.pro

    • Все дополнения
    • Пользователи

    Универсальный личный кабинет покупателя

    личный кабинет история заказов авторизация регистрация уведомления miniShop2 интернет-магазин SMS

    2990 51. 55 42.71

    за сайт

    • Проверено Modstore
    • Бесплатные будущие обновления
    • Работа на тестовом и публичном домене
    • 12 месяцев тех. поддержки

    Добавить в корзину

    Автор дополнения

    Илья Уткин

    Обычно отвечает в течение нескольких дней

    customExtra

    Дополнительная таблица в админке MODX

    ms_CDEK2

    Добавляет методы доставки СДЭК, расчет цены и времени доставки по индексу и городу

    RobotsBuilder

    Управление выводом robots. txt и sitemap.xml

    • Описание
    • История изменений

    Версия 1.9.5-pl

    Дата выпуска 01.10.2021

    Загрузки 6 759

    Просмотры 40 280

    Внимание, этот компонент требует версию PHP 5.6 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.

    Внимание, этот компонент требует версию MODX не ниже 2. 5 !

    Модульное дополнение для работы с пользователями.

    Функционал в комплекте:
    — Ajax регистрация и авторизация пользователей
    — Ajax редактирование профиля
    — Авторизация в дополнительные аккаунты для быстрого переключения между ними
    — Авторизация под любым активным пользователем прямо из админки
    — Вывод покупок пользователя miniShop2 на ExtJS

    Быстрый старт

    Авторизация и редактирование профиля в modstore.pro работает с помощью Office.

    • Add permissions check in «login as user» functionality
    • [miniShop2] Removed «product_id» from mandatory fields in products grid
    • [miniShop2] Fixed «id» and «product_id» hidden state in products grid
    • [miniShop2] Fixed missing popup window
    • [Auth] Added invoking of OnBeforeWebLogin and OnWebLogin events on login at activation.
    • [Auth] Ability to disable user activation after registration by «office_auth_activation» system setting.
    • Better handling of CSRF token.
    • [miniShop2] Fixed status name in orders/getlist processor
    • Fixed getting an error from HybridAuth on register or login.
    • Improved register of ExtJS scripts.
    • Update chunks for Bootstrap 4.
    • Fixed register of ExtJS scripts when MODX installed in subdirectory.
    • Improved authorization via activation link.
    • Fixed typo in chunk.profile.form.tpl.
    • Update for supporting HybridAuth 3.
    • Improved PHP 7.2 support.
    • [miniShop2] Fixed fatal error if there are MODXMinify installed on the site.
    • [Auth/Profile] Added javascript callback to default scripts.
    • [Auth] Don`t change token when office_auth_mode == «phone».
    • Hardening Auth and Profile forms by adding CSRF token.
    • [Auth] Do not send the password by email if the user specified it manually.
    • Fixed «Could not load package metadata for package office» message in logs.
    • [Auth] Fixed possible fatal error with login to second account on MODX 2.5.8.
    • [Auth] Fixed possible error with inactive user.
    • Ability to log in and switch between multiple accounts.
    • Fenom chunks by default.
    • pdoTools is required now.
    • [mgr] Ability to authenticate on frontend as any active user from manager.
    • Added german lexicon (thanks to Fabian Christen).
    • [OfficeAuth] Ability to login via username, email of mobilephone with one field «username».
    • [miniShop2] Ability to repeat and delete orders.
    • [Profile] Remove default avatar params from update processor due to issues.
    • [Auth] Emails with «+» are now supported.
    • [Auth] Fixed saving of the mobilephone when office_auth_mode != phone.
    • [Auth] Fixed the error when user with phone in email could not to authenticate.
    • [Auth] Fixed the error «Could not load controller auth».
    • [Auth] Improved integration with HybridAuth.
    • [Profile] Fixed the regular expression for verification of emails.
    • [Auth] Improved work of ByteHand sms provider.
    • Fixed handling of errors when sending sms.
    • PSR-2.
    • Removed autoload of jQuery.
    • Mobile phones support with SMS authentication.
    • The multilingual chunks by default.
    • The HybridAuth is no longer installed by default.
    • A login errors now logged on «info» level instead of «error».
    • No longer authorization required to activate a new email.
    • Some security fixes.
    • Updated jGrowl to version 1.4.5.
    • [RemoteAuth] Fixed possible E_WARNING in PHP 7.
    • Improved load of phpThumb for profile avatars.
    • Improved load of pdoTools.
    • [OfficeProfile] Fixed processing restrictions of length for field «comments».
    • [OfficeProfile] Fixed remove of profile photo on double form save.
    • [OfficeAuth] Improved process of login links.
    • [OfficeProfile] Ability to specify nested extended fields in &profileFields parameter.
    • [OfficeProfile] Ability to specify nested extended fields in &requiredFields parameter.
    • Updated FontAwesome to versions 4.5.0.
    • [Profile] Improved handling of field «dob».
    • Some ExtJS widgets improvements.
    • New system setting «office_controllers_paths».
    • New snippet «officeMiniShop2» as a shorthand for MS2 private office.
    • New Ext JS CSS styles.
    • Reformat code.
    • [miniShop2] Added search text field. Some UI improvements.
    • [RemoteAuth] Fixed parameter «rememberme».
    • [Auth] Fixed error with activation of emails with «+».
    • [Profile] Improved handling of passwords fields.
    • [Profile] Improved handling of «comment» field.
    • Added system setting «office_sanitize_pcre».
    • [Profile] Improved parsing of «profileFields» parameter.
    • Controllers will use pdoTools functions if available.
    • [#19] [Profile] Fixed issue with HybridAuth templates.
    • Updated HybridAuth version in the installer.
    • [Profile] Fixed removing old photos from «avatarPath».
    • [Auth] Fixed some log entries.
    • Added call of system event on user activation.
    • [Remote] Changed log level to «error».
    • Fixed retrieving of modMail ErrorInfo.
    • Improved creating of system settings.
    • [#10] [miniShop2] Fixed order log pagination.
    • [Profile] Improved handling of extended fields.
    • [Main] Fixed work of frontend scripts whe Minify is not working.
    • [Profile] Removed option «profile_force_email_as_username» by default.
    • [#9] [Profile] Do not overwrite existing extended fields.
    • [#6] [Profile] Ability not to use email in profile form.
    • Ability to set empty &requiredFields=«.
    • Fixed ExtJS windows animation in MODX 2.3.
    • [#4] Fixed loading of HybridAuth with custom chunks.
    • [miniShop2] Improved support of MODX 2.3.
    • Switched gravatar links to https by default.
    • [miniShop2] Added support of lexicons in payment, delivery and status names.
    • [miniShop2] Fixed empty product names in order grid on MS2 < 2.1.8.
    • [Auth] Added «username» and «fullname» fields to registration form.
    • [Auth] Ability to use username or email for login.
    • [Auth] User will receive activation email if he trying to login and his account was not activated.
    • [#3] [Auth] Ability to use $_GET[‘hauth_return’] for redirecting user to any page after authorization.
    • [#2] [Profile] Fixed clearing of user photo.
    • [#1] [Profile] Improved regular expression for supporting of all unicode characters.
    • [Main] Updated Ext JS modx-theme.
    • [Main] Added Font Awesome 4.1 for modx-theme.
    • [miniShop2] Updated miniShop2 controller and Ext JS grid for version 2.1.8.
    • [miniShop2] Improved format of weight and price in MS2 grid.
    • [miniShop2] Fixed default system setting «office_ms2_order_product_fields».
    • [Auth] Ability to use password for login.
    • [Auth] New login form.
    • [Profile] Ability to change password.
    • [Remote] Fixed parameter «updateUser» in remote auth controller.
    • [Auth] Ability to use regular user names, not email.
    • [Profile] Added system setting to force using emails as usernames.
    • [Profile] Ability to change username.
    • [Profile] Ability to upload user avatar.
    • Updated chunks for Bootstrap 3.
    • Ability to overwrite chunks on update.
    • [Remote] New controller for remote authentication.
    • Improved login errros handling.
    • Fixed &profileFields in «officeProfile».
    • [Profile] Ability to edit extended fields.
    • [miniShop2] Fixed popup windows in Internet Explorer.
    • Optimized creating of system settings fo «page_id».
    • [Profile] Added displaying error messages about required fields when user redirected to profile.
    • Added urldecode of action in plugins.
    • Fixed bug with clearing cache of site.
    • [Profile] Username is always the user`s email.
    • [Main] Component set «alow_multiple_emails» to false on installation.
    • [Auth] Improved work in multiple contexts.
    • [Auth] Fixed generated links for contexts in subdirectory.
    • [Auth] Moved «login» and «Logout» logic to system plugin.
    • [Auth] Improved saving «office_auth_page_id» setting.
    • [Profile] mproved saving «office_profile_page_id» setting.
    • [Main] Fixed issues with multiple controllers calls on one page.
    • Fixed email verification
    • Removed unused files
    • Added integration with HybridAuth 0.7+
    • Fixed wrong values in MS2 orders grid.
    • [Main] Changed hard coded «/manager/» to MODX_MANAGER_URL constant.
    • [Profile] Added system setting «office_profile_required_fields» for requirement from users to fill in this fields.
    • [Auth] Improved activation email.
    • [Auth] Fixed «loginResourceId» and «logoutResourceId».
    • [Profile] Fixed and improved update of profile.
    • [Profile] If user is not authenticated, controller do not redirects to unathorized page anymore.
    • [miniShop2] Fixed work with miniShop2, called on page.
    • [miniShop2] Improved orders table.
    • [miniShop2] If user is not authenticated, controller do not redirects to unathorized page anymore.
    • [miniShop2] Moved «details» link from context menu to the grid column.
    • [Main] Added «office_extjs_css» system setting for specifying custom css for ExtJS.
    • [miniShop2] Customizable orders grid.
    • [miniShop2] Customizable order form.
    • [miniShop2] Customizable address form.
    • [miniShop2] Customizable order product grid.
    • [miniShop2] Added new controller
    • [Main] Preparation for first public release
    • [Auth] Added system setting «office_auth_page_id»
    • [Profile] Added system setting «office_profile_page_id»
    • Added ability to load custom styles and javascript for Auth and Profile controllers.
    • [Main] Main class improvements. Added method Office::addClientExtJS()
    • [Auth] Improved redirect on login\logout
    • [Auth] Added checking of already send activation link
    • [Auth] Added checking of already logged in users
    • [Main] Integration of Ext JS from MODX
    • [Profile] Edit user profile and change email with verification.
    • [Auth] Login\logout

    Реализуем авторизацию в MODX через соц сети при помощи HybridAuth

    Главная » MODX Revo

    MODX Revo

    Автор Алексей На чтение 4 мин Просмотров 1.9к. Опубликовано Обновлено

    Содержание

    1. Регистрация у провайдеров и получение ключей
    2. Регистрация приложений
    3. Яндекс
    4. Вконтакте
    5. Гугл
    6. Github
    7. Facebook
    8. Настройки провайдеров
    9. Вызов HybridAuth

    Данный пакет, можно скачать с репозитория modstore.

    Данный компонент хорош тем, что у него:

    • Много сервисов авторизации (вернее есть все самые популярные).
    • Нет зависимости от других компонентов и сервисов. Если к примеру один или несколько сервисов перестали работать (поменялись к примеру алгоритмы или просто отключены) — то всегда можно зайти через другой.
    • Нет сторонних js библиотек — работает на чистом php, отсюда — есть возможность изменения внешнего вида формы входа.
    • Привязывает разные учетные записи юзера к одной, а не плодит кучу.
    • Есть возможность сделать регистрацию через другой компонент, например через Login.
    • Поддерживает pdoTools (пожалуй самый популярный и ходовой инструмент), и синтаксис Fenom.
    • Автоматически интегрируется с пакетом Office (личный кабинет).
    • Простота использования — нужно только получить ключи у нужных провайдеров и прописать их в настройках.

    Регистрация у провайдеров и получение ключей

    Примечание! Вот так пишутся Callback URI https://site.ru/?hauth.done=Провайдер , например https://site.ru/?hauth.done=Yandex иногда вот так: https://site. ru/assets/components/hybridauth/action.php?hauth.done=Yandex

    Регистрация приложений

    Яндекс
    • Переходим по ссылке
    • Заполняем поля НазваниеОписание, Ссылка на сайт, Платформа — ставим Веб-сервисы, Callback URI и Права

    После сохранения, копируем Id и Пароль.

    Вконтакте
    • Переходим по ссылке
    • Пишем название, выбираем опцию Веб-сайт и заполняем Адрес сайта и Базовый домен

    • Нажимаем подключить сайт, после этого переходим в настройки и копируем ID приложения и Защищенный ключ

     

    Гугл
    • Переходим по ссылке
    • Нажимаем создать проект.
    • Указываем название проекта и создаем его.
    • Переходим в переходим в панель управления API и сервисы и нажимаем включить API (вверху должен быть указан ранее созданный проект)
    •  Находим и включаем Contacts API и Google+ API
    • Переходим в API и сервисы → Учетные данные и дабавляете их

      в поле Какой API вы используете, выбираем Contacts API
      Откуда будите вызывать API выбираете Веб-браузер (JavaScript)
      После нажатия на выбрать тип учетных данных пользователя (Данные пользователя), должно выйти окошко с надписью создать запрос доступа, соглашаетесь и на открывшейся странице заполняем все данные и сохраняете.
    • создаем Oauth клиента и копируем их ключи

      В общем не все скриншоты сделал и пару пунктов пропустил, может в следующий раз дополню, а пока тыкаем пока не получится в общем.
    Github
    • Переходим по ссылке
    • Заполняем поля Application nameHomepage URL и Authorization callback URL

    • Сохраняем приложение и копируем Client ID и Client Secret

    • Переходим по ссылке
    • Нажимаем добавить новый ID приложения, заполняем и создаем.
    • Вас перебросит в панель управления приложения, слева выбираете настройки — основные, проматываем в низ и нажимаем на кнопку Добавить платформуВеб-сайт, вводим адрес и сохраняем.
    • Снова проматываем вверх, заполняем адрес сайта и адрес страницы с политикой конфиденциальности (нужно создать на сайте — можно пустую) и включаем приложение.
    • Сохраняем Идентификатор и секрет приложения

    Всех основных провайдеров рассмотрели, но можно добавить дополнительных: официальные инструкции по подключению провайдеров лежат здесь, информация там немного устарела, но при желании разберетесь, единственно изменилась ссылка у твиттера на apps.twitter.com .

    Настройки провайдеров

    Идем в системные настройки (шестеренка в правом верхнем углу), выбираем HybridAuth

    и прописываем все ключи, при прописывании смотрите внимательнее, так как где то secret, где, то id.

    Вызов HybridAuth

    [[!HybridAuth]] — Выведет все иконки соц сетей для авторизации.

    Если вам нужны определенные соц сети, то их можно указать в параметре &providers, вот так.

    [[!HybridAuth?
    &providers=`Twitter,Vkontakte,Google`
    ]]

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

    [[!HybridAuth?
    &providers=`Twitter,Vkontakte,Google`
    &groups=`member:3`
    ]]

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

    MODX Revolution

    Поделиться с друзьями

    Оцените автора

    ( 1 оценка, среднее 5 из 5 )

    Информация для fblogin — SiteDash, возьмите под свой контроль свои сайты MODX

    Описание пакета

    fbLogin — это дополнение MODX, которое расширяет возможности входа в систему Шона Маккормика, позволяя пользователям регистрироваться и входить на сайт, используя свою учетную запись Facebook через Facebook API. с использованием PHP SDK версии 3.0.

    ОЧЕНЬ ВАЖНО

    ЭТО ДОПОЛНИТЕЛЬНОЕ ИСПОЛЬЗУЕТ FACEBOOK PHP SDK (ВЕРСИЯ 3), КОТОРЫЙ ДЛЯ ВАШЕГО УДОБСТВА ПОСТАВЛЯЕТСЯ В КОМПЛЕКТЕ С ДОПОЛНИТЕЛЬНЫМИ

    Инструкции по использованию/установке

    1. Спланируйте интеграцию с Facebook, по крайней мере, имейте представление 

    о том, что вы можете делать с помощью API, и о разрешениях, которые вы можете

    получить от своих пользователей, чтобы делать то, что вы хотите 

    использовать API для случаться. Если вы сделаете это заранее, это значительно облегчит вам жизнь

    .

    2. Если вы еще этого не сделали, установите дополнительный вход

    из диспетчера пакетов. Это ДОЛЖНО быть установлено, чтобы этот дополнительный

    функционировал. Вы должны настроить регистрацию и логин 

    и убедитесь, что они полностью заработали, прежде чем

    начнете настраивать это дополнение. Кроме того, у вас должна быть

    специальная страница входа, специальная страница регистрации и

    защищенная страница учетной записи, где зарегистрированные и вошедшие пользователи могут

    управлять своим профилем и другими данными учетной записи. После того, как все

    будет готово, перейдите к шагу 2.

    3. Если вы еще этого не сделали, вам нужно перейти к

    Developer App на Facebook и создайте новое приложение для своего сайта — 

    https://developers.facebook.com/apps.

    4. Обратите внимание на идентификатор приложения и секрет приложения, которые Facebook присвоил

    вашему вновь созданному приложению.

    5. Кроме того, пока вы находитесь там, нажмите на вкладку «Дополнительно» и введите

    URL-адрес вашего сайта к ресурсу, который Facebook может пропинговать, чтобы информировать вас

    о пользователях, которые деавторизовали ваше приложение. Запишите URL-адрес

    , который вы выбрали для этой цели.

    6. Установите это дополнение из менеджера пакетов.

    7. Добавьте системные настройки, как описано в разделе «Системные настройки

    » этого файла ознакомительных сведений

    8. Создайте ресурс, который будет доступен по введенному вами URL-адресу

    выше, чтобы Facebook мог отправлять сообщения об отмене авторизации. Этот ресурс

    должен быть общедоступным, опубликованным, для его шаблона

    должно быть установлено значение none, а кеширование должно быть отключено. В поле content

    для этого ресурса назовите fbDe-authorized snippet uncached 

    — т.е. [[!fbDe-authorized]]. Сохраните этот ресурс.

    9. Создайте еще один ресурс, который также является общедоступным, у которого

    его шаблон не установлен, его кэширование отключено, и он также опубликован

    , и поместите на него некэшированный вызов фрагмента fbRedirect, т. е.

    [[!fbRedirect ? &cancelUrlId=`x` &returnUrlId=`y`]], где x – это идентификатор

    вашего выделенного ресурса входа, а y – идентификатор ресурса

    , который мы собираемся создать следующим. Сохраните этот ресурс.

    10. Создайте еще один ресурс, который снова является общедоступным, у которого

    его шаблон не установлен, его кэширование отключено, а также он опубликован

    , и поместите на него некэшированный вызов фрагмента fbLogin следующим образом:

    [[! FB Логин? &usergroups=`A` &postLoginUrlId=`B` 

    &fbRedirectUrlId=`{{*id]]` &perms=`C`]] где A список разделенных запятыми

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

    , B – идентификатор ресурса, возвращающего пользователей Facebook 

    должен быть перенаправлен после успешного входа в систему и C, разделенный запятой

    список разрешений, которые вы хотите предоставить своему пользователю. Этот список

    должен быть одинаковым для всех вызовов этого фрагмента.

    11. На всех защищенных страницах у вас должен быть вызов сниппета checkForActive 

    — параметры не требуются, поэтому вызов выглядит как

    [[!checkForActive]] — если у вас есть определенный шаблон для вашего 

    защищенные страницы можно было бы добавить к этому.

    12. Если у вас уже есть набор ссылок на каждой странице вашего сайта для 

    входа и регистрации для пользователей, которые не вошли в систему, и ссылки на 

    разрешить пользователям выходить из системы и переходить на свою основную защищенную страницу учетной записи ,

    замените их фрагментом fbLink (некэшированным), который затем можно

    стилизовать с помощью CSS и параметров — см. ниже. Пример вызова

    может выглядеть следующим образом:

    [[!$fbLinks? &fbLinksSeparator=`|` &fbLinksAltSeparator=`/`

    &fbLoginLinkText=`Войти в систему` &fbLoginLinkTitle=`Войти в свою учетную запись` 

    &fbLogoutLinkText=`Выйти из системы` 

    &fbLogoutLinkTitle=`Выйти из своей учетной записи` 

    &fbRegisterLinkRegisterLinkText &fble Зарегистрироваться` ` 

    &fbAccountLinkText=`Ваша учетная запись` &fbAccountLinkTitle=`Управление 

    данными учетной записи` &fbLoginLinkId=`A` &fbRegisterLinkId=`B` 

    &fbAccountLinkId=`C` &fbLogoutLinkId=`D` 

    &usergroups=`E` &postLoginUrlId=`F` &newUserUrlId=`G` 

    &fbRedirectUrlId=`H` &perms=`I`  

    &fbLoginTitle=`Сэкономьте время и получите дополнительную интеграцию с 

    Facebook для регистрации с помощью Facebook и войдите в систему` 

    &displayProfileImg=`1` &postLogoutUrlId=`J`]]

    где:

    A — идентификатор выделенного ресурса, который вы используете для входа в систему

    B — идентификатор выделенного ресурса, который вы используете для регистрации

    C — это идентификатор выделенного защищенного ресурса, на который вы перенаправляете

    пользователей при успешном входе в систему.

    D — это снова идентификатор выделенного ресурса, который вы используете для входа в систему. вы 

    хотите добавить новых пользователей Facebook.

    F снова является идентификатором выделенного защищенного ресурса, на который вы

    перенаправляетесь после успешного входа в систему.0005

    перенаправляется после регистрации — скажем, для заполнения своего профиля

    H — это идентификатор ресурса, который вы установили на шаге 9 выше.

    I — разделенный запятыми список разрешений, которые вы хотите запросить у пользователя на Facebook

    J — ресурс, на который вы хотите перенаправить, когда Facebook

    пользователей выйдет из системы.

    13. Вы можете настроить дальнейшую работу этого дополнения, отредактировав фрагменты

    , представленные в категории fbLogin.

    Soundmondo для MODX — Yamaha Synth

    Откройте для себя новые звуки для вашего MODX и поделитесь своими собственными с Soundmondo, социальным сайтом для обмена звуками!


    Soundmondo — это социальный веб-сайт для обмена звуками, который позволяет пользователям находить новые звуки, делиться своими звуками и систематизировать звуки. Soundmondo поддерживает reface, MONTAGE и теперь MODX! В этой статье показано, как подключить MODX к Soundmondo на рабочем столе и с помощью приложения Soundmondo для iOS.

    Зарегистрируйтесь и подключитесь

    Чтобы использовать Soundmondo для MODX, вам необходимо выполнить следующие действия:

    • Последняя версия ОС MODX: Ваш MODX должен быть обновлен до версии ОС 1.10 или выше. Перейдите сюда, чтобы получить последнюю версию ОС MODX (находится в разделе «Прошивка/программное обеспечение» как «MODX Updater»).
    • Google Chrome: для использования Soundmondo необходимо использовать последнюю версию Google Chrome. Chrome использует специальный протокол подключения, называемый WebMIDI, который позволяет аппаратному устройству, такому как MODX или reface, напрямую подключаться к сайту через браузер. Получите Chrome здесь, если у вас его нет.
    • Зарегистрируйтесь, войдите в систему и подключитесь: чтобы использовать Soundmondo, вы должны создать учетную запись. Процесс регистрации прост, и как только вы создали свое имя пользователя и пароль, все готово. После того, как вы создали свою учетную запись, подключите свой MODX через порт USB TO HOST к открытому USB-порту на вашем компьютере (убедитесь, что MODX настроен на использование USB в качестве MIDI IN/OUT. Перейдите в UTILITY/MIDI I/O и выберите USB ). Больше нечего делать: после входа в систему и подключения все готово.

    Давайте посмотрим на некоторые интересные вещи, которые вы можете делать с Soundmondo.

    Soundmondo на рабочем столе с Google Chrome

    ПОЛУЧИТЬ ПЕРФОРМАНСЫ

    Количество бесплатных исполнений, доступных для MODX, растет с каждым днем. Чтобы просмотреть выступления, нажмите «Обзор» в верхней части страницы. Нажмите на графику MONTAGE/MODX, чтобы отобразить только исполнения MODX. Вы также можете просмотреть по тегу справа:

    На экране ниже я провел поиск по тегам. Ниже приведены некоторые исполнения, возвращенные для тегов «Funk», «Jazz» и «Electric». Чтобы очистить результат, нажмите «очистить» на экране:

    Если вы знаете название исполнения или автора, вы можете использовать окно поиска в правом верхнем углу. Вы можете отфильтровать только исполнения MODX, щелкнув MODX в разделе «Поиск по инструменту» слева. Попробуйте: коснитесь значка MONTAGE/MODX, затем введите имя «Bad Mister» в поле поиска, и вы увидите все исполнения, загруженные великим Bad Mister:

    Как только вы найдете исполнение, которое хотели бы попробовать нажмите кнопку SYNC в правом верхнем углу, подождите несколько секунд, и исполнение будет передано на ваш MODX. Чтобы сохранить его в MODX, нажмите кнопку [STORE] на MODX и выберите «Сохранить как новое исполнение» на экране. Некоторые другие выступления, чтобы проверить:

    • DX7 Voice ROM: все оригинальные тембры с картриджей DX7 ROM доступны на Soundmondo. Загрузите их в MODX и отредактируйте под свой дизайн!
    • Коллекция HaPe: эта великолепная коллекция звуков от опытного звукорежиссера Ханса-Петера Хенкеля демонстрирует звуковую мощь MODX.
    • Ричард Дивайн: Шестнадцать перфомансов, созданных вручную художником-электронщиком и звукорежиссером
    • Bad Mister: представления, созданные старшим специалистом по продуктам Филом «Bad Mister» Кленденинном
    • Блейк Ангелос: Выступления, созданные специалистом по продуктам Yamaha в США Блейком Ангелосом

    ТАБЛИЦА ЛИДЕРОВ

    Перейдите на домашнюю страницу Soundmondo и прокрутите вниз до таблицы лидеров. Это покажет вам самых активных пользователей слева и самые загруженные исполнения справа:

    ПОДЕЛИТЬСЯ ВЫПОЛНЕНИЯМИ

    У вас есть выступления, которыми вы хотели бы поделиться с сообществом MODX? Подключив MODX, выберите исполнение, которым хотите поделиться, и нажмите «СОЗДАТЬ». В приведенном ниже примере я создал исполнение под названием «Blake Jazz Guitar». Я пометил его тремя описательными тегами (СОВЕТ: постарайтесь ограничиться несколькими тегами, наиболее точно отражающими вашу производительность):

    Прокрутив страницу вниз, вы найдете еще несколько важных предметов. Замечательно включить короткий аудиопример или видео, чтобы сопровождать Ваше Выступление. В приведенном ниже примере я добавил URL-адрес SoundCloud для этого исполнения. В дополнение к SoundCloud вы также можете указать URL-адрес YouTube или Vine. И, наконец, вы можете сделать свое выступление общедоступным, чтобы поделиться с сообществом, или приватным, если хотите оставить его себе:

    Хотите посмотреть мое выступление? Иди сюда!

    ОРГАНИЗАЦИЯ ПРЕДСТАВЛЕНИЙ

    В Soundmondo есть несколько основных способов организации вашей коллекции исполнений. Для этого перейдите в свой профиль, нажав на значок шестеренки, расположенный рядом с полем «Поиск» в правом верхнем углу браузера. Ниже мой профиль:

    Внизу страницы есть 4 пункта меню:

    • Звуки: Здесь показан список всех звуков, которые вы загрузили в Soundmondo.
    • Избранное: показывает список всех звуков, которые вы выбрали в качестве избранных. Это делается, когда вы просматриваете звуки других людей
    • Корзина: возьмите любой ненужный звук и перетащите его в корзину! Он все еще будет там, пока вы не нажмете «Очистить корзину».
    • Set Lists: Организуйте свои звуки в сет-листы. Создайте сет-лист, затем перетащите нужные звуки в папку.

    У вас есть устройство iOS? Скачайте приложение Soundmondo! В нем представлены все функции, которые вы видите здесь на iPhone, iPad или iPod Touch. Все, что вам нужно, это USB-кабель и адаптер Apple Lightning для USB-камеры.

    SOUNDMONDO ДЛЯ MODX НА IOS

    Если у вас есть новейшее устройство iOS, вам следует попробовать Soundmondo для iOS. Вам потребуется следующее:

    • Устройство iOS, такое как iPhone, iPad или iPod touch под управлением iOS 9 или более поздней версии
    • Приложение Soundmondo для iOS находится здесь
    • Адаптер Apple Lightning для USB-камеры (LUCA), подобный этому или этому
    • Кабель USB-хост (например, кабель USB-принтера:

    Подключение устройства iOS к MODX

    Подключите кабель USB к хосту к MODX и вашему устройству iOS с помощью Apple LUCA и запустите приложение Soundmondo на вашем устройстве. Приложение автоматически обнаружит правильно подключенный MODX, и вы увидите экран Performance (Perf внизу), который содержит все ваши исполнения. Некоторые из них поставляются с приложением Soundmondo, которые вы можете сохранить или удалить. Ниже приведен обзор экрана Исполнения:

    ЗАПИСАТЬ ВЫПОЛНЕНИЕ

    Выберите исполнение, которое хотите загрузить на свое устройство, и коснитесь «Захват» в нижней части экрана. Сначала вы увидите клавиатуру со стрелкой на экране. Коснитесь этого значка, и ваше выступление будет перенесено на ваше устройство. В приведенном ниже примере я записал созданное мной выступление под названием Blake Drive EP: 9.0005

    Коснитесь «Perf» внизу, чтобы просмотреть все захваченные исполнения.

    ПРОСМОТРИТЕ ВАШЕ ЗАПИСАННОЕ ВЫПОЛНЕНИЕ

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

    В нижней части экрана находятся три значка. Значок книги — это сет-лист. Вы можете создавать сет-листы для быстрой организации выступлений, например живых выступлений:

    ПОСМОТРЕТЬ SOUNDMONDO

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

    В приложении Soundmondo есть несколько способов уточнить результаты поиска. Вы можете выполнить поиск по атрибуту, введя его в поле поиска, или выполнить поиск по теговому описанию:

    Начав просмотр, вы можете найти пользователей, которые вам особенно нравятся. Вот где значок сообщества становится полезным. Например, набрав «Плохой мистер», вы найдете все его выступления:

    Приложение Soundmondo для iOS — отличный способ получить бесплатный контент для вашего музыкального синтезатора MODX. Проверьте это и присоединитесь к всемирному сообществу Soundmondo и Yamahasynth!

    MODX Trademark of YAMAHA CORPORATION — Registration Number 5999261

    MODX — Trademark Details

    Status: 700 — Registered

    Serial Number

    79261243

    Registration Number

    5999261

    Word Mark

    MODX

    Статус

    700 -Зарегистрирован

    Дата состояния

    2020-03-03

    6.

    5999261

    Дата регистрации

    2020-03-03

    Марка. Набор

    Опубликовано для даты оппозиции

    2019-12-17

    Имя адвоката

    Mark Sommers

    Офис назначенного расположения

    9000 9000 666667.

    7,

    , 9000,

    ,

    , 9000,

    ,

    , 9000,

    , 9000,

    , 9000,

    , 9000, 9000, 9000, 9000, 9000, 9000,

    , , 9000,

    , .

    Информация о классификации

    Международный класс

    015 — Музыкальные инструменты. — Музыкальные инструменты.

    Коды классов США

    002, 021, 036

    Class Status Code

    6 — Active

    Class Status Date

    2019-07-06

    Primary Code

    015

    Current Trademark Владельцы

    Название стороны

    YAMAHA CORPORATION

    Тип стороны

    30 — Первоначальный регистрант Тип

    9092

    4

    4

    03 — Корпорация

    Адрес

    Пожалуйста, войдите в свою учетную запись Justia, чтобы увидеть этот адрес.

    Trademark Owner History

    Party Name

    YAMAHA CORPORATION

    Party Type

    30 — Original Registrant

    Legal Entity Type

    03 — Corporation

    Address

    Пожалуйста, войдите в свою учетную запись Justia, чтобы увидеть этот адрес.

    Партийное название

    Yamaha Corporation

    Тип

    20 — Владелец

    Legal Countity Type

    9

    Legal Countity

    9000 9000

    . в своей учетной записи Justia, чтобы увидеть этот адрес.

    Название партии

    КОРПОРАЦИЯ YAMAHA

    Сторона типа

    10 — Оригинальный заявитель

    Юридический организация Тип

    03 — Корпорация

    Адрес

    9000 317.

    Переписка

    Имя

    Марк Соммерс

    Адрес

    Пожалуйста, войдите в систему с этим адресом Justia.

    International Registrations

    International Registration Number

    1472889

    International Registration Date

    2019-04-03

    International Publication Date

    2019-06-20

    International Renewal Дата

    2029-04-03

    Автоматическая защита Дата

    20.12.2020

    Международный статус

    001 -Запрос о расширении защиты установлена ​​

    Международная дата статуса

    2019-06-20

    Приоритет.

    Первый отказ в

    True

    События торговой марки

    . IB
    Дата события Описание события0680
    2019-06-20 SN, назначенная для секты 66A Appl от IB
    2019-07-03 Ограничение от оригинального приложения. Введено в трамвай
    2019-07-06 назначен экзаменатору
    2019-07-06 Действие. ОТКАЗ) ПОДГОТОВЛЕНО К ПРОВЕРКЕ
    2019-07-10
    2019-08-16 REFUSAL PROCESSED BY IB
    2019-11-07 TEAS RESPONSE TO OFFICE ACTION RECEIVED
    2019-11-07 CORRESPONDENCE RECEIVED IN LAW OFFICE
    2019-11-07 TEAS/EMAIL CORRESPONDENCE ENTERED
    2019-11-08 APPROVED FOR PUB — PRINCIPAL REGISTER
    2019-11-13 ASSIGNED TO LIE
    2019-11-27 NOTIFICATION OF NOTICE OF PUBLICATION E-MAILED
    2019-12-17 PUBLISHED FOR OPPOSITION
    2019-12-17 OFFICIAL GAZETTE PUBLICATION CONFIRMATION E-MAILED
    2020-03-03 Зарегистрированные приклеочные регистра
    2020-06-03 Окончательное уведомление о предоставлении.
    2020-07-07 FINAL DISPOSITION NOTICE SENT TO IB
    2020-07-24 FINAL DECISION TRANSACTION PROCESSED BY IB

    Bob’s Guides | Подписаться Фрагмент

    Если вы используете это дополнение и вам оно нравится, рассмотрите возможность пожертвования. Предлагаемое пожертвование для этого дополнения составляет 15,00 долларов США , но любая сумма, которую вы хотите пожертвовать, подходит (действительно). За единовременное пожертвование в размере 50 долларов США вы можете с чистой совестью использовать все мои непремиальные дополнения.

    Subscribe предоставляет систему регистрации пользователей с двойным согласием. Он использует некоторые части пакета входа в систему, поэтому перед использованием подписки убедитесь, что пакет входа установлен.

    Подписка 1.3.0 и более поздние версии совместимы с MODX 3

    (Переход к таблице системных настроек.)

    О подписке

    Подписка предоставляет сообщение с запросом на подписку, которое будет отображаться на страницах вашего сайта. Когда Пользователи выбирают подписку и отправляют регистрационную форму, они получают сообщение электронной почты со ссылкой для подтверждения своей регистрации. Сообщение с запросом на подписку не будет показано пользователям, которые вошли в систему (они увидят ссылку для выхода). Вы также можете скрыть сообщение с запросом на подписку на выбранных страницах с помощью кнопки &noShows в теге сниппета SubscribeRequest.

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

    Регистрационная форма по умолчанию также включает возможность установки флажков для указания интересов Пользователя. Интересы Пользователя будут сохраняется в виде списка, разделенного запятыми, в комментарий поле Профиля Пользователя (или, опционально, в расширенном поле по вашему выбору). Это позволяет отправлять сообщения электронной почты пользователям на основе их интересы (дополнительная функция «Уведомить» сделает это за вас). Ты также может разрабатывать системы, которые отвечают интересам пользователей, настраивая меню или перенаправляя пользователей в определенные части сайта при входе в систему и т. д.

    Существует также форма «Управление настройками», которая позволяет пользователю в любое время изменить свои интересы и/или членство в группах. Это также позволяет пользователю отказаться от подписки.

    Если вы устанавливаете или обновляете версию 1.2.0 Subscribe или более позднюю, вам не нужно вносить никаких изменений. Вы можете щелкнуть здесь, чтобы пропустить примечания по обновлению.

    Обновление с версии 1.1.3 или более ранней

    Если это новая установка или вы выполняете обновление с подписки 1.1.4 или новее, вы можете перейти к следующему разделу.

    Важно: В более новых версиях заголовки и значения в блоке PrefList Tpl были изменены на противоположные по сравнению с предыдущими версиями, чтобы соответствовать стандарту для входных значений MODX TV. Теперь правильный порядок:

    .
    Заголовок один==Вариант1||Заголовок Два==вариант2||Заголовок Три==вариант3
     

    Обязательно поместите их все в одну строку.

    В версии 1.1.4 эти системные настройки имеют новые имена, чтобы избежать конфликтов с другими компонентами:

    • cssPath -> sbsCssPath
    • cssFile -> sbsCssFile
    • jsPath -> sbsJsPath
    • jsFile -> sbsJsFile

    Установленный CSS изменен в версии 1.1.4, чтобы сделать экраны «Вход в систему» ​​и «Выход из системы» больше и удобнее для чтения. Если вы используете файл CSS по умолчанию, вам, возможно, придется внести изменения в файл CSS вашего сайта, чтобы компенсировать больший размер.

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

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

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

    Все префиксы «sm» и «Sm» заменены на «sbs» и «sbs», чтобы избежать конфликтов с другими дополнениями. Если вы создали пользовательский файл CSS, обязательно сделайте его резервную копию вне каталога подписки, хотя его использование будет ограниченным, поскольку многие классы и идентификаторы изменились.

    ВАЖНО! При обновлении с версии

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

    Если вы создали какие-либо новые фрагменты Tpl для подписки, они переживут обновление, но могут не оказаться в категории «Подписка» после установки и от них действительно не будет никакой пользы, поскольку все фрагменты Tpl изменились.

    В новой версии ваша страница входа должна иметь псевдоним «login». Перед установкой подписки убедитесь, что страница существует, чтобы пакет мог правильно установить системную настройку sbs_login_page_id. Если вы забыли, или ваша страница входа имеет другой псевдоним, установите этот параметр системы вручную в System | Системные настройки (пространство имен: подписка) после завершения установки.

    Обновление с версии 1.1.4

    Подписка Версия 1.1.4 добавила новых пользователей в группу пользователей-подписчиков с ролью подписчика. Начиная с версии 1.2.0, пользователи могут быть назначены в несколько групп с несколькими ролями и могут (необязательно) управлять своим членством в группе пользователей на странице «Управление настройками». См. разделы ниже об управлении группами и создании групп и ролей.

    Разрешать пользователям управлять своим членством в группах пользователей необязательно. Если у вас есть рабочая версия Subscribe и вы хотите продолжать делать то, что делаете, новая версия должна работать так же, как и старая.

    Прежде чем кто-либо зарегистрируется, убедитесь, что все группы пользователей и роли существуют.

    В версии 1.2.0 заполнители в блоках регистрации и управления настройками (sbsRegisterFormTpl и sbsManagePrefsFormTpl) изменились. Для обратной совместимости старые заполнители по-прежнему будут работать, но если вы хотите, чтобы пользователи могли управлять своим членством в группах пользователей, вам нужно будет использовать новые. Новые заполнители:

    .
    [[+sbs_interests_caption]]
    [[+sbs_interest_list]]
    
    
    [[+sbs_groups_caption]] [[+sbs_groups_list]]

    Теперь они одинаковы для обоих чанков.

    Есть несколько новых системных настроек. Параметры &sbs_show_interests и &sbs_show_groups управляют отображением разделов «Интересы» и «Группы» в формах «Регистрация» и «Управление предпочтениями». Для обратной совместимости первое по умолчанию истинно, а второе — ложно. В версии 1.2.0 и более поздних версиях вы можете использовать эти свойства для отображения любого раздела или обоих. См. раздел ниже, посвященный управлению формами.

    Существует также системная настройка &userRoles (см. ниже) для управления ролями, которые пользователи получат в своих группах пользователей.

    Примечание. Если у вас есть системные настройки подписки, фрагменты или фрагменты с префиксом «sm», вы можете удалить их. Они остались от версий до 1.1.4 и больше не используются. Они вызывали конфликты с другим статистом.

    Установка по подписке

    Установка по подписке может быть медленной из-за создания системных настроек. Потерпи.

    Если вы обновляете предыдущую версию. Во время установки вы увидите сообщения о вещах, которые уже существуют и не могут быть обновлены. Это нормально.

    Чтобы установить подписку, перейдите в раздел «Дополнительно | Установщик в главном меню в MODX Manager и нажмите кнопку «Загрузить дополнения». Это приведет вас к Репозиторию Революции. Введите «Подписаться» в поле поиска и нажмите Enter. Нажмите на кнопку «Скачать». Когда загрузка завершится, нажмите кнопку «Вернуться к управлению пакетами». Это вернет вас к сетке управления пакетами. Нажмите кнопку «Установить» рядом с пунктом «Подписаться» в сетке. Теперь пакет Subscribe должен быть установлен.

    Если вы не установили пакет Login, сделайте это, прежде чем продолжить, и создайте страницу входа (если у вас ее еще нет) с псевдонимом «login». Минимальный контент для этой страницы:

    .
    [[!Авторизоваться]]
     

    Отображение сообщения с запросом на подписку

    Поместите следующий тег в раздел любых шаблонов для страниц, которые должны отображать запрос на подписку. В свойстве &noShows поместите через запятую список, содержащий идентификаторы других страниц, на которых запрос не должен отображаться. По умолчанию запрос не отображается на страницах «Вход», «Регистрация», «Спасибо за регистрацию», «Управление настройками» и «Подтверждение регистрации». Добавьте идентификаторы любых других страниц, на которых он не должен отображаться, в свойство &noShows в теге фрагмента в шаблоне. Тег будет заменен сообщением «Запрос на подписку» (которое по умолчанию отображается горизонтально в одной строке) для пользователей, которые не вошли в систему, и ссылкой «Выход» для пользователей, которые вошли в систему.

    Фрагмент SubscribeRequest должен быть вызван некэшированным, поскольку ему необходимо оценить статус входа пользователя.

    [[!Запрос на подписку]]
    
    или же
    
    [[!Запрос на подписку
        &noShows=`##,##,##`
    ]]
     

    Замените «##» идентификаторами ресурсов любых страниц, на которых вы не хотите показывать запрос на подписку.

    Примечание об обновлении: Начиная с Subscribe 1.2.0, страница с подтвержденной регистрацией больше не находится в списке noShows по умолчанию, поэтому когда пользователи перейдут по ссылке для регистрации в электронном письме, они увидят опцию «Управление настройками/отказ от подписки». Я настоятельно рекомендую вам оставить только это, но если вы не хотите показывать его там, вы можете отправить идентификатор в &noShows имущество в ПодписатьсяЗапрос тег snippet в ваших шаблонах.

    Конечно, вы можете создать свой собственный запрос или ссылку на подписку и свою собственную ссылку для входа/выхода и оставить указанный выше тег вне своего шаблона, но обычно проще создать свои собственные фрагменты Tpl для использования вместо встроенных -in используются фрагментом запроса на подписку (sbsLoggedOutDisplayTpl и sbsLoggedInDisplayTpl). Измените системные настройки loggedOutDisplayTpl и loggedInDisplay, чтобы они указывали на ваши собственные фрагменты Tpl.

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

    Версия 1.1.4 подписки добавляет новых пользователей в группу пользователей подписчиков с ролью подписчика (через фрагмент регистрации). ВАЖНО: И группа, и роль должны существовать до регистрации первого пользователя. Это по-прежнему параметр по умолчанию в версии 1. 2.0, но он также обеспечивает гораздо более точный контроль и (опционально) позволяет пользователям управлять своим членством в группах (см. ниже).

    Чтобы создать группу пользователей, перейдите в Безопасность | Контроль доступа | Вкладка «Группы пользователей и пользователи». Нажмите на кнопку «Новая группа пользователей». Введите Подписчики для имени. Добавьте описание, если хотите. Затем нажмите на кнопку «Сохранить».

    Чтобы создать роль, нажмите на вкладку «Роли», затем на кнопку «Создать новую». Введите «Подписчик» для роли, добавьте описание (необязательно) и введите число от 0 до 9999 (я использую 50) для уровня «Полномочия». Затем нажмите на кнопку «Сохранить».

    Управление формами

    Начиная с версии 1.2.0, у вас есть несколько вариантов для форм «Регистрация» и «Управление настройками». Вы можете установить для системной настройки sbs_show_interests значение true, чтобы отобразить раздел «Список интересов», и вы можете установить для системной настройки sbs_show_groups значение true, чтобы отобразить раздел «Группы пользователей». Вы можете показать один или оба.

    Если каждый пользователь будет назначен в одну и ту же группу (группы) пользователей с одной и той же ролью (ролями), позвольте фрагменту регистрации обработать это. Оставь sbs_show_groups System Setting off и в теге Register snippet чанка sbsRegisterFormTpl используйте свойство &usergroups:

    &usergroups=`группа пользователей1:роль1,группа пользователей2:роль2`
     

    Если вместо этого вы хотите позволить пользователю выбирать группы пользователей, в которые он хочет быть назначен, удалите это свойство из фрагмента регистрации и измените системную настройку sbs_show_groups на true. Обратите внимание, что вы можете переопределить системные настройки с помощью свойств в теге фрагмента, но если вы это сделаете, обязательно сделайте это в *оба* фрагментах sbsRegisterFormTpl и sbsManagePrefsFormTpl.

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

    Группы пользователей, показанные в форме, взяты из фрагмента sbsGroupsListTpl. Они в таком виде:

    Группа пользователей 1==группа1||Группа пользователей 2==группа2
     

    Часть перед == является заголовком, который будет отображаться в форме. Часть после == — это фактическое имя группы (они могут быть одинаковыми, если хотите). Убедитесь, что имя каждой группы пользователей такое же, как и часть после знака == в блоке Tpl (они чувствительны к регистру).

    Чтобы подписчик знал, какую роль использовать для каждой группы, необходимо также установить системную настройку sbs_user_roles. Он принимает форму:

    .
    группа1:роль1,группа2:роль2
     

    Обратите внимание, что группы, выбранные пользователем (и их роли), не зависят от групп, установленных в теге фрагмента регистрации. Вы можете использовать один или оба метода. Например, вы можете захотеть, чтобы все пользователи были назначены в группу подписчиков с ролью подписчика, но позволить пользователям выбирать дополнительные группы, к которым они будут принадлежать. В этом случае оставьте строку &usergroups по умолчанию в теге фрагмента регистрации и добавьте другие группы в sbsGroupsListTpl и системную настройку sbs_user_roles.

    Если вы разрешите пользователям выбирать свои собственные группы и/или интересы, вы сможете добавить новые в любое время, отредактировав фрагменты sbsPrefListTpl и/или sbsGroupListTpl. Если вы добавляете новые группы пользователей, обязательно настройте системную настройку sbs_user_roles, чтобы назначить роли пользователей в новых группах.

    Системные настройки подписки

    Системные настройки подписки, содержащие идентификаторы страниц, будут установлены автоматически во время установки, но вы можете проверить правильность их установки, особенно если вы обновляете предыдущую версию. Перейти к системе | Системные настройки и выберите пространство имен «подписаться» в раскрывающемся меню в верхней части сетки (по умолчанию будет отображаться пространство имен «основное»). Обратите внимание, что пространство имен «subscribe» может не находиться на первой странице списка. Вы можете щелкнуть знак «плюс» рядом с параметром системы, чтобы увидеть описание параметра.

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

    Тестирование

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

    • Регистр
    • Подтвердить регистрацию
    • Спасибо за регистрацию страницы
    • Управление настройками
    • Регистрация подтверждена
    • Отписаться

    Из-за ошибки во фрагменте входа (версия 1. 7.3) пользователи, отвечающие на регистрационное письмо, входят в систему как (анонимные) пользователи, а не как они сами. Убедитесь, что у вас установлена ​​версия 1.8.0 пакета входа (или новее).

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

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

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

    Далее авторизуйтесь в Менеджере. Убедитесь, что новый пользователь существует и активен. Перейти к безопасности | Управление пользователями. Щелкните правой кнопкой мыши нового пользователя и выберите «Обновить пользователя». Проверьте поле комментариев в профиле пользователя, чтобы убедиться, что там записаны интересы (или вкладку «Расширенные поля», если вы выбрали этот вариант). Удалить пользователя.

    Настройка подписки

    Вы обязательно захотите изменить список настроек, используемый в форме регистрации и форме управления настройками. Чтобы установить доступные настройки, продублируйте фрагмент sbsPrefListTpl (назовите его MysbsPrefListTpl) и отредактируйте записи. Затем установите системную настройку prefListTpl на «MysbsPreflistTpl».

    Формат фрагмента Tpl списка предпочтений представляет собой серию пар Caption==value, разделенных ||:

    Заголовок один==Вариант1||Заголовок Два==вариант2||Заголовок Три==вариант3
     

    Заголовок (слева от знаков ==) — это то, что будет отображаться в форме. Значение (справа от знаков ==) — это то, что будет храниться в базе данных. Убедитесь, что нет пробелов, кроме как между словами подписи, и что список настроек находится на одной строке.

    Если вы хотите отобразить раздел «Группы пользователей» в форме, вам нужно будет выполнить аналогичный процесс с фрагментом sbsGroupsListTpl. Вам также потребуется изменить системную настройку showGroups и системную настройку userRoles. Вы также можете удалить свойство &userGroups в теге сниппета Register в чанке sbsRegisterFormTpl.

    Проверка JavaScript для всех полей в форме регистрации. Все поля обязательны к заполнению. Поля «Имя пользователя» и «Пароль» должны содержать не менее 6 символов, а два поля «Пароль» должны совпадать. Поле Электронная почта также проверяется, чтобы убедиться, что это действительный адрес. Пользователь также должен установить хотя бы один из флажков «Интересы», если отображается этот раздел, и выбрать хотя бы одну группу пользователей, если этот раздел отображается.

    По умолчанию предпочтения пользователя сохраняются в поле комментариев профиля пользователя. Это предпочтительный метод, поскольку получение предпочтений пользователя в коде и их отображение на странице будет намного быстрее и проще. Однако, если вам нужно поле комментария для чего-то другого, вы можете изменить используемый метод и сохранить настройки в расширенном поле профиля пользователя. Для этого просто перейдите в Система | Системные настройки, выберите пространство имен «подписаться» и измените параметр «Использовать поле комментария» на «Нет». Настройки пользователя будут храниться в расширенном поле в профиле пользователя под названием «интересы». Если вам нужно изменить имя этого поля, вы можете изменить настройку расширенной системы полей подписки.

    Стилизация форм

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

    Стиль сообщения по умолчанию — float:right, но вы можете изменить файл CSS. Обязательно измените разделы loggedInDisplay и loggedOutDisplay. Вы можете оставить поплавок, но не позволяйте другим элементам обтекать сообщение. Если это так, вы можете добавить

    выше и/или ниже сообщения в своем шаблоне. См. раздел ниже об изменении файла CSS. Если вы измените существующий файл, ваши изменения будут перезаписаны при обновлении подписки.

    И форма регистрации, и сообщение «запрос на подписку» имеют стиль файла /assets/components/subscribe/css/subscribe.css, как и два всплывающих окна. См. раздел ниже об изменении CSS.

    Всплывающие окна сделаны с помощью CSS и небольшого количества встроенного JavaScript для переключения их видимости. Вы можете изменить их положение и внешний вид в файле subscribe.css.

    Чтобы изменить сообщение во всплывающих окнах, продублируйте фрагменты sbsPrivacyDialogTextTpl и sbsWhyDialogTextTplchunk. Добавьте «My» в качестве префикса к их именам и измените следующие два параметра системы подписки, чтобы они совпадали: почемуDialogTextTpl и privacyDialogTextTpl.

    В текущем стиле всплывающие окна будут автоматически расширяться в соответствии с длиной содержимого.

    Изменение CSS

    Если вы хотите изменить CSS JS, используемый для подписки, лучше всего продублировать файл subscribe.css и/или subscribe.js, чтобы они не были перезаписаны обновлениями:

    активы/компоненты/подписаться/CSS/subscribe.css
    активы/компоненты/подписаться/js/subscribe.js
     

    Вы можете указать файлы, которые будут использоваться с вашим файлом CSS, с помощью системных настроек sbsCssPath, sbsCssFile, sbsJsPath и sbsJsFile. Если ваши файлы находятся в том же каталоге, что и исходные, вам нужно только изменить настройки sbsCssFile и/или sbsJsFile, но учтите, что ваши файлы будут удалены, если вы удалите Subscribe.

    Если вы хотите добавить CSS в свой основной файл CSS, установите для системной настройки sbsCssFile значение none, и файл CSS не будет загружен.

    То же самое можно сделать с SbsJsFile Системными настройками. Если установить для него значение none, файл JS не будет загружен, и ваша форма может использовать проверку фрагмента регистрации или вашу собственную проверку.

    Файл subscribe-min.js используется только регистрационной формой и автоматически загружается фрагментом, представляющим форму, на основе системных настроек sbsJsPath и sbsJsFile. JavaScript, используемый для отображения двух всплывающих окон в запросе на подписку, находится в блоке sbsLoggedOutDisplayTpl. Если вам нужно изменить его, см. следующий раздел.

    По умолчанию форма регистрации использует subscribe-min.js. Вы можете изменить это, установив системную настройку sbsJsFile.

    Изменение фрагментов Tpl

    Все фрагменты Tpl, используемые Subscribe, можно установить с помощью свойств. Когда MODX ищет свойство, он будет использовать свойство, установленное в теге сниппета, но если свойство там не установлено, оно проверит таблицу системных настроек на наличие свойства. Поскольку подписка использует одни и те же свойства в разных фрагментах и ​​фрагментах, имена фрагментов Tpl задаются как системные настройки. Вы можете переопределить их с помощью свойств в тегах фрагментов и фрагментах, но использование системных настроек проще и надежнее.

    Если вы хотите изменить какие-либо фрагменты Tpl по умолчанию, продублируйте их и измените имя, добавив «Мой» в качестве префикса. Затем измените значение соответствующей системной настройки подписки, добавив «Мой» в качестве префикса. Перейти к системе | Системные настройки и выберите пространство имен «подписаться» в раскрывающемся списке в верхней части сетки. Вы можете щелкнуть знак плюса, чтобы увидеть описание каждой настройки. Дважды щелкните значение параметра, который вы хотите изменить, измените его и щелкните в другом месте сетки. Будьте осторожны — имена чувствительны к регистру, и если вы ошибетесь в их написании в сетке «Системные настройки», Subscribe продолжит использовать фрагменты Tpl, файлы CSS и JS по умолчанию.

    Отменить подписку

    Начиная с версии 1.2.0, у Subscribe есть класс Unsubscribe, который может создавать безопасную ссылку для отказа от подписки для включения в сообщения электронной почты. Эта функция предназначена для использования дополнительными функциями Notify и EmailResource. На работу подписки это не влияет, но код есть, если вы хотите накрутить собственную систему, чтобы предоставлять такую ​​ссылку в массовых рассылках.

    Изменение ресурсов

    Вы можете настроить внешний вид ресурсов так, как вам нужно, изменив CSS. Если нет (например, вам нужно перевести ресурсы), продублируйте ресурсы и измените соответствующие настройки системы, чтобы подписчик мог их найти. Ваши новые ресурсы и настройки сохранятся после обновлений, но не будут удалены, если вы удалите подписку.

    Отчет об интересах

    Начиная с версии 1.2.1, подписка будет отображать таблицу, показывающую количество активных пользователей для тегов интересов, групп пользователей или того и другого. Чтобы просмотреть отчет, просто просмотрите ресурс «Отчет по интересам» в папке «Подписка». Фрагмент, создающий отчет, использует системные настройки подписки, чтобы решить, что показывать. Вы можете переопределить настройки с помощью свойств тега фрагмента InterestReport на Страница «Процентный отчет». Обычно в этом нет необходимости, но если вы хотите показать членство в группе пользователей и запретить пользователям управлять своими группами, вы можете использовать &sbs_show_group=`1` в теге и поместите группы в блок sbsGroupListTpl. Обратите внимание, что группы не должны иметь ничего общего с подпиской, поэтому вы можете использовать это как общий отчет о членстве в группах пользователей.

    Системные настройки подписки

    Настройка Описание По умолчанию
    sbs_register_page_id Идентификатор ресурса страницы регистрации подписки (с регистрационной формой) (устанавливается автоматически)
    sbs_login_page_id Идентификатор ресурса страницы входа (устанавливается автоматически)
    sbs_confirm_register_page_id Идентификатор ресурса страницы регистрации подтверждения подписки (устанавливается автоматически)
    sbs_manage_prefs_page_id Идентификатор ресурса на странице настроек управления подпиской (устанавливается автоматически)
    sbs_registration_confirmed_page_id Идентификатор ресурса страницы «Подтверждение регистрации» (страница, на которую перенаправляется пользователь после перехода по ссылке в письме о регистрации) (устанавливается автоматически)
    sbs_thank_you_page_id Идентификатор ресурса страницы «Подписаться на благодарность за регистрацию» (страница, на которую пользователь попадает сразу после отправки регистрационной формы) (устанавливается автоматически)
    prefListTpl Tpl для списка пользовательских настроек sbsPrefListTpl
    групповой списокTpl Tpl для использования в списке групп пользователей sbsGroupListTpl
    флажокTpl Внешний Tpl для использования в списке пользовательских настроек sbsCheckboxTpl
    loggedOutDisplayTpl Tpl для использования для отображения выхода из системы подписки sbsLoggedOutDisplayTpl
    ЛоггинДисплейТпл Tpl для отображения входа в систему Subscribe sbsLoggedInDisplayTpl
    почемуDialogTpl Внешний Tpl для использования во всплывающем диалоговом окне «Зачем подписываться» sbsWhyDialogTpl
    почемуDialogTextTpl Tpl для текста во всплывающем диалоговом окне «Зачем подписываться» sbsWhyDialogTextTpl
    конфиденциальностьDialogTpl Внешний Tpl для использования во всплывающем диалоговом окне подписки на конфиденциальность sbsPrivacyDialogTpl
    конфиденциальностьDialogTextTpl Tpl для текста во всплывающем диалоговом окне подписки на конфиденциальность sbsPrivacyDialogTextTpl
    sbsCssPath Путь к CSS-файлу подписки {assets_url} компоненты/подписаться/CSS/
    sbsCssFile Имя файла подписки CSS-файла; установите значение «none» для отсутствия файла CSS подписка. css
    sbsJsPath Путь к JS-файлу подписки {assets_url}components/subscribe/js/
    сбсжсфиле Имя файла JS-файла подписки; установите «none» для отсутствия JS подписка.js
    sbs_use_comment_field Если установлено значение «Да», пользовательские настройки сохраняются в поле комментариев профиля пользователя. Если установлено значение «Нет», префы сохраняются как расширенное поле в профиле пользователя в поле, указанном в настройке «sbs_extended_field». По умолчанию: «комментарий». 1
    sbs_extended_field Имя поля для хранения пользовательских настроек в расширенных полях профиля пользователя. Игнорируется, если для параметра useCommentField не установлено значение «нет 9».0675 проценты
    язык Язык для подписки и
    sbs_secret_key Используется Notify и EmailResource для предоставления безопасной ссылки для отмены подписки (устанавливается автоматически)
    sbs_unsubscribe_page_id Идентификатор ресурса страницы отписки (устанавливается автоматически)
    sbs_user_roles Разделенный запятыми список пар имя_группы:роль
    sbs_show_Interests Если true, раздел «Интересы» будет отображаться в формах «Управление настройками» и «Регистрация». правда
    sbs_show_groups Если установлено значение true, раздел «Группы пользователей» будет отображаться в формах «Управление настройками» и «Регистрация» ложь
    sbs_field_name Имя поля, используемое для флажков списка интересов — не нужно его менять, если нет конфликта с чем-то еще на странице проценты
    sbs_groups_field_name Имя поля, используемое для флажков группы пользователей — не нужно его менять, если нет конфликта с чем-то еще на странице группы

     

    Моя книга, MODX: официальное руководство — цифровое издание теперь доступно здесь. Бумажная версия книги доступна на Amazon.

    Если у вас есть книга и вы хотите скачать код, вы можете найти его здесь.

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

    MODX: Официальное руководство состоит из 772 страниц и выходит далеко за рамки этого веб-сайта в объяснении начальных и продвинутых методов MODX. Он включает подробную информацию о:

    • Установка MODX
    • Как работает MODX
    • Работа с ресурсами и элементами MODX
    • Использование Git с MODX
    • Использование общих дополнительных компонентов MODX, таких как SPForm, Login, getResources и FormIt
    • Разрешения безопасности MODX
    • Настройка MODX Manager
    • Использование настройки формы
    • Создание транспортных пакетов
    • Объектные методы MODX и xPDO
    • Системные события MODX
    • Использование PHP с MODX

    Перейдите сюда для получения дополнительной информации о книге.

    Благодарим за посещение BobsGuides.com

      —  Bob Ray

    modx register расширенные поля вход в систему

    • Шаг 1. Перейти на страницу расширенных полей modx register по официальной ссылке ниже.
    • Шаг 2. Войдите, используя свое имя пользователя и пароль. Экран входа появляется при успешном входе в систему.
    • Шаг 3. Если вы по-прежнему не можете получить доступ к расширенным полям регистра modx, см. Варианты устранения неполадок.

    расширенные поля регистра modx

    Добавил: Torri Trell

    Объяснитель

    Логин. Использование настраиваемых полей — Учебники | MODX Docs

    Вход в систему поддерживает настройку настраиваемых (или «расширенных») полей с использованием «расширенного» поля профиля пользователя Revolution. По сути, MODX хранит данные поля в объекте JSON, который можно получить в любое время. Логин делает это довольно просто: используя свойство &useExtended в сниппетах Register, UpdateProfile и Profile. Он включен по умолчанию.

    URL-адрес: https://docs.modx.com/current/en/extras/login/login.tutorials/using-custom-fields

    41936

    Посещения в месяц

    679166

    Alex Rank 50a

    0 Alex

    Популярное в

    Up

    Service Staus

    Добавил: Юста Богар

    Объяснитель

    Зарегистрироваться — Войти | MODX Docs

    Регистрация по умолчанию требует, чтобы пользователь активировал свою учетную запись перед входом в систему. Сниппет создает объект modUser и устанавливает для его «активного» поля значение 0. Затем пользователь получает электронное письмо с URL-адресом для активации своей учетной записи. Как только Пользователь посещает страницу, его учетная запись устанавливается на «active=1», после чего он может войти в систему.

    Url: https://docs.modx.com/current/en/extras/login/login.register

    13462

    Monthly Visits

    4463407

    Alexa Rank

    US

    Popular in

    Up

    Service Staus

    Добавил: Charolette Polack

    Объяснитель

    Руководство Боба | Понимание расширенных пользовательских полей MODX и .

    ..

    Обработка расширенных полей пользовательского профиля MODX в коде Возможно, вы использовали расширенные поля в пользовательских профилях MODX в MODX Manager, где MODX предоставляет для них удобный интерфейс. Однако использование расширенных полей в коде помогает немного понять, как они хранятся.

    URL: https://bobsguides.com/blog.html/2013/11/03/understanding-modx-extended-fields-and-json/

    16305

    Ежемесячные посещения

    1095419 Alex Rank4

    США

    Популярно в

    Up

    Статус службы

    Добавил: Arlen Northway

    Объяснитель

    Доступ к расширенным полям (управление пользователями Revo) | MODX …

    Например, я создал расширенное поле под названием «тест» с некоторым значением — оно включено в базу данных под полем «расширенное» как {«тест»:»Если это показывает, выиграйте!»} И Я предполагаю, что в качестве расширенного вопроса, как лучше всего подойти к созданию набора расширенных полей, которые применяются к определенной группе пользователей?

    Url: https://forums. modx.com/thread/44021/accessing-extended-fields-revo-user-management

    20904

    Monthly Visits

    546202

    Alexa Rank

    US

    Популярно в

    Up

    Service Staus

    Добавил: Refugio Mangat

    Объяснитель

    Понимание расширенных полей MODX и JSON | Однако использование расширенных полей в коде поможет немного понять, как они хранятся. Большинство полей объектов MODX, таких как ресурсы, пользователи, фрагменты, фрагменты и т. д., хранятся либо в виде целых чисел, либо в виде текстовых строк.

    URL: https://blog.arvixe.com/understanding-modx-extended-fields-and-json/

    41812

    Ежемесячные визиты

    82858

    Range

    US

    98 82858

    Rank

    US

    98

    Alexa

    9000

    42858

    Alexa

    9000

    Alexa

    Alexa

    Up

    Service Staus

    Добавил: Kirsten Yeddo

    Объяснитель

    Пользовательские пользователи — Расширение MODX | Документация MODX

    Чтобы получить доступ к расширенному классу, мы должны сообщить modUser, что рассматриваемый пользователь был расширен. Таблица modx _users в базе данных содержит поле специально для этой цели: class_key. Значение по умолчанию в этом поле — modUser.

    Url: https://docs.modx.com/current/en/extending-modx/custom-users

    31829

    Monthly Visits

    3172992

    Alexa Rank

    US

    Popular in

    Up

    Service Staus

    Добавил: Octavio Schroot

    Объяснитель

    modx revo добавление полей в пользовательский модуль — Stack Overflow

    См. Общие сведения о расширенных пользовательских полях MODX и JSON. Во-вторых, вы можете расширить modUser. Это даст вам полный контроль над пользовательской моделью и позволит добавить дополнительные связанные сущности. С этого момента вы сможете изменить форму пользователя в менеджере с настройкой формы или написать плагин для изменения представления.

    URL: https://stackoverflow.com/questions/29557675/modx-revo-adding-fields-in-user-module

    23942

    Ежемесячные визиты

    298483

    . Популярно в

    Up

    Service Staus

    Добавил: Ezekiel Ford

    Объяснитель

    Список пользователей MODX, выбранных в расширенном поле | Блог Arvixe

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

    URL-адрес: https://blog.arvixe.com/list-modx-users-selected-by-an-extended-field/

    39709

    Посещения в месяц

    441815

    9005 0 Rank

    Alexa0

    Popular in

    Up

    Service Staus

    Добавил: Issac Foucault

    Объяснитель

    modRegistry — Услуги MODX | MODX Docs

    Служба modRegistry, поставляемая с ядром MODX Revolution, представляет собой простую службу очереди сообщений, которую разработчики могут использовать для самых разных целей. Он поставляется с реализацией modRegister файла и базы данных и может быть расширен для работы с пользовательскими или внешними реализациями очереди сообщений.

    Url: https://docs.modx.com/current/en/extending-modx/services/modregistry

    32258

    Monthly Visits

    3251521

    Alexa Rank

    US

    Popular in

    Up

    Service Staus

    Добавил: Veronika Eagleton

    Объяснитель

    Фрагменты написания — Расширение MODX | Документация MODX

    В MODX Revolution вы можете поместить файлы фрагментов в основной каталог и переместить весь каталог за пределы веб-корня. Вы также можете поместить тест во фрагмент, который заставит его выйти, если он не запущен внутри MODX, но безопаснее просто переместить файл или вставить код во фрагмент в Менеджере и удалить файл.

    Url: https://docs.modx.org/current/en/extending-modx/snippets

    44775

    Monthly Visits

    3655101

    Alexa Rank

    US

    Popular in

    Up

    Service Staus

    Как установить MODX Revolution на Debian 9 LAMP VPS

    MODX Revolution — это быстрая, гибкая, масштабируемая, бесплатная система управления контентом (CMS) корпоративного уровня с открытым исходным кодом, написанная на PHP. Он особенно хорошо подходит для создания высококлассных сайтов, поскольку обладает расширенными многоязычными возможностями и построен с нуля с использованием принципов безопасного проектирования.

    Предварительные условия

    • Чистый экземпляр сервера Vultr Debian 9 с доступом по SSH

    Шаг 1: Добавление пользователя Sudo

    Мы начнем с добавления нового пользователя sudo .

    Сначала войдите на свой сервер как root .

     ssh [email protected]ВАШ_VULTR_IP_АДРЕС
     

    Команда sudo не установлена ​​по умолчанию в экземпляре сервера Vultr Debain 9, поэтому мы сначала установим sudo .

     apt-get -y установить sudo
     

    Теперь добавьте нового пользователя с именем user1 (или предпочитаемое вами имя пользователя).

     adduser пользователь 1
     

    При появлении запроса введите безопасный и запоминающийся пароль. Вам также будет предложено ввести ваше «Полное имя» и некоторые другие данные, но вы можете просто оставить их пустыми, нажав « Enter ».

    Теперь проверьте файл /etc/sudoers , чтобы убедиться, что группа sudoers включена.

     визуально
     

    Найдите такой раздел.

     %sudo ВСЕ=(ВСЕ:ВСЕ) ВСЕ
     

    Эта строка сообщает нам, что пользователи, являющиеся членами группы sudo , могут использовать команду sudo для получения привилегий root . По умолчанию он должен быть раскомментирован, чтобы вы могли просто выйти из файла.

    Далее нам нужно добавить user1 в группу sudo .

     usermod -aG sudo user1
     

    Мы можем проверить членство в группе user1 и убедиться, что 9Команда 1053 usermod работала с командой groups .

     группы пользователей1
     

    Теперь используйте команду su , чтобы переключиться на новую учетную запись пользователя sudo user1 .

     су - пользователь1
     

    В командной строке будет указано, что вы вошли в учетную запись user1 . Вы можете проверить это с помощью команды whoami .

     кто
     

    Теперь перезапустите службу sshd , чтобы вы могли войти через ssh с новой учетной записью пользователя sudo без полномочий root, которую вы только что создали.

     sudo systemctl перезапустить sshd
     

    Выход из учетной записи user1 .

     выход
     

    Выйдите из учетной записи root (что отключит сеанс ssh ).

     выход
     

    Теперь вы можете ssh войти в экземпляр сервера с вашего локального хоста, используя новую учетную запись пользователя sudo без полномочий root user1 .

     ssh [email protected]_VULTR_IP_ADDRESS
     

    Если вы хотите выполнить sudo без необходимости каждый раз вводить пароль, снова откройте файл /etc/sudoers , используя visudo .

     Судо визуально
     

    Отредактируйте раздел для группы sudo , чтобы он выглядел следующим образом.

     %sudo ВСЕ=(ВСЕ) NOPASSWD: ВСЕ
     

    Обратите внимание: Отключение запроса пароля для пользователя sudo не рекомендуется, но включено здесь, поскольку может сделать настройку сервера более удобной и менее утомительной, особенно во время длительных сеансов системного администрирования. Если вас беспокоят последствия для безопасности, вы всегда можете вернуть исходное изменение конфигурации после завершения задач администрирования.

    Всякий раз, когда вы хотите войти в учетную запись пользователя root из учетной записи пользователя sudo , вы можете использовать одну из следующих команд.

     судо -я
    судо су -
     

    Вы можете выйти из учетной записи root и вернуться к своей учетной записи пользователя sudo в любое время.

     выход
     

    Шаг 2: Обновление системы Debian 9

    Прежде чем устанавливать какие-либо пакеты на экземпляр сервера Debian, мы сначала обновим систему.

    Убедитесь, что вы вошли на сервер под пользователем sudo без полномочий root, и выполните следующие команды.

     обновление sudo apt-get
    sudo apt-get -y обновить
     

    Шаг 3. Установите Apache

    Установите веб-сервер Apache.

     sudo apt-get -y установить apache2
     

    Затем используйте команду systemctl для запуска и включения автоматического выполнения Apache во время загрузки.

     sudo systemctl включить apache2
    sudo systemctl запустить apache2
     

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

     sudo vi /etc/apache2/sites-enabled/000-default.conf
     

    Параметр конфигурации DocumentRoot должен выглядеть следующим образом.

     DocumentRoot "/var/www/html"
     

    Теперь включите модуль mod_rewrite Apache.

     sudo a2enmod переписать
     

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

     sudo systemctl перезапустить apache2
     

    Шаг 4: Установите PHP 7.0

    Теперь мы можем установить PHP 7.0 вместе с необходимыми модулями PHP, необходимыми для MODX Revolution CMS.

     sudo apt-get -y установить php php-gd php-mbstring php-common php-mysql php-imagick php-xml
     

    Шаг 5: Установите MariaDB (MySQL)

    Debian 9 по умолчанию использует MariaDB, которая представляет собой усовершенствованную, разработанную сообществом, полностью открытую замену MySQL.

    Установить MariaDB.

     sudo apt-get -y установить mariadb-сервер
     

    Запустите и включите MariaDB для автоматического запуска во время загрузки.

     sudo systemctl включить mariadb
    sudo systemctl запустить mariadb
     

    Защитите установку сервера MariaDB.

     судо mysql_secure_installation
     

    Пароль root , вероятно, будет пустым, поэтому просто нажмите «, введите », когда будет предложено ввести пароль root .

    При появлении запроса на создание MariaDB/MySQL root , выберите « Y » (для ответа «да»), а затем введите безопасный пароль root . Просто ответьте « Y » на все остальные вопросы «да/нет», так как предложения по умолчанию являются наиболее безопасными вариантами.

    Шаг 6: Создайте базу данных для MODX Revolution

    Войдите в оболочку MariaDB как пользователь root MariaDB , выполнив следующую команду.

     sudo mariadb -u корень -p
     

    Чтобы получить доступ к командной строке MariaDB, просто введите MariaDB пароль root при появлении запроса.

    Выполните следующие запросы, чтобы создать базу данных MariaDB и пользователя базы данных для MODX Revolution.

     СОЗДАТЬ БАЗУ ДАННЫХ modx_data НАБОР СИМВОЛОВ utf8 COLLATE utf8_general_ci;
    СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ 'modx_user'@'localhost', ИДЕНТИФИЦИРОВАННОГО 'UltraSecurePassword';
    ПРЕДОСТАВИТЬ ВСЕ ПРИВИЛЕГИИ НА modx_data. * КОМУ 'modx_user'@'localhost';
    ПОЛНЫЕ ПРИВИЛЕГИИ;
    ВЫХОД;
     

    Вы можете заменить имя базы данных modx_data и имя пользователя modx_user на что-нибудь другое по своему вкусу, если хотите. Кроме того, убедитесь, что вы заменили " UltraSecurePassword " с действительным безопасным паролем.

    Шаг 7: Установите файлы MODX Revolution

    Измените текущий рабочий каталог на веб-каталог по умолчанию.

     cd /var/www/html/
     

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

     компакт-диск /var/www/ ; судо mkdir html ; компакт-диск html
     

    Теперь ваш текущий рабочий каталог должен быть: /var/www/html/ . Вы можете проверить это с помощью команды pwd (распечатать рабочий каталог).

     пароль
     

    Теперь используйте wget для загрузки установочного zip-пакета MODX Revolution.

     sudo wget https://modx.com/download/direct?id=modx-2.6.0-pl.zip
     

    Обратите внимание: Вам обязательно следует проверить наличие самой последней версии, посетив страницу загрузки MODX Revolution.

    Укажите текущий каталог, чтобы убедиться, что вы успешно загрузили файл.

     лс -ла
     

    Быстро установить разархивировать , чтобы вы могли разархивировать файл.

     sudo apt-get -y установить распаковать
     

    Дайте пакету более простое имя.

     sudo mv direct\?id\=modx-2.6.0-pl.zip modx.zip
     

    Теперь распакуйте zip-архив.

     sudo распаковать modx.zip
     

    Переместите все установочные файлы в корневой веб-каталог.

     sudo mv modx-2.6.0-pl/* /var/www/html
     

    Смените владельца веб-файлов, чтобы избежать проблем с правами доступа.

     sudo chown -R www-данные: www-данные *
     

    Перезапустите Apache еще раз.

     sudo systemctl перезапустить apache2
     

    Теперь мы готовы перейти к последнему шагу.

    Шаг 8: Завершите установку MODX Revolution

    Пришло время посетить IP-адрес вашего экземпляра сервера Debian 9 в браузере. Или, если вы уже настроили свои настройки Vultr DNS (и дали им достаточно времени для распространения), вы можете вместо этого просто посетить свой домен.

    Чтобы получить доступ к странице установки MODX Revolution, введите IP-адрес своего экземпляра Vultr, а затем /setup в адресную строку браузера.

     http://ВАШ_VULTR_IP_АДРЕС/setup
     

    Большинство параметров установки говорят сами за себя, но вот несколько советов, которые помогут вам в этом.

    Выберите язык.

    Нажмите кнопку Next , чтобы продолжить установку.

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

    Установите следующие параметры базы данных.

     Тип базы данных: mysql
    Хост базы данных: локальный
    Имя для входа в базу данных: modx_user (или ранее выбранное вами имя)
    Пароль базы данных: UltraSecurePassword (или ранее выбранный вами пароль)
    Имя базы данных: modx_data (или ранее выбранное вами имя)
    Префикс таблицы: modx_
     

    После того, как вы ввели указанные выше параметры базы данных, щелкните ссылку ниже, чтобы Проверить подключение к серверу базы данных и просмотреть сопоставления . Вы должны увидеть сообщение: Подключение к серверу базы данных: успешно! . Если вы получите какие-либо ошибки, вернитесь и убедитесь, что все параметры базы данных верны.

    Можно оставить для набора символов и параметров сортировки значения по умолчанию. Они должны выглядеть так.

     Набор символов подключения: utf8
    Сопоставление: utf8_general_ci
     

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

    Вам будет предложено ввести данные администратора, которые будут использоваться для входа в CMS. Заполните их, как показано ниже, и нажмите Далее .

     Имя администратора: 
    Электронная почта администратора: 
    Пароль администратора: 
     

    Вы должны увидеть сводку установки. Пока все выглядит хорошо, вы можете просто нажать Установите , чтобы установить MODX Revolution на свой экземпляр сервера.