Отображение страницы пользователя

Василий, с Новым годом тебя. Это начало :)

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

— Страницы пользователей с нормальными урл (желательно сделать формирование пути из %id, %username и т.д. по всем полям);
— Возможность добавлять поля в профиль пользователя (любой тип поля и желательно добавлять через графический интерфейс, а не json-строкой);
— Возможность указывать шаблон для оформления страницы пользователя.
— Добавить «из коробки» дату регистрации и дату последней активности;
— Сортировка и фильтрация пользователей по алфавиту на странице-списке;
— Возможность сделать станицу пользователя общедоступной для просмотра;

Дополнения и пожелания:

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

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

Заранее благодарен.
Wassi Wassinen
04 января 2015, 14:12
modx.pro
5
4 821
+5

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

Wassi Wassinen
05 января 2015, 18:01
0
Василий?
    Василий Наумкин
    05 января 2015, 19:19
    0
    Ты мне вот про это сначала скажи, работает или как?

    А то напоминал, напоминал — я выбрал время, сделал — и нет ответа.
      Wassi Wassinen
      05 января 2015, 21:28
      0
      Прости, я в небольшом отпуске, сижу с телефона. Доберусь до ноутбука — сразу же отпишусь.
        Wassi Wassinen
        06 января 2015, 00:19
        0
        Написал.
        Василий Наумкин
        06 января 2015, 20:28
        0
        Я сейчас занимаюсь хостингом, потом пишу новое приложение для iOS.

        Делать новые дополнения для MODX, пока, не планирую.
          Wassi Wassinen
          07 января 2015, 00:03
          0
          Ты только для яблок пишешь? Под андроид не хотел бы попробовать? Есть идея, хотелось бы воплотить в жизнь, но сложно найти ответственного человека.
            Василий Наумкин
            07 января 2015, 06:24
            0
            Пишу только для iOS, Adnroid пока не интересен.
              Олег Сергеевич
              09 января 2015, 01:50
              0
              Зря. Аудитория Ведроида растет намного быстрее Яблофонов.
              И по себе скажу — 4 года сидел на Айфонах, пока не надоел, сейчас смартфон на голом Лолипоп. После него, когда беру в руки Айфон жены, iOS вызывает рвотный рефлекс…
                Василий Наумкин
                09 января 2015, 06:42
                +1
                Вот я лажанулся то… Ну буду знать теперь, спасибо!
                  Николай Загумённов
                  09 января 2015, 15:00
                  0
                  А мне кажется наоборот аудитория яблофонов растет. Сейчас куда не плюнь в айфон попадешь.
            Wassi Wassinen
            07 января 2015, 00:09
            0
            Делать новые дополнения для MODX, пока, не планирую.


            Если бы ты занялся этим в фоновом режиме, это сильно отвлекало бы тебя от основных проектов? Я готов подождать.
              Василий Наумкин
              07 января 2015, 06:26
              -3
              Делать новые дополнения для MODX, пока, не планирую вообще. Ни в фоновом, ни в основном режиме — надоело.
                Сергей Шлоков
                07 января 2015, 08:53
                +2
                Вот так новость :(
                  Василий Наумкин
                  07 января 2015, 09:49
                  0
                  Последнее новое дополнение я выпустил 2го июля 2014го, и то, только потому, что написал его для работы хостинга.

                  Так что это далеко не новость =)
                    Wassi Wassinen
                    10 января 2015, 02:20
                    0
                    Я посмотрел на страницу пользователей, которая сделана на modx.pro — если бы ты это просто оформил в готовый пакет, я бы уже был счастлив. :) И тебе сделал бы немного счастливее (в денежном эквиваленте) :)
          Wassi Wassinen
          09 января 2015, 18:21
          +1
          Что-то странное, неужели никому деньги не нужны? Отцы, кто модуль то писать будет? Хватит обсуждать андроиды и огрызки. :)))
            Володя
            09 января 2015, 18:32
            +2
            напишу, пиши подробнее хотелки…
              Wassi Wassinen
              10 января 2015, 01:59
              0
              Основное описал в теме. Может быть для начала поймем сколько это будет стоить?
                Wassi Wassinen
                10 января 2015, 02:15
                +2
                Интересно послушать твое мнение по поводу всяких карм и прочего. Создали тему modx.pro/crowdfunding/4567-karma/

                Мне интересно на нескольких проектах раздавать пользователям всякие «медальки» за те или иные действия. Этот функционал можно прилепить к странице пользователя и сделать его расширяемым (универсальным)? Например, указывать, что пользователь написавший больше всех комментариев, получает на странице плейсхолдер [[+gold]], а тот у кого самые высокие оценки за статьи — [[+silver]]? Или по количеству — перевалил за 100 статей, получил одну медаль, за 200 — вторую медаль и т.д. Что-то вроде этого.
              Максим Кузнецов
              10 января 2015, 09:34
              4
              +2
              С вашего позволения, приведу сюда пример реализации большинства пунктов (не отрицаю востребованнось решения данных задач сразу из коробки, т.к. работы для реализации этих пунктов нужно сделать прилично):

              Страницы пользователей с нормальными урл

              1. Создаем страницу «профиль пользователя» (не путаем с личным кабинетом), выставляем ему псевдоним, допустим users, к которой будут обращаться в виде site.ru/users?profile=имя

              2. Ставим дополнение pdoTools

              3. Создаем сниппет user.Profile и добавляем его в шаблон вывода
              <?php
              	$count = $modx->getCount('modUser', array('username' => $_GET[profile]));
              	if($count <= 0){
              		echo'	<h2>
              				<a>Ошибка</a>
              			</h2>
              			<div>
              				Пользователя не существует.
              			</div>';
              	}
              	else {
              		$params = array();
              		$params['users'] = $_GET[profile];
              		$params['showBlocked'] = '1';
              		$params['tpl'] = 'user.Profile';
              		$params['prepareSnippet'] = 'user.Profile.Prepare';
              		
              		$result = $modx->runSnippet('pdoUsers', $params);
              		
              		if (!empty($result)) {
              			return $result;
              		}
              		else {
              			return '<h2>
              					<a>Ошибка</a>
              				</h2>
              				<div>
              					Что-то сломалось.. Сейчас починим.
              				</div>';
              		}
              
              	}
              — насколько я помню, сразу вызвать pdoUsers с параметром конкретного пользователя нежелательно, т.к. если пользователя не существует, он выдает по-умолчанию весь список пользователей. Возможно, сейчас что-то поменялось или это можно обойти — не проверял.

              Для данного сниппета также можно дописывать условия, если пользователь не активирован и тд и тп. При помощи параметров tpl и prepareSnippet кастомизируем до нужного уровня.

              4. Дописываем в .htaccess
              RewriteRule ^users/([^/]+)$ /users?profile=$1 [L]
              — чтобы ссылка приняла вид site.ru/users/Имя_пользователя

              Возможность добавлять поля в профиль пользователя

              При регистрации: дополнение login
              Для редактирования пользователем (личный кабинет) — дополнение office

              Возможность указывать шаблон для оформления страницы пользователя

              1. Добавляем дополнительное поле в личный кабинет пользователя (шаблон отображения)
              2. В шаблоне отображения профиля пользователя дописываем классы, завязанные на полученном значении (class=«userInfo-[[+tpl.style]]»)
              2.А. Если необходимо менять структуру шаблона в зависимости от выбранного пользователя значением, то в сниппете в первой части дописываем до

              $params = array();
              получение extended-поля по id пользователя с вытекающими условиями if, внутри которых будет разный параметр $params['tpl']

              Добавить «из коробки» дату регистрации и дату последней активности

              Дату регистрации — сниппет логин и 1 доп. поле.
              С датой последней активности сложнее, т.к. в таблицах Modx'a, насколько я помню, есть только поле последней авторизации. Возможно, нужно завязывать на сессии +временной промежуток.

              Возможность сделать станицу пользователя общедоступной для просмотра

              Аналогично пункту 2.А. в разделе «шаблона отображения»
                Wassi Wassinen
                10 января 2015, 15:09
                0
                Максим, спасибо за комментарий. В целом, я согласен, что можно пойти таким путем. Но, опять же, нужно очень многое пилить для простой задачи — отобразить страницу пользователя. А если еще и немного ее изменить…
                  Максим Кузнецов
                  10 января 2015, 15:44
                  0
                  Я все это, помимо прочего, написал ради отображения одного фактора. Т.к. задача действительно фундаментальная, при этом, на мой взгляд, не требующая глубинных познаний в modx'e, вероятно, есть причина, почему схожий по функционалу пакет до сих пор не появился: труднореализуемость настройки для коробки.

                  На мой взгляд, для отображения страницы пользователя можно применить 2 принципиально разных решения:
                  — динамичное получение данных логина или id пользователя из адресной строки с последующем отображением
                  — фиксированное создание страницы пользователя в нужном разделе

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

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

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

                  Ну и последнее и, пожалуй, самое главное: для удобной работы с дополнительными полями пользователя (медальки, карма) «не программисту» потребуется или написать фронтэнд-модуль или существенно изменить способ взаимодействия с ними через бэкэнд.
                    Wassi Wassinen
                    10 января 2015, 15:55
                    1
                    0
                    Я немного поразмышлял на тему медалей и прочих званий. По сути, это просто реализовать с помощью стилей. В большинстве случаев, все эти приблуды отображаются на странице пользователя и даются за достижение каких-то показателей. Допустим, за каждые сто заметок. Пишем простой снипет, который делит количество статей этого пользователя на сто и в зависимости от результата отдает html сущности, которые отображаются на странице пользователя как медали, короны и что угодно.
                      Максим Кузнецов
                      10 января 2015, 15:58
                      0
                      Да, именно.) Исключение, разве что медали, которые выдаются персонально за личные заслуги и не подвергаются систематизации.
                        Wassi Wassinen
                        10 января 2015, 17:04
                        0
                        Тут да. Но я помню, что у пользователя есть изначально некое поле, к которое можно массив писать. Как вариант.
                          Wassi Wassinen
                          10 января 2015, 17:06
                          0
                          А урлы неужели никак, кроме .htaccess не выправить? Генерит же MODx системно красывые урл с вложенностью, с «заморозкой» пути и т.д.
                            Максим Кузнецов
                            10 января 2015, 17:42
                            0
                            По-настоящему «прямые» урлы генерируются только в случае, если добавлять в файловой структуре аналогичные элементы с желаемым названием, допустим, page23.html

                            У modx'a, если не ошибаюсь, для чпу в .htaccess прописано:
                            RewriteCond %{REQUEST_FILENAME} !-f
                            RewriteCond %{REQUEST_FILENAME} !-d
                            RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

                            + опять же, если пользоваться встроенными в modx настройками чпу и определением «страниц» для генерации страниц красивых ссылок для страниц пользователя, то необходимо «создавать» такие страницы в желаемом разделе при регистрации пользователя, а это вытекает в

                            Второй способ имеет плюс в том, что можно, теоретически, руками настроить совершенно любое отображение личной страницы для каждого пользователя персонально, но плодит кучу ненужных страниц и вообще несколько топорно.
                              Wassi Wassinen
                              10 января 2015, 17:55
                              0
                              Согласен. С другой стороны, если сделать наподобие тикетов или минишопа — страницы вложены в категорию, не загружают «дерево», есть поиск. Из очевидных плюсов — к странице можно прикрутить действительно всё, что угодно. Из минусов — даже не знаю. Допустим, несколько сотен тысяч ресурсов. Чем они будут отличаться от тех же записей пользователей с добавленными полями через тот же Office?
                                Wassi Wassinen
                                10 января 2015, 18:00
                                0
                                Для меня основной вопрос — можно ли расширить имеющуюся систему пользователей в MODx (добавлять поля, фильтровать по ним, создать для добавления полей отдельный интерфейс для бэкенда)? Если да, то вписать пару строк в .htaccess или конфиг nginx'a — это не проблема практически для любого вебмастера и даже простого пользователя.
                                  Wassi Wassinen
                                  10 января 2015, 18:01
                                  +1
                                  Ладно, по поводу nginx'a и простого пользователя — погорячился.
                                    Володя
                                    10 января 2015, 22:12
                                    +2
                                    — подумай по каким полям нужна будет сортировка.
                                    По алфавиту чего? Полного имени пользователя?
                                    — страница доступна для просмотра, вариант недоступна для просмотра тоже нужен?
                                    — сниппет для редактирования этого гибридного профиля соответственно тоже нужен, так ведь?
                                    — в админке все это редактировать тоже…

                                    — пакет в итоге будет бесплатным для всех или пойдет в платники?

                                    Завтра смогу начать работу… Жду уточнений.
                                      Alexander V
                                      11 января 2015, 01:13
                                      -2
                                      pdoUsers — Выборка и вывод пользователей сайта, с фильтрацией по ролям и группам.
                                        Wassi Wassinen
                                        11 января 2015, 06:08
                                        +1
                                        Володя, отвечаю по пунктам:

                                        — нужно указывать скрытые страницы по группам и методом перечисления id юзера. Лучше вынести в системную настройку;

                                        — редактирование обязательно нужно;

                                        — нужен функционал в админке для добавления полей в профиль. Один раз добавил поле «ТестовоеПоле» и оно доступно для заполнения, если включено в чанк;

                                        — обязательно красивые урлы. Ниже Василий дал ссылку на реализацию;

                                        — предлагаю сделать пакет доступным на гитхабе, на store.simpledream.ru и в основном репозитории MODx'a на бесплатной основе. Ты сделаешь единственный в своем роде пакет. Перерыл весь интернет, есть только обрывки и куски кода, позволяющие сделать что-то подобное. За это будет тебе почет и благодарности. :)
                                      Wassi Wassinen
                                      10 января 2015, 19:41
                                      0
                                      Нашел на modx.com — github.com/yoleg/UserUrls

                                      Генерит корректные ссылки с помощью плагина.
                                        Wassi Wassinen
                                        11 января 2015, 04:13
                                        0
                                        Спасибо, Василий!
                            Володя
                            11 января 2015, 09:53
                            0
                            Вырисовывается следующее:

                            — Страницы пользователей с нормальными урл. Возможность скрыть страницу от просмотра по группам и методом перечисления id юзера
                            — Добавить «из коробки» дату регистрации и дату последней активности. Возможность добавлять поля в профиль пользователя.
                            от себя добавлю что возможно стоит добавить поля ФИО и description, introtext аналог ресурса. По остальным полям предлагаю сделать настройку json строкой в ней указывать наименование и тип поля и на основе этого рисовать в админке, писать такие поля в extended.
                            — Возможность указывать шаблон для оформления страницы пользователя.
                            — Сортировка и фильтрация пользователей по алфавиту на странице-списке. Вывод пользователей pdoUsers или сниппет на его основе.
                            — сниппет редактирования расширенного профиля пользователя, включает редактирование существующих таблиц пользователя, наших добавленных и полей в extended
                            — сниппет для вывода расширенного профиля пользователя

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

                            сумма пускай будет 10 000 руб. Идет? Если ты даешь добро — я стартую.
                              Wassi Wassinen
                              11 января 2015, 10:39
                              0
                              Пока что, кроме меня, никто не захотел внести денег. Есть семь тысяч. Не обидит такая сумма?
                                Володя
                                11 января 2015, 10:50
                                0
                                нет конечно, какие обиды… Просто пока выкинем последний пункт.
                                скайп — vgrish_vgrish
                                Wassi Wassinen
                                11 января 2015, 10:49
                                0
                                У тебя есть скайп?
                                  Василий Столейков
                                  11 января 2015, 13:55
                                  +1
                                  Слежу за вашим диалогом с интересом, т.к. сам дааавно жду такой нужный инструмент!
                                  Готов пожертвовать на развитие некую сумму денег, пока ещё не доконца определился — чуть позже.

                                  Пару мыслей:
                                  — Нельзя добавить возможность добавления пользователей в друзья, с последующим выводом допустим ленты друзей?
                                  — Может быть подумать о нормальной переписке с теми же друзьями?

                                  Ради этого стоит пожертвовать деньги — очень нужный функционал!
                                    Максим Кузнецов
                                    11 января 2015, 13:59
                                    0
                                    Первое — думаю, с друзьями проблем не будет — просто 1 доп.поле, где в массиве будут перечисляться id пользователей с последующим выводом через pdoTools

                                    Второе — store.simpledream.ru/packages/users/socialtools.html не подойдет?
                                      Василий Столейков
                                      11 января 2015, 14:18
                                      0
                                      — По первому — нужно обязательно включить в компонент
                                      — По второму, да, есть ещё и modx.pro/solutions/4264-tickets-component-ticketmessages/, но непонятно как они будут вести себя с этим компонентом новым и будут ли работать с друзьями (это важно). По store.simpledream.ru/packages/users/socialtools.html — кажется была обещаня новая версия, которая несовместима будет со старой, или что-то вроде этого. Но опять же вопрос — как она будет себя вести с друзьями (переписка только с друзьями допустим)
                                      Володя
                                      11 января 2015, 23:44
                                      0
                                      «возможные» друзья идут явно вместе с «возможной» перепиской…
                                      Создавайте отдельный топик, расписывайте подробно как вы видите функционал, будет больше толку чем просто тут упомянуть…
                                        Wassi Wassinen
                                        12 января 2015, 08:40
                                        +1
                                        Володя, может френдлист включим в компонент сразу? Поле с идентификаторами через запятую и ссылки в чанке, которые позволяют «Убрать/Добавить» пользователей по id. А сообщения, к этому полю, можно всегда прикрутить — стороннее оно или нет. В него просто подставлять плейсхолдер с выводом id или прямо из сниппета обращаться к полю.
                                        Wassi Wassinen
                                        12 января 2015, 08:35
                                        0
                                        Определяйтесь скорее, иначе мне придется оплачивать в одиночку. :)
                                      Володя
                                      14 января 2015, 20:37
                                      0
                                      ребят, кому интересно прошу потестите немного userprofile.vgrish.ru/users/
                                      на главной зарегаться через твиттер, затем перейти в профиль и задать email.
                                      После подтверждения почты, пробовать менять профиль пользователя, заполнять поля.

                                      ps. Спасибо!
                                        Саша Друмс
                                        14 января 2015, 23:09
                                        +1
                                        Неверное перенаправление на странице
                                        prntscr.com/5shrl0
                                        И теперь даже на главную не заходит, пишет то же самое.
                                        После авторизации в твиттере, естественно.
                                          Володя
                                          14 января 2015, 23:25
                                          0
                                          спасибо, поправил… глюк почему то только в мозиле был…
                                          пробуйте еще)
                                            Саша Друмс
                                            14 января 2015, 23:32
                                            0
                                            В IE, кстати, тоже не работало.
                                            Сейчас вроде ок: Вы авторизованы как 2603415625 (Саша Друмс)!
                                            Письмо подтверждения пришло, все ок (правда, нашел в папке спам).
                                            Заполнил все поля ФИО и во вкладке сети, но на странице Список пользователей в моем профиле ничего не отображается.
                                              Володя
                                              14 января 2015, 23:33
                                              0
                                              в общем списке это ничего не выводил… на странице профиля вся инфа должна быть…
                                              Еще подшлифую местами.
                                                Саша Друмс
                                                14 января 2015, 23:43
                                                0
                                                Все появилось. Все ок.
                                                Для новых пользователей еще не настроены права для голосований за тикеты, комментарии, добавление в избранное и т.п. но это, я так понял, еще не шлифовалось :-)
                                                  Володя
                                                  14 января 2015, 23:44
                                                  0
                                                  нет конечно… спасибо за тест-драйв)
                                                    Саша Друмс
                                                    14 января 2015, 23:45
                                                    0
                                                    здесь скорее тебе спасибо за разработку :-)
                                            Володя
                                            14 января 2015, 23:31
                                            0
                                            внутри это выглядит вот так joxi.ru/n2YYxB6i0nML26
                                          Wassi Wassinen
                                          15 января 2015, 13:14
                                          +1
                                          Да, самое чудесное, что можно добавлять поля из админки для всех пользователей.
                                              Wassi Wassinen
                                              15 января 2015, 15:40
                                              0
                                              Нужен юзернейм уникальный или в чем вопрос?
                                                Alexander V
                                                15 января 2015, 21:28
                                                0
                                                Надо, чтобы пользователь нормально регистрировался. Хотя тут вопрос скорее не к странице пользователя. Login в конце концов есть.
                                                  Wassi Wassinen
                                                  15 января 2015, 22:47
                                                  0
                                                  Можно регистрироваться через HybridAuth скрыв социальные профили и оставить только по «юзер/пароль». Просто запретить редактировать username через профиль после создания пользователя.
                                                    Alexander V
                                                    15 января 2015, 23:05
                                                    +1
                                                    Ахтунг начинается, когда привязывается больше одной записи. Можно скрыть привязку дополнительных сетей, но и тут тоже проблема. В общем нужна не тихая регистрация, а явная. Если юзер заходит через сеть с нового акк., то надо ему явно сказать, что ты новый пользователь, выбери логин.
                                                    Посмотрите Eleanor-CMS (Logina), когда там реализовывали, много обсуждали и мне кажется получилось нормально. Про Office ничего сказать не могу, возможно он решает задачу. По мне, так это дорогое удовольствие за модуль авторизации. Если пользоваться только этой возможностью компонента.
                                                      Wassi Wassinen
                                                      15 января 2015, 23:48
                                                      +1
                                                      Выход сейчас один — разрешить регистрацию только через ник/пасс. И только из профиля зарегистрированного юзера давать привязывать соцсети для быстрого входа. Т.е., новая регистрация возможна только по юзернейму и паролю. После регистрации запрещаем менять юзернейм.

                                                      Вот и все.
                                                        Василий Наумкин
                                                        16 января 2015, 07:18
                                                        +2
                                                        Именно так и сделано в «дорогом удовольствии» — Office.

                                                        modx.pro/components/3283-office-1-1-0-improve-authorization/
                                                          Wassi Wassinen
                                                          16 января 2015, 10:21
                                                          0
                                                          Василий, а можно то же самое с Гибридом сделать?
                                                            Василий Наумкин
                                                            16 января 2015, 10:34
                                                            0
                                                            В HybridAuth нет авторизации по имени и паролю. Никогда не было и не будет.

                                                            Так что — только Office. Для авторизации, редактирования профиля и вообще, построения личного кабинета юзера любой функциональности.
                                                          Wassi Wassinen
                                                          16 января 2015, 10:22
                                                          0
                                                          Я могу Офис с гитхаба собрать, но он для другого сделан, и только для авторизации его всюду ставить не хочется.
                                              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                              68