Просмотренные ресурсы на MODX

Для реализации истории просмотренных страниц пользователя на CMF MODX, создадим простой сниппет, который будет это делать.

Для начала нам потребуется создать новый сниппет в MODX и назвать его ViewedPages:

$id = $modx->resource->id;
$template = $modx->resource->template;

if (isset($_SESSION['viewed'])) {

    if (!in_array($id, $_SESSION['viewed'])) {

        if (count($_SESSION['viewed']) > 10) {
            $_SESSION['viewed'] = array();
        }

        if ($template ==2) {
            $_SESSION['viewed'][] = $id;
        }

    }

    if (!isset($_SESSION['viewed'])) {
        return;
    }

    $ids = array_reverse($_SESSION['viewed']);

    if (!empty($ids)) {

        $res = implode(",", $ids);

        $snippet = 'pdoResources';

        $config = array(
            'resources' => $res,
            'parents' => $parents,
            'limit' => $limit,
            'tpl' => $tpl
        );

        return $modx->runSnippet($snippet, $config);

    }

} else {

    $_SESSION['viewed'] = array();

    if ($template ==2) {
        $_SESSION['viewed'][] = $id;
    }

}

Вызвать данный сниппет на любой странице или в шаблоне(Вызывать его нужно без кеширования):

[[!ViewedPages? &limit=`10` &show=`0` &snippet=`pdoResources` &parents=`0` &tpl=`tpl.LastView.Item`]]