Cachepwd modx что это
Ваш доступ к системе управления заблокирован администратором
Пытаетесь войти в админку MODX и получаете данное сообщение? Рассказываю как снять блокировку. Кстати этим же способом можно восстановить забытый пароль от админки.
Как разблокировать пользователя MODX Revolution
Простое решение
Если не получилось
Примечание: Префикс таблиц modx_ в базе данных может быть другим. Указывайте свой.
В случае неудачи, возможно дополнительно нужно изменить пароль.
Как сменить пароль пользователя MODX Revolution
Откройте базу данных сайта через phpMyAdmin, консоль или другой привычный вам инструмент управления базами данных.
Найдите таблицу modx_users и измените для нужного пользователя значения полей:
То же самое можно выполнить через запрос к базе данных:
Примечание: Префикс таблиц modx_ (для поля modx_users) в базе данных может быть другим. Указывайте свой.
Примечание: Если меняете учетную запись, отличную от администратора, нужно изменить id в начале и конце запроса на id пользователя, которого меняете. Значение поля sudo 1 означает, что пользователь является администратором, для обычных пользователей нужно указывать 0.
Вернитесь на страницу входа в админку MODX, обновите ее, после чего авторизуйтесь под своим логином и паролем password321.
Когда войдете в админку установите свой пароль Профиль — Изменить пароль.
На этом всё. Но вы можете поддержать проект. Даже небольшая сумма поможет нам писать больше полезных статей.
Если статья помогла или понравилась, пожалуйста поделитесь ей в соцсетях.
MODX → modUser
Объёкты modUser представлены в базе данных в виде таблицы modx_users
Родительским классом объектов является modPrincipal
Доступные для получения, записи и изменения поля объекта:
Связи объектов
Объект имеет зависимости. modUser связан со следующими объектами:
— modResource (псевдоним CreatedResources). Связь объектов записывается в поля id и createdby.
— modResource (псевдоним EditedResources). Связь объектов записывается в поля id и editedby.
— modResource (псевдоним DeletedResources). Связь объектов записывается в поля id и deletedby.
— modResource (псевдоним PublishedResources). Связь объектов записывается в поля id и publishedby.
— modUserMessage (псевдоним SentMessages). Связь объектов записывается в поля id и sender.
— modUserMessage (псевдоним ReceivedMessages). Связь объектов записывается в поля id и recipient.
— modUserGroup (псевдоним PrimaryGroup). Связь объектов записывается в поля primary_group и id.
При удалении объекта так же будут удалены следующие, связанные с ним сущности:
— modUserProfile (псевдоним Profile). Взаимосвязь определяется полями id и internalKey.
— modUserSetting (псевдоним UserSettings). Взаимосвязь определяется полями id и user.
— modUserGroupMember (псевдоним UserGroupMembers). Взаимосвязь определяется полями id и member.
— modActiveUser (псевдоним ActiveUsers). Взаимосвязь определяется полями id и internalKey.
Фильтры ввода и вывода
Фильтры ввода и вывода в MODx.
Оглавление
Фильтры ввода и вывода в MODx позволяют манипулировать тем, как будут обрабатываться те или иные теги. Они позволяют вам изменять значения прямо внутри ваших шаблонов.
Фильтры ввода
В настоящее время фильтры ввода используются при подготовке к обработке фильтров вывода. Обычно они используются только внутри движка MODx.
Фильтры вывода
В MODx фильтр вывода применяет один или несколько выходных модификаторов. Все они встроены в ядро. Синтаксис выглядит так:
Фильтры могут применяться последовательно. Для этого напишите их подряд (слева направо):
Также фильтры могут применяться для модификации вывода сниппетов. Фильтр нужно прописывать перед всеми параметрами (перед знаком вопроса):
Модификаторы вывода
В таблице представлены некоторые модификаторы и примеры их использования. В примерах модификаторы применяются к плейсхолдерам, но вы должны помнить, что они могут применяться к любым тегам MODx. Убедитесь, что используемый тег выводит хоть что-то, что модификатор будет обрабатывать.
Условные модификаторы вывода
Модификатор | Описание | Пример использования |
if, input | Передаёт произвольный текст на ввод, для следующего модификатора. | [[*id:input=`[[+placeholder]]`:is=`1`:then=`Да`:else=`Нет`]] |
or | Объединение нескольких модификаторов связью ИЛИ. | [[+numbooks:is=`5`:or:is=`6`:then=`Здесь 5 или 6 книг`:else=`Не уверен, сколько книг`]] |
and | Объединение нескольких модификаторов связью И. | [[+numbooks:gt=`5`:and:lt=`10`:then=`Здесь от 5 до 10 книг`:else=`Книг или меньше 5, или больше 10`]] |
isequalto, isequal, equalto, equals, is, eq | Сравнивает передаваемое значение с установленным. Если значения совпадают, выводится значение «then», если нет — «else». | [[+numbooks:isequalto=`5`:then=`Здесь 5 книг`:else=`Не уверен, сколько книг`]] |
notequalto, notequals, isnt, isnot, neq, ne | Сравнивает передаваемое значение с установленным. Если значения НЕ совпадают, выводится значение «then», если нет — «else». | [[+numbooks:notequalto=`5`:then=`Не уверен, сколько книг`:else=`Здесь 5 книг`]] |
greaterthanorequalto, equalorgreaterthen, ge, eg, isgte, gte | То же, только условие «Больше или равно». | [[+numbooks:gte=`5`:then=`Здесь 5 книг или больше`:else=`Здесь меньше пяти книг`]] |
isgreaterthan, greaterthan, isgt, gt | То же, только условие «Строго больше». | [[+numbooks:gt=`5`:then=`Здесь больше пяти книг`:else=`Здесь 5 книг или меньше`]] |
equaltoorlessthan, lessthanorequalto, el, le, islte, lte | То же, только условие «Меньше или равно». | [[+numbooks:lte=`5`:then=`Здесь 5 книг или меньше`:else=`Здесь больше пяти книг`]] |
islowerthan, islessthan, lowerthan, lessthan, islt, lt | То же, только условие «Строго меньше». | [[+numbooks:lte=`5`:then=`Здесь меньше пяти книг`:else=`Здесь 5 книг или больше`]] |
hide | Скрывает элемент, если условие выполняется. | [[+numbooks:lt=`1`:hide]] |
show | Отображает элемент, если условие выполняется. | [[+numbooks:gt=`0`:show]] |
then | Используется для составления условий. | [[+numbooks:gt=`0`:then=`Книги в наличии!`]] |
else | Используется для составления условий (совместно с «then»). | [[+numbooks:gt=`0`:then=`Книги в наличии!`:else=`Простите, но все продано.`]] |
memberof, ismember, mo | Проверяет, является ли пользователь членом указанной группы пользователей. | [[!+modx.user.id:memberof=`Administrator`]] |
#
Модификаторы для работы со строками
Модификаторы для работы с пользователями нужно вызывать некэшированными, чтобы каждый юзер видел актуальные данные.
Использование модификаторов вывода совместно с параметрами
Если у тега есть параметры, то их необходимо прописывать сразу после модификатора:
Создание пользовательского модификатора
Такой вызов тега передаст в сниппет makeExciting следующие параметры для обработки:
Параметр | Значение | Значение в примере | Комментарий |
input | Значение элемента | $input = `[[*pagetitle]]`; | Значение элемента, к которому применяется модификатор. |
options | Значение модификатора | $options = 4; | Дополнительные параметры (после знака = ) |
token | Тип элемента | $token = *; | Символ, определяющий тип тега. |
name | Имя элемента | $name = `pagetitle`; | Имя плейсхолдера, к которому применяется модификатор. |
tag | Весь тег полностью | $tag = `[[*pagetitle:makeExciting=`4`]]`; | Весь тег, полностью. |
Приведем пример кода нашего сниппета makeExciting:
Тег выводит всё, что возвращает сниппет. В нашем случае он вернет значение тега [[*pagetitle]] с четырьмя восклицательными знаками.
Если сниппет вернет пустую строку, то на страницу будет выведено изначальное значение тега.
Цепочки фильтров (Множественные модификаторы)
Хорошим примером цепочки фильтров будет форматирование даты, например, так:
Модификатор UserInfo
Прямой доступ к данным из таблицы modx_user_attributes в базе данных, с помощью модификаторов вывода вместо сниппетов, может быть достигнуто просто за счет использования модификатора UserInfo. Выберите нужный столбец из таблицы и укажите его в качестве свойства модификатора, например, так:
Поле профиля | Пример |
Внутренний ключ профиля | [[!+modx.user.id:userinfo=`internalKey`]] |
Логин | [[!+modx.user.id:userinfo=`username`]] |
Полное имя | [[!+modx.user.id:userinfo=`fullname`]] |
Роль | [[!+modx.user.id:userinfo=`role`]] |
[[!+modx.user.id:userinfo=`email`]] | |
Телефон | [[!+modx.user.id:userinfo=`phone`]] |
Мобильный телефон | [[!+modx.user.id:userinfo=`mobilephone`]] |
Факс | [[!+modx.user.id:userinfo=`fax`]] |
Дата рождения | [[!+modx.user.id:userinfo=`dob`:date=`%Y-%m-%d`]] |
Пол | [[!+modx.user.id:userinfo=`gender`]] |
Страна | [[!+modx.user.id:userinfo=`country`]] |
Область / Штат | [[!+modx.user.id:userinfo=`state`]] |
Почтовый индекс | [[!+modx.user.id:userinfo=`zip`]] |
Фото | [[!+modx.user.id:userinfo=`photo`]] |
Комментарий | [[!+modx.user.id:userinfo=`comment`]] |
Пароль | [[!+modx.user.id:userinfo=`password`]] |
Временный пароль | [[!+modx.user.id:userinfo=`cachepwd`]] |
Последняя авторизация | [[!+modx.user.id:userinfo=`lastlogin`:date=`%Y-%m-%d`]] |
Дата текущей авторизации | [[!+modx.user.id:userinfo=`thislogin`:date=`%Y-%m-%d`]] |
Количество авторизаций | [[!+modx.user.id:userinfo=`logincount`]] |
[[!+modx.user.id]] возвращает id вошедшего в систему пользователя. Конечно, вы можете заменить, его на [[*createdby]] или другое поле ресурса или даже на плейсхолдер, который возвращает числовое представление id пользователя.
Обратите внимание, что профиль текущего пользователя уже доступен в MODx по умолчанию, так что вам не нужно использовать модификатор UserInfo для него:
Фильтр userinfo нужно вызывать некэшированным, иначе пользователи будут видеть чужие закэшированные данные.
Различные условия
Набор различных условий, которые часто используются при создании условий:
Проверка авторизации
Если id пользователя больше 0, значит пользователь авторизован, если равен 0, то это гость:
Благодарность автору
Если по какой-либо причине вы хотите поблагодарить автора данного ресурса, вы можете это сделать одним из удобных для вас способов ниже.
Один из самых популярных способов поблагодарить автора, воспользоваться сервисом Яндекс.Деньги.
Модификаторы MODX и фильтры phx
Сегодня полезная статья про фильтры phx и их модификаторы MODX Revo (другими словами различными условиями) при помощи которых вы сможете прямо внутри шаблонов, манипулировать значением различных тегов.
Фильтры ввода
В настоящее время фильтры ввода используются при подготовке к обработке фильтров вывода. Обычно они используются только внутри движка MODX.
Фильтры вывода
В MODX Revo фильтры вывода встроены прямо в движок и ведут себя так же, как и PHx в Evolution. Синтаксис выглядит так:
Фильтры могут применяться последовательно. Для этого напишите их подряд (слева направо):
Также фильтры могут применяться для модификации вывода сниппетов. Фильтр нужно прописывать перед всеми параметрами (перед знаком вопроса):
Модификаторы вывода
В примерах ниже модификаторы применяются к плейсхолдерам, но они могут применяться к любым MODX тегам. Убедитесь, что используемый тег выводит хоть что-то, что модификатор будет обрабатывать.
Условные модификаторы вывода
Модификатор | Описание | Пример использования |
---|---|---|
if, input | Передаёт произвольный текст на ввод, для следующего модификатора | [[*id:input=`[[+placeholder]]`:is=`1`:then=`Да`:else=`Нет`]] |
or | Объединение нескольких модификаторов связью ИЛИ | [[+numbooks:is=`7`:or:is=`8`:then=`Здесь 7 или 8 книг`:else=`Не уверен, сколько книг`]] |
and | Объединение нескольких модификаторов связью И | [[+numbooks:gt=`7`:and:lt=`10`:then=`Здесь от 7 до 10 книг`:else=`Книг или меньше 7, или больше 10`]] |
isequalto, isequal, equalto, equals, is, eq | Сравнивает передаваемое значение с установленным. Если значения совпадают, выводится значение «then», если нет — «else» | [[+numbooks:isequalto=`7`:then=`Здесь 7 книг`:else=`Не уверен, сколько книг`]] |
notequalto, notequals, isnt, isnot, neq, ne | Сравнивает передаваемое значение с установленным. Если значения НЕ совпадают, выводится значение «then», если нет — «else» | [[+numbooks:notequalto=`7`:then=`Не уверен, сколько книг`:else=`Здесь 7 книг`]] |
greaterthanorequalto, equalorgreaterthen, ge, eg, isgte, gte | То же, только условие «Больше или равно» | [[+numbooks:gte=`7`:then=`Здесь 7 книг или больше`:else=`Здесь меньше семи книг`]] |
isgreaterthan, greaterthan, isgt, gt | То же, только условие «Строго больше» | [[+numbooks:gt=`7`:then=`Здесь больше семи книг`:else=`Здесь 7 книг или меньше`]] |
equaltoorlessthan, lessthanorequalto, el, le, islte, lte | То же, только условие «Меньше или равно» | [[+numbooks:lte=`7`:then=`Здесь 7 книг или меньше`:else=`Здесь больше семи книг`]] |
islowerthan, islessthan, lowerthan, lessthan, islt, lt | То же, только условие «Строго меньше» | [[+numbooks:lte=`7`:then=`Здесь меньше семи книг`:else=`Здесь 7 книг или больше`]] |
hide | Скрывает элемент, если условие выполняется | [[+numbooks:lt=`1`:hide]] |
show | Отображает элемент, если условие выполняется | [[+numbooks:gt=`0`:show]] |
then | Используется для составления условий | [[+numbooks:gt=`0`:then=`Книги в наличии!`]] |
else | Используется для составления условий (совместно с «then») | [[+numbooks:gt=`0`:then=`Книги в наличии!`:else=`Простите, но все продано.`]] |
memberof, ismember, mo | Проверяет, является ли пользователь членом указанной группы пользователей | [[!+modx.user.id:memberof=`Administrator`]] |
Зачем они нужны и как ими пользоваться?
phx модификаторы облегчают жизнь modx разработчикам. Допустим у нас есть сайт с каруселью изображений (ну или с баннером), который нужно выводить только на главной странице. Для этого достаточно поместить его в отдельный чанк и затем вывести в шаблоне при помощи такой конструкции
Вместо *id, можно использовать и другие поля, например *template — выведет текущий используемый шаблон. Либо можно проверять заполнено или нет TV-поле (пусть будет *keywords) и если оно заполнено, то выводить его. Разберем данный случай поподробнее. Дано стандартная разметка:
Задача: не выводить эту строку, если TV keywords не заполнено, т.е. делаем проверку tv на пустоту и если оно не пустое, то выводим его.
Решение.
Нагрузки
Нужно следить за обработкой модификаторов, бездумное их использование вызовет лишние нагрузки. Вернемся к карусели, данная запись считывается слева направо и МОДХ выполняет все вложенные условия, в независимости от того, верное условие или нет, будет ли выводится на текущей странице содержимое [[$carusel]], в любом случае его содержимое обработается. В связи с этим более целесообразно переписать запись:
А вообще идеальный вывод будет выглядеть так.
Примечание! Вы можете комбинировать сколько угодно модификаторов под логику работы компонентов сайта, но главное помните, их основная суть — облегчить разработку, а не усложнять без того сложные задачи. Обычно, самый эффективный и действенный способ — это самый простой, так как чем проще и понятней конструкция — тем легче с ней будет работать в дальнейшем. Ниже перечислены основные модификаторы, которые можете использовать для любого тега МОДХ Рево.
Модификаторы для работы со строками
Модификаторы для работы с пользователями нужно вызывать некэшированными, чтобы каждый юзер видел актуальные данные.
Использование модификаторов вывода совместно с параметрами
Если у тега есть параметры, то их необходимо прописывать сразу после модификатора:
Создание пользовательского модификатора
Такой вызов тега передаст в сниппет makeExciting следующие параметры для обработки:
Параметр | Значение | Значение в примере | Комментарий |
---|---|---|---|
input | Значение элемента | $input = `[[*pagetitle]]`; | Значение элемента, к которому применяется модификатор. |
options | Значение модификатора | $options = 4 ; | Дополнительные параметры (после знака = ) |
token | Тип элемента | $token = * ; | Cимвол, определяющий тип тега. |
name | Имя элемента | $name = `pagetitle`; | Имя плейсхолдера, к которому применяется модификатор. |
tag | Весь тег полностью | $tag = `[[*pagetitle:makeExciting=`4`]]`; | Весь тег, полностью. |
Приведем пример кода нашего сниппета makeExciting:
Тег выводит всё, что возвращает сниппет. В нашем случае он вернет значение тега [[*pagetitle]] с четырьмя восклицательными знаками.
Если сниппет вернет пустую строку, то на страницу будет выведено изначальное значение тега.
Цепочки фильтров (Множественные модификаторы)
Хорошим примером цепочки фильтров будет форматирование даты, например, так:
Модификатор UserInfo
Прямой доступ к данным из таблицы modx_user_attributes в базе данных, с помощью модификаторов вывода вместо сниппетов, может быть достигнуто просто за счет использования модификатора UserInfo. Выберите нужный столбец из таблицы и укажите его в качестве свойства модификатора, например, так:
Поле профиля | Пример |
---|---|
Внутренний ключ профиля | [[!+modx.user.id:userinfo=`internalKey`]] |
Логин | [[!+modx.user.id:userinfo=`username`]] |
Полное имя | [[!+modx.user.id:userinfo=`fullname`]] |
Роль | [[!+modx.user.id:userinfo=`role`]] |
[[!+modx.user.id:userinfo=`email`]] | |
Телефон | [[!+modx.user.id:userinfo=`phone`]] |
Мобильный телефон | [[!+modx.user.id:userinfo=`mobilephone`]] |
Факс | [[!+modx.user.id:userinfo=`fax`]] |
Дата рождения | [[!+modx.user.id:userinfo=`dob`:date=`%Y-%m-%d`]] |
Пол | [[!+modx.user.id:userinfo=`gender`]] |
Страна | [[!+modx.user.id:userinfo=`country`]] |
Область | [[!+modx.user.id:userinfo=`state`]] |
Почтовый индекс | [[!+modx.user.id:userinfo=`zip`]] |
Фото | [[!+modx.user.id:userinfo=`photo`]] |
Комментарий | [[!+modx.user.id:userinfo=`comment`]] |
Пароль | [[!+modx.user.id:userinfo=`password`]] |
Временный пароль | [[!+modx.user.id:userinfo=`cachepwd`]] |
Последняя авторизация | [[!+modx.user.id:userinfo=`lastlogin`:date=`%Y-%m-%d`]] |
Дата текущей авторизации | [[!+modx.user.id:userinfo=`thislogin`:date=`%Y-%m-%d`]] |
Количество авторизаций | [[!+modx.user.id:userinfo=`logincount`]] |
[[!+modx.user.id]] возвращает id вошедшего в систему пользователя. Конечно, вы можете заменить, его на [[*createdby]] или другое поле ресурса или даже на плейсхолдер, который возвращает числовое представление id пользователя.
Обратите внимание, что профиль текущего пользователя уже доступен в MODX по умолчанию, так что вам не нужно использовать модификатор UserInfo для него:
Особое внимание обращаем на восклицательный знак [[!+modx.user.id]]. Он позволяет НЕ кэшировать содержимое вывода. Почему нужно не кешировать? Представим это так: на сайте 5 пользователей. Первый пользователь зашел на страницу с вызовом:
По задумке на этой странице, выводится приветственное сообщение пользователю. Так вот, если результат будет кешироваться, то при первом входе на эту страницу — сохранится имя пользователя который только что зашел — и всем остальным будет показываться не их имя, а имя того пользователя который вошел на эту страницу первым. Чтобы этого избежать — просто не кэшируем этот тэг, с помощью восклицательного знака перед вызовом [[!+modx…
Самые ходовые (популярные) фильтры и модификаторы MODX
условия if else
Чтобы составить условие на существование в БД параметра modx и при условие, что оно не пустое, то пишем следующий скрипт.
Проверка на значение: Если id равен 7, то выводим значение, иначе выполняем другое действие.
Проверка на пустоту (empty)
К примеру у нас есть TV (дополнительное поле) «keywords» и соотвественно мета тег к нему и мы не хотим выводить его в код если поле пустое, тогда вывод будет следующим.
Обрезка текста (ellipsis)
Например, нам нужно вывести небольшой кусок текста (30 слов) пускай из поля content (содержимое — где редактор текста) и поставить в конце 3 точки.