Логика сайта

RapCore
На сайте с 16.02.2013
Offline
25
2743

Помогите создать логику для сайта(то есть как он должен функционировать).

Сайт с картинками,видео(аля пикабу).

Сейчас он работает так: люди постят картинки, они сразу попадают в раздел "Свежее", под постами есть кнопка "Нравится", если пост набирает 5 "Нравится" то он попадает на главную, но на главной посты сортируются по дате создания и проблема в том что если старый пост из "Свежее" набирает 5 лайков и попадает на главную то он находится ниже остальных(так как дата создания у него раньше).

как бы лучше организовать главную страницу? что лучше выводить сразу(лучшее за сегодня,оставить как есть....)

Landing Page по 4499р (/ru/forum/910651)
eis
На сайте с 18.10.2008
Offline
473
eis
#1

RapCore, просто в специальный блок выводить популярные материалы

- Здесь я покупаю вечные ссылки на свои сайты! (https://backlinkator.com) - сотни ссылок за копейки
Станислав
На сайте с 27.12.2009
Offline
237
#2

Сделать в таблице еще одно поле int и при достижении 5 лайков в поле прибавлять +1 и соответственно сортировку делать по данному полю. Тогда свежие записи (которые попали на главную сегодня) будут выводится в самом начале.

Могу разжевать поподробнее, если нужно.

Мы там, где рады нас видеть.
RapCore
На сайте с 16.02.2013
Offline
25
#3

Ms-Dred, а вот это интересно. расскажите пожалуйста

DiAksID
На сайте с 02.08.2008
Offline
218
#4

по большому счёту это частный случай стандартной проблемы "арифметических рейтингов". типа пост/картинка с 3 плюсами и без минусов (т.е. и замечена то всего 3 юзверями) будет тупо выше чем с 100 плюсами и 98 минусами.

гуглите организацию систем рейтинга, просто доп полем норм сортировку по "лайкам" не выстроить.

show must go on !!!...
RapCore
На сайте с 16.02.2013
Offline
25
#5

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

Станислав
На сайте с 27.12.2009
Offline
237
#6

У вас же есть обработчик который плюсует рейтинг и записывает данный в базу данных.

Сделайте в нем два простых запроса

1. Проверка последнего порядкового номера

2. Запись нового порядкового номера

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

Можно без проблемно обойтись js и взять со страницы значение нынешнего рейтинга.

Получится что если рейтинг равен 4, и при клике по лайку +1, можно запустить еще один скрипт, который в свою очередь добавит порядковый новый номер в поле, при это нужно будет так же подключится к базе и взять от туда последнее значение int поля, прибавить +1 и записать в новое поле принадлежащие новости.

Нагрузки от этого никакой, и к тому же все это будет выполняться только тогда когда к рейтингу суммой 4 будет прибавляться лайк.

Думаю это оптимальная логика работы скрипта для выполнения вашей задачи. Хотя может у кого и по лучше будут предложения.

RapCore
На сайте с 16.02.2013
Offline
25
#7

я в принципе так и подумал уже, только решил сделать немного по другому.

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

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

может Ваш пример и лучше, ноя просто не очень владею sql , а свой метод знаю как реализовать

Станислав
На сайте с 27.12.2009
Offline
237
#8

Этот будет лучше, так как основан вобщем то на стандартном решении wp.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий