getViewed
Здравствуйте.
Узнал что есть сниппет getViewed.
Сказано:
Изменил:
getResources в системе установлен.
Сниппет вызываю некешируемым.
Ни чего не выводит.
Все ли я правильно сделал?
Узнал что есть сниппет 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);
}
Комментарии: 1
Если заменить:
if (in_array($modx->resource->template, $tpls)) {
наif ($modx->resource->template == $tpls) {
и убрать условие:if ($action == 'returnViewed')
то все работает, почему?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.