Самые популярные товары (tpl) — различия между версиями
Stexe (обсуждение | вклад) (Новая страница: « category:Модуль Каталог category:Модуль Каталог В данной статье рассматривается создание с…») |
Stexe (обсуждение | вклад) |
||
Строка 54: | Строка 54: | ||
Вместо 'default' можно указать любой шаблон, для отображения результатов макрос '''%doSelection()%''' оперирует шаблонами, находящимися в каталоге /tpls/data/usel. | Вместо 'default' можно указать любой шаблон, для отображения результатов макрос '''%doSelection()%''' оперирует шаблонами, находящимися в каталоге /tpls/data/usel. | ||
По шаблону ''\templates\имя_шаблона\tpls\data\usel\default.tpl'' или ''/tpls/data/usel/default.tpl'' (в зависимости от формата хранения шаблона) будет выводиться результат usel выборки, то есть 5-ти самых популярных товаров. | По шаблону ''\templates\имя_шаблона\tpls\data\usel\default.tpl'' или ''/tpls/data/usel/default.tpl'' (в зависимости от формата хранения шаблона) будет выводиться результат usel выборки, то есть 5-ти самых популярных товаров. | ||
+ | |||
+ | Статья актуальна для версии 2.9.21905 | ||
[[Категория:Модуль Каталог]] | [[Категория:Модуль Каталог]] |
Версия 08:09, 5 июня 2013
В данной статье рассматривается создание счетчика посещений товара и вывод 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-ти самых популярных товаров.
Статья актуальна для версии 2.9.21905