K4:Счётчики
From In-Portal Developers Guide
| 
 | ||
|---|---|---|
| Статьи в этой категории | ||
K4 позволяет достаточно гибко задавать любые Count SQLs (они же счётчики) и в последствии их использовать где потребуется. Счётчики применяются в основном для подсчёта количества записей (в таблице) используя пользовательский (custom) sql запрос.
|   | Перед использованием счётчика требуется создать запись, описывающую счётчик в таблице Counters. | 
Использование
-  Переданные, при вызове счётчика, параметры можно получить в поле CountQuery написав их в следующем формате: <%PARAM_NAME%>, напр.
SELECT COUNT(*) FROM `<%PREFIX%>PortalUser` WHERE `Status`= 1
-  Названия таблиц (без префиксов в именах таблиц), изменения в которых ведут за собой сбрасывание конкретного счётчика нужно писать в поле TablesAffected в формате: |TableName1[|TableNameN]|(т.е. одна или более таблиц разделённых символом "|" и по одному символу "|" в начале и в конце строки. Обычно это список всех таблиц, которые упоминаются в поле CountQuery.
- Если при вызове в счётчик будут передаваться параметры, то будет создана копия записи счётчика только с 1 в поле IsClone. Это нужно для того, чтобы можно было независимо друг от друга хранить результаты подсчёта одно и того-же счётчика но вызванного с разным набором параметров. Например это удобно, когда требуется посчитать кол-во товаров в определённой подкатегории.
-  Если требуется сбросить результаты отдельного (или всех) счётчиков, то надо в поле CountValue записать NULL(не слово "NULL") и смело стереть все счётчики у которых значение поля IsClone равно 1.
В последствии можно вызвать счётчик из любого требуемого места в коде использую конструкцию:
$count_value = $this->Application->getCounter('<COUNTER_NAME>', Array(<COUNTER_PARAMS>));
Зачем использовать
Может возникнуть вопрос: "почему надо использовать этот механизм, а не писать самому вызов sql например в тэге (tag), который вызывается из блока (параметр render_as) для PrintList?". Ответ довольно прост: "механизм о котором идёт речь также автоматически записывает в cache результаты подсчётов и в последствии не повторяет тот-же самый запрос и тем самым уменьшает нагрузку производимую сайтом на сервер, а так-же через это уменьшает время требуемое для показывания сайта".


