Самые популярные товары (tpl) — различия между версиями
Stexe (обсуждение | вклад) |
Mad grant (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
− | [[category:Модуль Каталог]] | + | [[category:Модуль Каталог]][[Категория:Верстка в TPL]][[Категория:Написание кастомных макросов]] |
− | + | ||
− | + | '''Актуально для версии 2.9''' | |
+ | |||
В данной статье рассматривается создание счетчика посещений товара и вывод 5-ти самых популярных товаров. | В данной статье рассматривается создание счетчика посещений товара и вывод 5-ти самых популярных товаров. | ||
Версия 08:42, 5 июня 2013
Актуально для версии 2.9
В данной статье рассматривается создание счетчика посещений товара и вывод 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-ти самых популярных товаров.