просмотренные товары из таблицы shopkeeper
Называется сниппет cookie
так как просмотренные товары пишет именно в куки.
<?php class p { /** * Индекс */ const COOKIE_KEY = 'p'; const GET_KEY = 'p'; /** * Время жизни куки */ const COOKIE_TIME = 8600; /** * Получить в виде строки */ const GET_STRING = 'get_string'; /** * Получить в виде массива */ const GET_ARRAY = 'get_array'; private $_data; function __construct() { $this->set(); $this->add(); } protected function set() { $this->_data = (isset($_COOKIE[self::COOKIE_KEY])) ? unserialize($_COOKIE[self::COOKIE_KEY]): array(); } public function get($ret=self::GET_STRING) { return ($ret==self::GET_STRING) ? implode(',', $this->_data) : $this->_data; } public function delete() { setcookie (self::COOKIE_KEY, "", time() - 3600,"", "." . $_SERVER['HTTP_HOST']); } public function add() { if(isset($_GET[self::GET_KEY]) && strlen(trim($_GET[self::GET_KEY])>0)) { if(array_search($_GET[self::GET_KEY], $this->_data)===false) { $this->_data[] = $_GET[self::GET_KEY]; setcookie (self::COOKIE_KEY, serialize($this->_data), time() + self::COOKIE_TIME,"","." . $_SERVER['HTTP_HOST']); } } } } $p = new p(); echo $p->get(); ?>
У меня идёт вложенный вызов просмотренных товаров в карточке товара, это значит, что изначально вывожу все товары
[!catalogView? &paginate=`1` &sortBy=`id` &sortDir=`asc` &tpl=`prof` &display=`[+phx:if=`[+phx:get=`all`+]`:ne=``:then=`all`:else=`15`+]` &descTpl=`tovar` &toPlaceholder=`catalogViewOutput` ¤tPageClass=`act` &lang=`prof` !]
а затем в чанке tovar
вывожу просмотренные
<h2>Недавно просмотренные товары:</h2> <div> [!catalogView? &tpl=`prof_recent_list` &display=`5` &sortDir=`desc` &descTpl=`tovar` &randomize=`1` &skipDesc=`1` &products=`[[cookie]]` !] </div>