Таблица history
Таблица history отслеживает, когда пользователь в последний раз просматривал конкретный узел (ноду) на сайте. Эта информация является ключевой для функционала "нового" и "обновленного" контента, позволяя пользователям видеть, что изменилось с их последнего визита.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
uid |
int |
Идентификатор пользователя (users.uid), который просматривал узел. Внешний ключ для таблицы users. Не может быть 0.
|
nid |
int |
Идентификатор узла (node.nid), который был просмотрен. Внешний ключ для таблицы node. Не может быть 0.
|
timestamp |
int |
Метка времени Unix, указывающая, когда пользователь в последний раз просматривал этот узел. Используется для сравнения с временем последнего изменения узла (node.changed).
|
Как это работает
Когда аутентифицированный пользователь заходит на страницу узла, система проверяет наличие записи в таблице history для этой пары uid-nid. Если запись существует, она обновляет поле timestamp текущим временем. Если записи нет - создается новая.
Модуль Node использует эти данные для отображения статуса "нового" или "обновленного" контента. При выводе списка узлов (например, на странице треккера или в представлениях) время последнего просмотра из history сравнивается со временем создания (node.created) и последнего изменения (node.changed) узла.
Узел считается "новым", если он был создан после момента последнего просмотра пользователем любой ноды (определяется по максимальному timestamp в history для этого пользователя). Узел считается "обновленным", если он был изменен после момента его последнего просмотра этим пользователем.
Важно отметить, что данная таблица работает только для аутентифицированных пользователей. Для анонимных пользователей отслеживание истории просмотров обычно реализуется через cookies или не ведется вовсе.
Пример SQL-запроса
Получить историю просмотров конкретного пользователя с информацией о узлах можно следующим запросом:
SELECT h.timestamp, n.nid, n.title, n.changed
FROM history h
INNER JOIN node n ON h.nid = n.nid
WHERE h.uid = 5
ORDER BY h.timestamp DESC;
Смотрите также
-
таблицу
node,
которая хранит основную информацию об узлах -
таблицу
users,
которая содержит данные о пользователях сайта -
таблицу
node_access,
которая управляет правами доступа к узлам -
таблицу
node_field_data,
которая содержит данные полей для узлов