Какое есть решение показа просмотренных товаров для modx evolution?

Для реализации функциональности показа просмотренных товаров на сайте, созданном на MODX Evolution, можно использовать следующее решение.

Шаг 1: Создание таблицы в базе данных
Создайте новую таблицу в базе данных сайта, где будут храниться данные о просмотренных товарах. Для этого можно воспользоваться инструментом phpMyAdmin или любым другим средством управления базой данных.

Пример таблицы:
CREATE TABLE modx_viewed_products (
id int(11) NOT NULL AUTO_INCREMENT,
product_id int(11) NOT NULL,
user_id int(11) NOT NULL,
date_viewed datetime NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

В данной таблице будут храниться следующие данные:
- id: уникальный идентификатор записи
- product_id: идентификатор просмотренного товара
- user_id: идентификатор пользователя, который просмотрел товар
- date_viewed: дата и время просмотра товара

Шаг 2: Регистрация просмотра товара
Для регистрации просмотра товара необходимо создать сниппет (snippet) в MODX Evolution.

Пример сниппета:
<?php
if ($modx->isSessionStarted() && isset($_GET['id'])) {
$product_id = intval($_GET['id']);
$user_id = $modx->getLoginUserID();

if ($product_id > 0 && $user_id > 0) {
$date_viewed = strftime('%Y-%m-%d %H:%M:%S', time());

$modx->db->insert(
array(
'product_id' => $product_id,
'user_id' => $user_id,
'date_viewed' => $date_viewed
),
$modx->getFullTableName('viewed_products')
);
}
}
?>

Данный сниппет проверяет, запущена ли сессия пользователя и передан ли параметр 'id' в запросе URL. Затем извлекает идентификатор товара и идентификатор пользователя (если пользователь авторизован), и регистрирует просмотр товара в базе данных. Для получения идентификатора пользователя используется метод $modx->getLoginUserID().

Шаг 3: Вывод просмотренных товаров
Для вывода просмотренных товаров на сайте, можно создать отдельную страницу или чанк (chunk). На этой странице или в чанке необходимо воспользоваться сниппетом для получения данных из базы данных и вывода на страницу.

Пример сниппета для вывода просмотренных товаров:
<?php
$user_id = $modx->getLoginUserID();
if ($user_id > 0) {
$sql = 'SELECT * FROM ' . $modx->getFullTableName('viewed_products') .
' WHERE user_id = ' . $user_id .
' ORDER BY date_viewed DESC LIMIT 10';

$result = $modx->db->query($sql);
while ($row = $modx->db->getRow($result)) {
// Вывод информации о просмотренном товаре
echo 'Товар: ' . $row['product_id'] . '<br>';
echo 'Дата просмотра: ' . $row['date_viewed'] . '<br><br>';
}
}
?>

Данный сниппет получает идентификатор пользователя и выполняет SQL-запрос к таблице 'modx_viewed_products', выбирая все записи, отсортированные по дате просмотра в порядке убывания. Затем выводит информацию о просмотренных товарах.

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

Это лишь одно из решений возможной задачи показа просмотренных товаров для MODX Evolution. Вы можете изменять и дорабатывать код в соответствии со своими потребностями и особенностями сайта.