MODX - Login (Авторизация пользователей)
Урок, в котором рассмотрим создание страниц "Авторизация" и "Восстановление пароля" с помощью компонента Login.
Страница "Авторизация"
Страница "Авторизация" предназначена для отображения пользователю формы входа на сайт, а также HTML-фрагмента с помощью которого он может выйти из системы. Всё логику работы по авторизации пользователя выполняет сниппет Login.
Содержимое ресурса "Авторизация" (сниппет Login):
[[!Login? &tplType=`modChunk` &loginTpl=`myLoginChunk` &logoutTpl=`myLogoutChunk` &errTpl=`lgnErrTpl` &redirectToPrior=`1` ]]

Описание используемых параметров сниппета Login:
Имя параметра | Описание |
---|---|
tplType | Тип шаблона для loginTpl и logoutTpl. Значение: modChunk. |
loginTpl | Шаблон формы для авторизации (входа) пользователя. |
logoutTpl | Шаблон, который отображается авторизованному пользователю. |
errTpl | Шаблон, который отображается пользователю при возникновении ошибки. |
redirectToPrior | Если установлено значение 1, то перенаправляет пользователя на предыдущую страницу (HTTP_REFERER) после успешного входа. |
Содержимое чанка myLoginChunk (шаблон формы входа):
<div class="container"> <div class="row"> <div class="col-md-8 col-lg-6"> <div class="panel panel-primary"> <div class="panel-heading"><i class="glyphicon glyphicon-edit"></i> [[+actionMsg]]</div> <div class="panel-body"> <p class="text-danger">[[+errors]]</p> <form class="form-horizontal" action="[[~[[*id]]]]" method="post"> <div class="form-group"> <label for="username" class="col-sm-4 control-label">[[%login.username]]</label> <div class="col-sm-8"> <input type="text" name="username" class="form-control" id="username"> </div> </div> <div class="form-group"> <label for="password" class="col-sm-4 control-label">[[%login.password]]</label> <div class="col-sm-8"> <input type="password" name="password" class="form-control" id="password"> </div> </div> <input class="returnUrl" type="hidden" name="returnUrl" value="[[+request_uri]]" /> <input class="loginLoginValue" type="hidden" name="service" value="login"> <input type="submit" value="[[+actionMsg]]" name="Login" id="Login" class="btn btn-primary pull-right"> </form> <div class="clearfix"></div> <hr style="margin-top:10x;margin-bottom:5px;"> <p><a href="[[~32]]" class="btn btn-link pull-right">Забыли пароль?</a></p> </div> </div> </div> </div> </div>

Содержимое чанка myLgnErrTpl (шаблон ошибки):
<p class="error">[[+msg]]</p>

Содержимое чанка myLogoutChunk (шаблон, которой отображается авторизированному пользователю; используется для выхода из системы):
<div class="container"> <div class="row"> <div class="col-md-5"> <div class="panel panel-primary"> <div class="panel-heading"><i class="glyphicon glyphicon-user"></i> Пользователь</div> <div class="panel-body"> <div class="loginMessage">[[+errors]]</div> Имя пользователя: [[!+modx.user.username]] <hr style="margin-top:8px; margin-bottom:8px;"> <div class="row"> <div class="col-xs-6" style="margin-bottom:8px;"> <i class="glyphicon glyphicon-off"></i> <a href="[[+logoutUrl]]" title="[[+actionMsg]]">[[+actionMsg]]</a> </div> <div class="col-xs-6" style="margin-bottom:8px;"> <i class="glyphicon glyphicon-pencil"></i> <a href="[[~33]]" title="Изменение пароля">Изменение пароля</a> </div> <div class="col-xs-6" style="margin-bottom:8px;"> <i class="glyphicon glyphicon-home"></i> <a href="[[~30]]" title="Личный кабинет">Личный кабинет</a> </div> <div class="col-xs-6" style="margin-bottom:8px;"> <i class="glyphicon glyphicon-cog"></i> <a href="[[~34]]" title="Редактирование данных">Редактирование данных</a> </div> </div> </div> </div> </div> </div>

Страница "Восстановление пароля"
Страница "Восстановления пароля" используется для тех случаев, когда пользователь забыл пароль и хочет его сбросить. Переход на данную страницу осуществляется с помощью ссылки "Забыли пароль?", которая расположена ниже формы авторизации.
Этот ресурс выполняет следующие действия:
- отображает пользователю форму, с помощью которой он может потребовать выполнить сброс пароля;
- отправляет письмо (после успешной обработки формы) на email. Письмо содержит ссылку, с помощью которой пользователь может выполнить сброс своего пароля. На этой странице вышеперечисленные действия выполняет сниппет ForgotPassword;
- отображает сообщение (если пользователь перешёл на эту страницу с помощью ссылки из письма), с помощью которой пользователь сможет выполнить сброс пароля. Эти действия на странице (установку нового пароля и отображение результата сброса) выполняет сниппет ResetPassword.
Содержимое ресурса "Восстановления пароля" (сниппет ForgotPassword и ResetPassword):
[[!ResetPassword:empty=` [[!ForgotPassword? &resetResourceId=`[[*id]]` &loginResourceId=`29` &tpl=`mylgnForgotPassTpl` &sentTpl=`mylgnForgotPassSentTpl` &emailTpl=`mylgnForgotPassEmail` &emailSubject=`Восстановление пароля` ]]`? &tpl=`mylgnResetPassTpl` &expiredTpl=`mylgnExpiredTpl` &loginResourceId=`29` ]]

Описание используемых параметров сниппета ForgotPassword:
Имя параметра | Описание |
---|---|
tpl | Шаблон формы для восстановления пароля. Значение: mylgnForgotPassTpl |
emailTpl | Шаблон письма с инструкцией по восстановлению пароля, отправляемый пользователю. Значение: mylgnForgotPassEmail. |
emailSubject | Тема письма. Значение: Восстановление пароля. |
sentTpl | Шаблон сообщения, которое необходимо показать пользователю при удачной отправки email. Значение: mylgnForgotPassSentTpl. |
loginResourceId | Ресурс, на который необходимо направить пользователя после успешного подтверждения. Значение: 29. |
resetResourceId | Идентификатор ресурса, в котором расположен сниппет ResetPassword. Значение: [[*id]]. |
Описание используемых параметров сниппета ResetPassword:
Имя параметра | Описание |
---|---|
tpl | Шаблон сообщения, содержащий информацию о сбросе пароля. Значение: mylgnResetPassTpl. |
tplType | Тип шаблона tpl. Значение: modChunk. |
loginResourceId | Ресурс, на который необходимо направить пользователя после успешного выполнения сброса пароля. Значение: 29. |
expiredTpl | Шаблон сообщения о том, что пароль уже был сброшен или срок действия ссылки истёк. Значение mylgnExpiredTpl. |
Содержимое чанка mylgnForgotPassTpl (шаблон, которой отображает пользователю форму для восстановления пароля):
<div class="container"> <div class="row"> <div class="col-md-8 col-lg-6"> <div class="panel panel-primary"> <div class="panel-heading"><i class="glyphicon glyphicon-erase"></i> [[%login.forgot_password]]</div> <div class="panel-body"> <div class="text-danger">[[+loginfp.errors]]</div> <form class="form-horizontal" action="[[~[[*id]]]]" method="post"> <div class="form-group"> <label for="username" class="col-sm-4 control-label">[[%login.username]]</label> <div class="col-sm-8"> <input type="text" name="username" class="form-control" id="username" value="[[+loginfp.post.username]]"> </div> </div> <p>[[%login.or_forgot_username]]</p> <div class="form-group"> <label for="username" class="col-sm-4 control-label">[[%login.email]]</label> <div class="col-sm-8"> <input type="text" name="email" class="form-control" id="email" value="[[+loginfp.post.email]]"> </div> </div> <input class="returnUrl" type="hidden" name="returnUrl" value="[[+loginfp.request_uri]]" /> <input class="loginFPService" type="hidden" name="login_fp_service" value="forgotpassword" /> <input type="submit" value="[[%login.reset_password]]" name="login_fp" id="login_fp" class="btn btn-primary pull-right"> </form> </div> </div> </div> </div> </div>

Содержимое чанка mylgnForgotPassSentTpl (шаблон, которой отображает пользователю сообщение об успешной отправке почты):
<p>Инструкция по сбросу пароля была отправлена на Ваш почтовый адрес ([[+email]]).</p>

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

Содержимое чанка mylgnResetPassTpl (шаблон сообщения о результате сброса пароля):
<div class="loginResetPass"> <p class="loginResetPassHeader">[[+username]],</p> <p class="loginResetPassText">Ваш пароль успешно сброшен. Пожалуйста перейдите на страницу <a href="[[+loginUrl]]">"Авторизация"</a> для входа.</p> </div>

Содержимое чанка mylgnExpiredTpl (шаблон сообщения о том, что пароль уже был сброшен или срок действия ссылки истёк):
<p><strong>Информация о сбросе пароля</strong></p> <p>Ваш пароль уже сброшен или срок действия ссылки уже истёк. Если вам нужно сбросить пароль, то перейдите по следующей <a href="[[~32]]">ссылке</a>.</p>

В чанке авторизации вставляем:
Прошу помощи.
Вроде все работает, но не происходит сброса пароля. Приходит письмо с новым паролем и ссылкой для активации, но пароль остается прежним.
Можете подсказать куда копать?
MODX 2.8.1
Посмотрите логи, может там какая подсказка имеется. Также проверьте на какую страницу ведёт ссылка в письме и подключен ли к этой странице сниппет ResetPassword.
На открывшейся странице выбираем пространство имен «login», нужный язык, далее находим это название и меняем ему текст на нужный.
Лексиконы – это такие элементы MODX, которые заменяются на соответствующее значения из словаря. В зависимости от языковой версии сайта – это может быть одно или другое значение.
Если у вас сайт на одном языке, и вы не собираетесь в дальнейшем делать его мультиязычным, то тогда просто можно удалить этот элемент, и написать вместо него нужный текст.
Подскажите, пожалуйста, как решить проблему.
При попытке перейти на страницу «Личный кабинет», без авторизации, ожидаемо перенаправляемся на страницу авторизации (либо любую другую указанную в параметрах). После авторизации, на странице "Личный кабинет" видим всю необходимую информацию.
Проблема: после выполнения logout и попытке перехода на страницу "Личный кабинет" не происходит перенаправления на страницу авторизации, а попадаем в личный кабинет в котором все поля пустые (т.к. logout выполнен). Как победить эту беду? Почему после logout страница остается доступной и не происходит перенаправления? Помогает только очистка кэша в админке. Как можно побороть?
Действительно, все оказалось так просто)
Отличный ресурс!
Еще раз спасибо, успехов!
На «тренировочном» все работает (кроме выхода, хотя логаут как у вас прописан)
На основном же все отправляет на главную! хотя и там и там настройки идентичные, чанки идентичные (только ссылки ресурсов поправила), но все равно ничего не работает(((
На тренировочном «выход» отправляет на смену пароля
Самое интересное, он каждый раз отправляет на разные стр, то в ЛК, то на изменение данных
Нет, не так… все равно все не работает если с др браузера зайти((( отправка на главную и все тут
этот error всегда есть что ли? он не связан с плагином, а связан с modx?
Эти значения устанавливаются в «Управление словарями». Чтобы их найти, нужно в админке нажать на значок шестерёнки и выбрать соответствующий раздел. После этого выбрать пространство имён «login» и найти этот ключ. Этот ключ на определённом языке будет иметь определённое значение. Именно оно и будет выводиться вместо [[%login.password]]. Если ваш сайт не многоязычный, то эти элементы можете просто заменить на любой свой текст.
[[+actionMsg]] и другие элементы MODX начинающиеся со одного знака «+» называются плейсхолдерами. Их устанавливают сниппеты. Могут их конечно устанавливать и другие элементы MODX, но в большинстве случаев делают это именно они.
Например, имеется следующий вызов сниппета:
В нём форма входа устанавливается с помощью параметра myLoginChunk. В myLoginChunk указывается чанк. В процессе выполнения сниппет выполняет некоторые действия и если ему нужно вывести форму, то он заменяет в ней плейсхолдеры на значения, которые он получил в результате своей работе.
Например, в коде actionMsg определяется так:
Т.е. если пользователь аутентифицированный, то это значение устанавливается равной значению лексикона с ключом «login.logout», иначе значению лексикона с ключом «login».
Плейсхолдер [[+error]] тоже устанавливается сниппетом Login, но уже следующим образом:
Подскажите пожалуйста из-за чего при попытке авторизоваться может просто перезагружать страницу и выдавать абсолютно пустую страницу? В логах везде пусто, в консоли тоже. Для быстроты брал всё с сайта на котором это работало с последующей правкой под текущий сайт (изменение ID страниц редактирования профиля и т.д.), но быстрее не вышло…
Потратил две недели на эту проблему, а нож в спину получил вовсе не оттуда откуда мог бы ожидать) Возможно кому-то пригодится моё решение…
Как оказалось всё дело было в плагине отрабатывающем по событию OnHandleRequest и обрабатывающем AJAX-запросы, а именно в строке
далее по коду плагина вызывалaсь die().
Пришлось дополнять ещё одной проверкой:
, где 32 и 33 — это ID страниц редактирования пароля и профиля.
Возможно стоило просто понизить приоритет плагина, установив, например -100? С приоритетами плагинов ещё пока не разобрался и не до конца представляю их работу. Например, есть 2 плагина с приоритетами -100 и 0, плагин с приоритетом -100 выполнится раньше второго? Или я неправильно понимаю эти приоритеты?
При нажатии авторизация на верху сайта всплывало окно с темой шаблона для авторизации, а сейчас ничего не всплывает и не открывается, а авторизация постоянно в самом низу сайта без формы, просто квадратики для ввода логина и пароля. В этом движке итак ничего не понимаю и как тут всё работает.
На скрине как было и стало
Я понял одно, что ничего лучше не обновлять.
Подскажите пожалуйста в чём проблема.
Не получается повторно войти с логином/паролем зарегистрированного пользователя.
Первый раз при регистрации, подтверждаю почту, захожу всё без проблем. Далее выхожу из под данного пользователя и всё, повторно уже не получается войти (пишет что логин или пароль не верный, хотя этот логин и пароль приходят на почту).
Я нашел проблему — некоторые сайты автоматические редиректались с www. а некоторые нет. Так вот — авторизация не переходит с одних сайтов на вторые. В .htaccess поставил что бы все было без www и все заработало :)
— Нажал на логин/регистрация, зарегистрировался.
— После этого Фраза «логин/регистрация» заменилась на НИК пользователя
Поэтому, используя это можно определить, авторизирован ли пользователь или нет так:
Если используете Fenom то так:
Подскажите, каким образом реализовать такие функции при авторизации:
1. Показать вводимый пароль или скрыть его (как у многих глаз либо открыт либо закрыт)
2. Сохранить пароль, или вы используете чужой компьютер
Заранее спасибо
Осуществить показ и скрытия пароля можно так.
1. HTML код:
2. JavaScript сценарий:
Для запоминания пароля добавьте в форму флажок:
Спасибо, спасибо, спасибо! Всё работает!
У Вас на сайте при авторизации происходит перенаправление на предыдущую страницу.
Не подскажите как это реализовано?
Затем после успешной авторизации пользователя, вы проверяете наличие этого параметра в суперглобальном массиве $_GET. И если он есть, то формируете редирект:
Это удобно.
Ссылка сформирована так: Проверил Base64-декодером: имя юзера действительно зашифровано во второй части, где lu, lp же выдает какой-то символьный набор, и что он означает, одному Login`у известно. Может, неправильно ссылка формируется? Активации нет, как бубном ни тряси…
Может, уважаемый Андрей объявится и скажет удалось ли победить проблему, или у кого-то похожие траблы и тоже удалось решить?
lp — пароль пользователя
lu — имя пользователя
В сниппете Register проверьте значение параметра activationResourceId. Данное значение — это id ресурса, в котором должен находиться вызов сниппета ConfirmRegister. Кроме этого, ресурс содержащий вызов сниппета ConfirmRegister должен быть доступен анонимному пользователю. А также убедитесь в том, что все сниппеты вызываются не кэшированными.
Если вы копируете ссылку из заглушки, то обработайте все специальные символы. Например: необходимо заменить на: А также проверьте URL. Он должен ввести на страницу, в которой расположен сниппет ConfirmRegister. Ещё совет: почистите кэш MODX Revo и выполняйте действия во фронтенде (в браузере) в режиме инкогнито.
Действительно, все дело было в спецсимволе. Все остальное настроено правильно.
иначе используется оригинальный, англоязычный чанк lgnResetPassTpl, а так можно свой вставить.
Данный скрипт будет скрывать форму, если в элементе с классом error содержится текст (т.е. описание ошибки).
Но код лучше изменить (т.е. искать элементы не по классам и тегам, а посредством идентификаторов)… Для этого необходимо присвоить идентификаторы необходимым элементам и указать их в скрипте вместо классов и тегов.
Не могу заставить работать снипет ResetPassword
Письмо с новым паролем приходит, но когда переходишь по ссылке выводится чанк: lgnExpiredTpl
и соответственно новый пароль не устанавливается.
Как это можно решить? с чем это может быть связанно?
Проблема вот в этом коде, RessetPassword.php:
if (empty($this->user)) return $this->modx->getChunk($this->getProperty('expiredTpl'));
if (!$this->verifyIdentity()) return $this->modx->getChunk($this->getProperty('expiredTpl'));
И все равно, как писал выше, в боковой панели с выводом последних статей осталась активной ссылка только на верхнюю статью. Там были сперва заголовки-ссылки на 3 статьи, 1 активная, 2-3 стали неактивные. Увеличил кол-во статей на 5, и 1, 4, 5-я активные, 2-3-я по-прежнему нет. Причем, что интересно, если дважды щелкнуть мышью по этим омертвевшим ссылкам, то выделяются надписи в форме, например, на странице «Авторизация» — Вход, Имя пользователя, пароль. Никак не могу понять, как они взаимосвязаны )))) Даже пытался ссылку на стили Бутстрапа убрать из head и запихнуть прямо в контент, уж он-то вроде в шаблоне отдельно от сайдбара. Но ничего не изменилось.
Оставил в bootstrap.css только те стили, что есть на страницах и в тикетах, картина та же. Если же в head убрать ссылку на стили Бутстрапа, все приходит в норму, только сама форма по умолчанию тикетовская выглядит уж больно убого.
Если вам это не подходит, то можно создать свои CSS стили, которые будут вписываться в ваш дизайн.
Такая проблема образовалась: после авторизации происходит редирект вот такой-profile?off_req=fullname
Я так понял что нужно заполнить поле fullname, но
1.отображается белый экран
2.в регистрации и профиле нет fullname
Подскажите как быть!
1) redirectToPrior (после успешного входа перенаправляет пользователя на предыдущую страницу).
2) redirectToOnFailedAuth (перенаправляет пользователя при неудачной авторизации на указанную страницу).
Поле fullname не является обязательным, вместо него можно, например, использовать username. Поле fullname находится в Profile, который связан с User отношением 1:1.
Если не указывать redirectToPrior или установить ему значение 0, то у вас страница с авторизацией должна просто перезагружаться и вместо чанка myLoginChunk (&logoutTpl) показываться myLogoutChunk (&logoutTpl). Проверьте, откуда у вас появляется GET параметр в URL.
Кроме этого попробуйте очистить кэш сайта, кэш браузера и перезагрузить права доступа в менеджере MODX.
— Подскажите, а как сделать ссылку на выход отдельно, например в на главной странице сайта?
где 10 — id ресурса «Авторизация»
где он должен быть и что есть за ресурс с номером 4?
4
redirectTo — после успешного подтверждения регистрации
errorPage — при возниковении ошибки
Это может быть любой ресурс, например, страница авторизации.
Чуть поправил чанк 'myLogoutChunk' и всё заработало: Где [[~29]] — ссылка на страницу авторизации.
Чанк exit:
Вызов сниппета в необходимом месте:
tplType — Тип шаблона для loginTpl и logoutTpl. Значение: modChunk.
modChunk — его надо где то прописать или создать, не могу понять?
Еще вопрос. Захожу на страницу с авторизацией, ввожу email и пароль и получаю сообщение
Ваша учётная запись была заблокирована…
Подскажите, пожалуйста где может быть ошибка?
Если значение шаблона хранится в файле или непосредственного в параметре tpl, то тогда это необходимо сказать сниппету посредством этого параметра.
Параметр activationttl в порядке.
public function setCachePassword($password) {
$this->modx->getService('registry', 'registry.modRegistry');
$this->modx->registry->addRegister('login','registry.modFileRegister');
$this->modx->registry->login->connect();
$this->modx->registry->login->subscribe('/useractivation/');
$this->modx->registry->login->send('/useractivation/',array($this->user->get('username') => $password),array(
'ttl' => ($this->controller->getProperty('activationttl',180)*60),
));
Сейчас создал еще одну регистрацию для проверки.ConfirmRegister перенаправляет пользователя на личный кабинет, но активации нет.
Наделал снимков с экрана. Посмотрите что не правильно делаю?
itchief.ru/assets/uploadify/0/e/2/0e268f334cc62e6f315f7fa15cf52554.jpg
itchief.ru/assets/uploadify/f/7/d/f7dd8c0e12c2e0256e9f2c47dfc2eda3.jpg
itchief.ru/assets/uploadify/4/4/0/4409dd0c42d873c6d7019c035c5e959b.jpg
itchief.ru/assets/uploadify/c/7/d/c7d7700dab30aec3cabcf32cf990b597.jpg
itchief.ru/assets/uploadify/5/9/5/595ecc05fb42acccd087ec33e4094acb.jpg
itchief.ru/assets/uploadify/a/0/2/a0208869b5a5c124aeb040dd3fc31a8d.jpg
itchief.ru/assets/uploadify/7/5/6/756290b2de055ce6e34ba1d6c7463dd0.jpg
itchief.ru/assets/uploadify/0/d/5/0d51b3eb633839039e034b8c8a0508aa.jpg
itchief.ru/assets/uploadify/7/a/0/7a0134741b47323b3654ef77719014ec.jpg
itchief.ru/assets/uploadify/0/6/0/0600e187715f5d237c69316c8b0e9fa0.jpg
itchief.ru/assets/uploadify/5/a/6/5a6da6d5e0aee41255d994332bf7889b.jpg
itchief.ru/assets/uploadify/b/7/e/b7ec50fa6ad97d321d9804ef3d4a08c7.jpg
itchief.ru/assets/uploadify/9/7/a/97a6383f94f4f0456eada95b963c1934.jpg
itchief.ru/assets/uploadify/4/d/1/4d10c8824143e97a88ae4866ad567796.jpg
itchief.ru/assets/uploadify/0/8/0/08089d2332fc7fd5f9a350f00efc5863.jpg
itchief.ru/assets/uploadify/b/f/8/bf8253ee8a2e0ce11a36bd399c453a2e.jpg
itchief.ru/assets/uploadify/7/b/8/7b885453b6a4a685c6e2a329f56ea2f7.jpg
itchief.ru/assets/uploadify/1/e/c/1ece2a0981299898026c4549ff7bed1d.jpg
itchief.ru/assets/uploadify/1/b/9/1b9e89b106e397de2256442cc91b897c.jpg
itchief.ru/assets/uploadify/1/0/6/106e6d53b37387c7db69e7550dffe8bc.jpg
itchief.ru/assets/uploadify/0/7/6/0768dfcb6b8478b235859452439f62ff.jpg
itchief.ru/assets/uploadify/e/b/2/eb2eda422d71ee1a0d81062d7bdcae0a.jpg
itchief.ru/assets/uploadify/8/3/c/83c875d32e8670d97fc85f674bd4194e.jpg
itchief.ru/assets/uploadify/f/8/3/f835522928d0b5c6eda42766b04591b4.jpg
itchief.ru/assets/uploadify/b/2/4/b24db5db917473a605781ea5afaf4438.jpg
itchief.ru/assets/uploadify/3/c/d/3cdfa56bf99ef9f9c4ac76715c37f082.jpg
itchief.ru/assets/uploadify/7/6/f/76f254b1397628487c7667e19140c30c.jpg
Нашел ошибки в файле
\core\cache\logs\install.config.2016-07-13T17.48.38.log
Вот ошибка
[2016-07-13 17:48:45] (ERROR @ D:\op_server\OpenServer\domains\localhost\modxreg1\core\xpdo\transport\xpdoobjectvehicle.class.php: 227) Could not copy D:/op_server/OpenServer/domains/localhost/modxreg1/core/packages/core/modContext/f3b540208ce8847165ed470f565aa8e5/0/ to D:/op_server/OpenServer/domains/localhost/modxreg1/index.php
[2016-07-13 17:48:45] (ERROR @ D:\op_server\OpenServer\domains\localhost\modxreg1\core\xpdo\transport\xpdoobjectvehicle.class.php: 227) Could not copy
У меня три modx установлено и у всех эта ошибка
Завтра поищу другую версию modx.Может в ней дело
ошибка пропала.Тогда почему она не активируется? У меня дома Open Server.При регистрации
письмо отправляется.Захожу в папку Temp и прохожу по ссылке в письме.Ссылка ведет в подтверждение регистрации.Но активации не происходит
[[+errors]]
[[+actionMsg]]
[[+confirmUrl]]
[[+username]]
[[+loginUrl]]
[[+request_uri]]
[[+error.email]]
На официальном сайте в руководстве по Login, вроде бы нет упоминаний, во всяком случае, я найти не могу.
Информация не всегда представлена в документации. В большинстве случаев, кроме чтения документации, необходимо ещё смотреть php-код сниппетов, а также чанки, которые устанавливаются вместе со сниппетом. В большинстве случаев этой информации хватает для того, чтобы понять какие есть плейсхолдеры.