Пошаговые инструкции

Фильтрация пользователей с помощью mFilter2

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

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

Я решил заморочиться и сделал решение без дублирования информации, на основе таблицы пользователей.
Николай Савин
03 апреля 2016, 08:04
modx.pro
17
4 876
+4

Как я расширил стандартную таблицу пользователей

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

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

Вот что я сделал:
Николай Савин
30 марта 2016, 14:48
modx.pro
25
5 320
+6

Двухуровневая авторизация в менеджере

Привет, друзья!

После прочтения этого и этого
Хочу поделиться двухуровневой авторизацией в менеджере с помощью Basic Authentication.
Мой вариант отличается от пользователя «Борода», тем что «Пользователь» и «Пароль» (в md5()) хранятся в БД.

Если интересно читаем далее…
t3mnikov
21 марта 2016, 11:34
modx.pro
6
5 753
+7

Настройка nginx+php-fpm с помощью Ansible. Видео

Способ настройки, чем-то напоминает Правильный хостинг для MODX Revolution 2. Однако используется другой набор софта и сценарии выполняются с помощью Ansible.
Alexander V
21 марта 2016, 09:20
modx.pro
8
6 967
+5

Закрываем служебные директории MODX в Apache

В одной статье, касающейся безопасности, Василий дал очень хорошую рекомендацию по защите служебных папок. Реализовав это на своём хостинге, решил написать инструкцию, так как начинающие изучать MODX могут столкнуться с ошибкой 404, как Я например.
Борода
01 марта 2016, 10:41
modx.pro
32
6 920
+5

Вывести только тикеты с рейтингом больше нуля

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

Первый вариант (относительно сложный в реализации, но выигрывает по скорости при большой выборке ресурсов):

  1. Заходите в phpmyadmin.
  2. Выбираете таблицу modx_site_content
  3. — Переходите в закладку «структура»
  4. — Внизу открывшегося окна нажимаете ОК (Добавить 1 поле в конец таблицы)
    Имя: ticket_rating
    Тип: int
    Длина/значение: 10
    По умолчанию: Как определено (0)
    Null: галочка
  5. Сохраняем
Таким способом мы расширили дефолтную таблицу MODX'a со списком ресурсов.
Wassi Wassinen
26 февраля 2016, 03:31
modx.pro
10
3 812
+2

Правильные username при регистрации пользователя

1 500
Всем привет. Часто встречается ситуация, когда на сайте при регистрации через Office пользователи указывают username вида "--- --", «валя краля», "___ __", «yesy@yesy.ru» и т.д. Хотелось бы, чтобы при регистрации использовали только английские буквы, тире, нижнее подчеркивание и цифры.

Приступим:

1. Создаем плагин с следующим содержанием:

<?php
if ($modx->event->name == 'OnBeforeUserFormSave') {
    if (!preg_match("/^[a-zA-Z0-9-_]+$/", $user->username)) $modx->event->output('Имя пользователя должно содержать английские буквы, символы "-", "_" и цифры');
}
Wassi Wassinen
22 февраля 2016, 19:20
modx.pro
9
3 025
+1

Рейтинг пользователя - общий, тикеты и комментарии

1 500
Выводим рейтинг пользователя как на modx.pro joxi.ru/eAOYVYPI476nQm

Т.е., выводим рейтинг общий, рейтинг за тикеты (Tickets) и рейтинг за комментарии.

1. Создаем сниппет getAuthorRating:

<?php
$userId = intval($userId);
if ($author = $modx->getObject('TicketAuthor',$userId)) $modx->setPlaceholders($author->toArray());
return;
2. Там где нужно вывести рейтинг:

[[!getAuthorRating? &userId=`[[+ID_пользователя]]`]]

<p>Рейтинг [[+rating]]</p>
<p>Рейтинг тикетов + [[+votes_tickets_up]] / - [[+votes_tickets_down]]</p>
<p>Рейтинг комментариев + [[+votes_comments_up]] / - [[+votes_comments_down]]</p>
Wassi Wassinen
18 февраля 2016, 14:49
modx.pro
20
3 997
+7

Закалка MODX Revolution (перевод)

Своего писать я пока сомневаюсь, уровень не тот, а вот перевести полезную статью с официальной документации — это с удовольствием. Перевод местами может показаться несколько вольным, что касается формулировок, — иначе переводить скучно. Но в том, что касается технических деталей, старался быть дотошно точным. Так что, если найдёте технические неточности — ругайтесь в комментах. А на филологию прошу не жаловаться:) И тем более на идеологические расхождения с Вашим мировоззрением — тут все вопросы к авторам доков. Паранойи и почвы для громких споров среди «экспертов по безопасности» в статье предостаточно. Помни, о читатель, всё это касается в первую очередь важных и заметных проектов.
Добро пожаловать под кат.
mngatoff
15 февраля 2016, 02:03
modx.pro
61
22 368
+13

Страница пользователя как на modx.pro

1 1 000
Реализация страницы пользователя как на mоdx.pro (https://modx.pro/users/bezumkin/). Не используются дополнения virtualPage и userProfile\userProfile2 из-за их глючности и конфликтов с другими дополнениями. Все протестировано на рабочем проекте.
Wassi Wassinen
14 февраля 2016, 17:03
modx.pro
37
7 651
0