Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Как добавить возможность скрывать просмотренные новости?

Как добавить возможность скрывать просмотренные новости?


     10.02.2019    Все вопросы » Общие вопросы    157

вопрос
Здравствуйте.
Возникла необходимость ввести на сайте клавишу, наподобии пикабу для того, чтобы сурывать просмотренные пользователем новости.
Организовал уже на сайте отметку о том, что новость просмотрена пользователем. Сохраняю id новости в localstorage, после чего навешваю плашку "Просмотрено" средствами JS.
Могу точно таким же методом скрыть новости, но это костыли, так как пользователь вместо 10 новостей на странице может увидеть 5, 2 или вообще ни одной.
Понимаю, нужно работать с БД и вести учёт просмотренных новостей для каждого пользователя, но пока я далёк от этого. Может есть готовый модуль?

Ответа пока нет


4 комментария

dj-avtosh
php-developer

dj-avtosh - 12 февраля 2019 03:04 -

Если неплохо обладаете js, то считайте количество новостей, которых видит ваш юзер (после скрытия фронтенд-скриптами), и по итогу, догружайте следующую страницу. Лучше пусть будет 13, чем 3.

А так можно и скрыть до 10ти так же на фронте, когда перебор.

telegram: @blob42
skype: elhan.isaev (seldom)

Nesterovich2797
Юзер

Nesterovich2797 - 12 февраля 2019 07:23 -

Спасибо за ответ!
Это на js реализовать не сложно. Проблема в том, что если пользователь просмотрел к примеру 55 последних новостей. 5 проверок на то, сколько новостей после скрытия осталось + 5 подгрузок новостей. Новости с картинками, я думаю, уйдёт секунд 7-8 на загрузку главной страницы.

По поврду вариантов ниже сессии сохранять для неавторизованных не обязательно. Пусть будет фишкой для зарегистрированных пользователей.

dj-avtosh
php-developer

dj-avtosh - 12 февраля 2019 11:53 -

попробуйте за основу взять стандартный модуль закладок.

telegram: @blob42
skype: elhan.isaev (seldom)

dj-avtosh
php-developer

dj-avtosh - 12 февраля 2019 03:13 -

Второй способ, который вы описываете по Базам Данных: тут нужна работа с сессиями.

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

Далее Вы в engine.php смело распоряжаетесь массивом этих id и делаете что-то вроде AND id NOT IN "переменная сессии".

-------------

Способ третий нужен для сайтов с внушительным количеством новостей.

Потребуется доп. таблица в базе данных для реализации связей many-to-many в которой уникальным ключем будет пара: id_news, id_user и вторая таблица для гостей с id_news, id_session.
Так же пишем, но уже в таблицу, и далее играем в engine.php, но уже с SQL JOIN.
Преимущество данного способа: для юзеров не будет привязки к сессии и выдержит большое кол-во id news.
Минус: много лишнего мусора соберет со временем таблица для гостей.

telegram: @blob42
skype: elhan.isaev (seldom)

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх