Просмотренные товары
Материал из Umicms
Версия от 12:07, 27 октября 2012; XiBOR (обсуждение | вклад) (Новая страница: «На сайтах многих интернет магазинов присутствует возможность просмотреть товары, которы…»)
На сайтах многих интернет магазинов присутствует возможность просмотреть товары, которые вы уже просматривали ранее, но по той или иной причине прошли мимо. Для того, чтобы вывести эту информацию, можно написать один небольшой кастом:
public function vGoods($template = "default", $id) {
$block_arr = array();
list ($sTemplate, $block_arr) = def_module::loadTemplates('/catalog/'.$template, 'pagesId');
if(isset($_SESSION['goods'])) {
$vGoods = explode('|',$_SESSION['goods']);
if(!in_array($id, $vGoods)) $_SESSION['goods'] .= "|$id";
}
else
$_SESSION['goods'] = $id;
$vGoods = explode('|',$_SESSION['goods']);
foreach($vGoods as $val){
if(is_numeric($val) and $val > 0) {
$line_arr['node:text'] = $val;
$lines[] = $line_arr;
}
}
$block_arr['subnodes:lines']=$lines;
return def_module::parseTemplate($sTemplate, $block_arr);
}
Данный метод принимает вторым параметром ID объекта или страницы. Как вам будет удобнее.
Всё что осталось, это написать вывод. На XSLT вывод можно организовать следующим образом:
1. На странице объекта каталога, мы вызываем макрос, чтобы он записал ID, и вернул id всех посещенных объектов.
2. Делаем вывод информации о посещенных объектах.
Берем шаблон объекта каталога, в нашем случае это \xsltTpls\modules\catalog\object-view.xsl
В нужном месте вызываем наш макрос
Вы просматривали ранее:<br />
<xsl:apply-templates select="document(concat('udata://custom/vGoods//', page/@id))/udata/lines" mode="visit" />
И добавляем шаблон для вывода информации:
<xsl:template match="item" mode="visit">
<a href="/~/{.}"><xsl:value-of select="document(concat('upage://', .))/udata/page/name" /></a>
</xsl:template>