"Мои подписки" в фильтре (наборе) списка постов.

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X

Требуется разработать дополнение к блоку фильтров в ленте "Блоги" (списке постов): добавить к имеющимся фильтр (набор) "Мои подписки".

#1 10 февраля 2022 в 10:44

Краткое ТЗ:
Задача фильтра — выводить на странице только те посты, на которые подписан пользователь. Если подписан на блог, или несколько блогов — все посты блога (блогов), если не подписан на весь блог — только те посты, на которые подписан. Список «Подписки» должен подчиняться всем правилам приватности (т.е. если пользователь ранее был подписан на пост (блог), то после изменения приватности он не сможет его просматривать, если нет прав на просмотр поста (блога).

Изображение

Идеально будет, если в виджете «Список контента», который я использую для выведения списка постов на главной странице, можно было бы использовать такой фильтр. 
Конечная цель — дать пользователю возможность видеть на главной странице только тот контент (список постов), на которые он подписан. Поэтому, если найдется какое-то другое решение вопроса (программисту виднее), кроме дополнительного фильтра, будем работать с наилучшим.

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

Изображение
Сроки реализации открыты, бюджет обсуждаем, предложения прошу в личку.

#2 25 февраля 2022 в 18:02

upd. Задача актуальна.

#3 28 марта 2022 в 08:30

upd 2. Задача актуальна.

#4 26 апреля 2022 в 10:26

upd 3. Задача актуальна. Решение, предложенное ранее Lora, у меня, во всяком случае, не работает.

#5 26 апреля 2022 в 11:19

Решение, предложенное ранее Lora, у меня, во всяком случае, не работает.

Викторыч

Судя по коду того решения, у Lora своя «система подписок» и после установки того решения надо подписаться его «системой подписок». Вы это сделали?

#6 26 апреля 2022 в 11:27

Решение, предложенное ранее Lora, у меня, во всяком случае, не работает.

Викторыч

Судя по коду того решения, у Lora своя «система подписок» и после установки того решения надо подписаться его «системой подписок». Вы это сделали?

Loadырь

Делал все четко по инструкции, и даже более того (некоторые правки в коде, предложенные Lora, для исправления кучи появившихся нотисов), — на локальных сайтах 2.14.3 и 2.15.1. Но о какой-то «особой» системе подписок вот только от вас услышал… о ней речи не было.

#7 26 апреля 2022 в 14:47

Зайдите в какую-нибудь конкретную категорию и подпишитесь на неё. Появится в списке набора ее записи или нет?

#8 26 апреля 2022 в 22:40

Зайдите в какую-нибудь конкретную категорию и подпишитесь на неё. Появится в списке набора ее записи или нет?

Loadырь

Прошу прощения, не было возможности сразу ответить...

Категории я не использую. Возможно, имели в виду блоги? Это я уже делал, т.е. старые подписки (сделанные до установки дополнения) в виджете списка постов не появлялись — поэтому включал новые подписки уже после установки. Ровно то же самое: 

Изображение

При этом набор «Мои подписки» отображается в списке контента «Блоги», в настройках виджета набор тоже есть: 

Изображение

Не появляется ничего, кроме надписи «У вас нет подписок», в любых вариантах. Использовал локальную версию рабочего сайта под 2.15.1, шаблон Modern, настройки Open Server идентичны тем, что на рабочем сайте. Из сторонних допов — «Черный список» и «Опросы» (Val).

#9 26 апреля 2022 в 23:10

А у вас вообще подписки работают? Вот заходите вы на страницу /posts или groups/id/content/posts.  Жмёте кнопку Подписаться. Эта подписка появляется в профиле?

#10 26 апреля 2022 в 23:44

А у вас вообще подписки работают? Вот заходите вы на страницу /posts или groups/id/content/posts.  Жмёте кнопку Подписаться. Эта подписка появляется в профиле?

Lora

Система подписок работает, уведомления людям приходят, все хорошо. 

На странице «Блоги» (подписано 11 человек):

Изображение

В моем профиле три подписки на блоги пользователей:

Изображение

На странице поста пользователя в авторском виджете (на блог автора подписано 20 человек): 

Изображение

#11 27 апреля 2022 в 06:33

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

Что сейчас у вас записано в cms_subitems? Скиньте скрин нескольких строк, если нет там конфиденциальной инфы. 

И эта логика в принципе не верная. А верная логика состоит в том, что получить список того, на что подписан пользователь — возможно, но вот для этого

Список «Подписки» должен подчиняться всем правилам приватности (т.е. если пользователь ранее был подписан на пост (блог), то после изменения приватности он не сможет его просматривать, если нет прав на просмотр поста (блога).

Викторыч

вам надо иметь свой ЦОД. Пользователь может подписаться одной галочкой на все блоги и в список попадут все новые и старые записи. И затем вам надо каждую запись проверять на доступность их для конкретного пользователя (а ведь пользователей не один, а три и более). Когда постов в блогах 10 — 1000 шт., это не проблема, но когда их 10 — 1000 тыс. шт., то сервачёк поднапряжется на таких операциях.

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

#12 27 апреля 2022 в 08:01

И эта логика в принципе не верная

Loadырь

По большому счёту, согласен. Но и задача так не стояла. Писалось для вновь созданных подписок. И максимально просто. Без напрягов.  Но ведь и это у ТС не работает. И главное вроде всё правильно делает. И тестит на новом сайте. И давал свой сайт под админом, что бы сравнить. Хз. что там.

#13 27 апреля 2022 в 10:36

Что сейчас у вас записано в cms_subitems? Скиньте скрин нескольких строк, если нет там конфиденциальной инфы.

Loadырь

Зашел под обычным пользователем. Подписок у него нет. cms_subitems выглядит так: 

Изображение

Создал подписку. Изменения в БД: 

Изображение

В итоге: 

Изображение

Добавлено спустя 7 минут

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

Loadырь

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

#14 27 апреля 2022 в 11:02

280, это id группы? То есть ссылка выглядит так… /groups/280

#15 27 апреля 2022 в 11:28

280, это id группы? То есть ссылка выглядит так… /groups/280

Lora

Нет, 280 это id пользователя, на блог которого я подписался. А subject_id — не знаю что такое...

Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.