getViewed

Здравствуйте.

Узнал что есть сниппет getViewed.

Сказано:
При обычном вызове он просто пишет id ресурсов в сессию.
При вызове с &action=`returnViewed` — запускает msGetResources и выводит товары с указанным лимитом (10, по умолчанию).

Изменил:
$tpls = 2; // 2 - ID шаблона товара
return $modx->runSnippet('getResources', $config); // заменил на getResources

getResources в системе установлен.
Сниппет вызываю некешируемым.
Ни чего не выводит.

Все ли я правильно сделал?
$id = $modx->resource->id;
$tpls = '2';
 
if (!isset($limit)) {$limit = 10;}
if (!isset($tpl)) {$tpl = 'tpl.msGoods.row';}
 
// Вносим ID просмотренных товаров
if (in_array($modx->resource->template, $tpls)) {
    if (!isset($_SESSION['viewed'])) {
        $_SESSION['viewed'] = array($id);
    }
    else {
        if (in_array($id, $_SESSION['viewed'])) {
            $key = array_search($id, $_SESSION['viewed']);
            unset($_SESSION['viewed'][$key]);
        }
 
        if (count($_SESSION['viewed']) > $limit) {
            array_shift($_SESSION['viewed']);
        }
        $_SESSION['viewed'][] = $id;
    }
}
 
// Если указано действие returnViewed - выводим просмотренные товары
if ($action == 'returnViewed') {
    $ids = array_reverse($_SESSION['viewed']);
    if (empty($ids)) {return;}
 
    $config = array(
         'resources' => '-'.$modx->resource->id.','.implode(',', $ids)
        ,'parents' => -1
        ,'tpl' => $tpl
        ,'limit' => $limit
        ,'includeTVs' => 1 
        ,'includeTVList' => 'all_needed_tvs'
    );
    $config = array_merge($config, $scriptProperties);
    
    return $modx->runSnippet('getResources', $config);
}
Виталий Князь
17 апреля 2013, 20:41
modx.pro
1 623
0

Комментарии: 1

Виталий Князь
18 апреля 2013, 01:46
0
Если заменить:
if (in_array($modx->resource->template, $tpls)) {
на
if ($modx->resource->template == $tpls)   {
и убрать условие:
if ($action == 'returnViewed')
то все работает, почему?
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1