Самые популярные товары (tpl)

Материал из Umicms
Перейти к:навигация, поиск

Статья актуальна для версии 2.9.21905
В данной статье рассматривается создание счетчика посещений товара и вывод 5-ти самых популярных товаров.

Для начала в модуле "Шаблоны данных" для типа данных "Объект каталога" создадим группу полей "Статистика" и поле "Количество посещений". Идентификатор данного поля нужно назвать "visits_count" без кавычек, также должна быть указана опция "Видимое".

Далее, добавляем в файл classes\modules\catalog\__custom.php код кастомного макроса, который будет при каждом посещении товара увеличивать значение поля "Количество посещений" на единицу:

public function counter($page_id) {
            $hierarchy = umiHierarchy::getInstance();
            $element = $hierarchy->getElement($page_id);
            $temp = $element->getValue("visits_count"); // Идентификатор поля из шаблона данных
            ++$temp;
            $element->setValue("visits_count", $temp); // Идентификатор поля из шаблона данных
            $element->commit();
            return $page_id;

Файл \classes\modules\catalog\permissions.custom.php должен быть следующего содержания:

<?php
	$permissions = array(
		'tree' => array(),
		'view' => array('counter')
	);
?>

Вызов данного макроса нужно добавить в шаблон по выводу карточки товара. В демонстрационном шаблоне demoold файл \templates\demoold\tpls\catalog\default.tpl блок $FORMS['view_block'] = <<<END. Вызов макроса выглядит следующим образом:

%catalog counter(%pid%)%


Для вывода 5-ти самых популярных товаров воспользуемся usel выборкой (выбираем все объекты каталога, сортируем их по убыванию значения поля "Количество посещений" и берем первые 5 из них).Назовем файл top_visits.xml и добавим в него следующее содержание:

<?xml version="1.0" encoding="utf-8"?>
<selection>
	<target result="pages">
	    <type module="catalog" method="object" />
	</target>
	
	<sort order="descending">visits_count</sort>
	
	<limit page="0">5</limit>
</selection>

Вызов получения результатов выборки:

%data doSelection('default','top_visits')%

Вместо 'default' можно указать любой шаблон, для отображения результатов макрос %doSelection()% оперирует шаблонами, находящимися в каталоге /tpls/data/usel. По шаблону \templates\имя_шаблона\tpls\data\usel\default.tpl или /tpls/data/usel/default.tpl (в зависимости от формата хранения шаблона) будет выводиться результат usel выборки, то есть 5-ти самых популярных товаров.