Добавление счетчика посещений на страницы сайта — различия между версиями
Davidov (обсуждение | вклад) (Новая страница: «Для добавления подобного функционала, нужно прежде всего создать в типе данных страница е…») |
Davidov (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
Для добавления подобного функционала, нужно прежде всего создать в типе данных страница ещё одно поле, которое будет содержать в себе значение количества посещений. Добавим на страницу новую группу (чтобы проще поле было искать) например статистика (statistics), в эту группу добавим поле типа «Счётчик» и назовём его, к примеру, «количество посещений» (counter). | Для добавления подобного функционала, нужно прежде всего создать в типе данных страница ещё одно поле, которое будет содержать в себе значение количества посещений. Добавим на страницу новую группу (чтобы проще поле было искать) например статистика (statistics), в эту группу добавим поле типа «Счётчик» и назовём его, к примеру, «количество посещений» (counter). | ||
Теперь нам нужно написать кастомный макрос, который будет при выполнении увеличивать значение поля «Количество посещений». Идём в папку ~/classes/modules/ открываем файл custom.php и добавляем (после строки //TODO: Write your own macroses here) следующий код: | Теперь нам нужно написать кастомный макрос, который будет при выполнении увеличивать значение поля «Количество посещений». Идём в папку ~/classes/modules/ открываем файл custom.php и добавляем (после строки //TODO: Write your own macroses here) следующий код: | ||
− | + | <source lang="php"> public function counter($current_page_id) { | |
$hierarchy = umiHierarchy::getInstance(); | $hierarchy = umiHierarchy::getInstance(); | ||
$element=$hierarchy->getElement($current_page_id); | $element=$hierarchy->getElement($current_page_id); | ||
Строка 9: | Строка 9: | ||
$element->commit(); | $element->commit(); | ||
return $element->getValue("kolichestvo_prosmotrov"); | return $element->getValue("kolichestvo_prosmotrov"); | ||
− | } | + | } </source> |
После этого, в шаблоне, который будет выводить данную страницу размещаем макрос %custom counter(%pid%)% если это TPL шаблон либо <xsl:apply-templates select="document(concat('udata://custom/counter/',page/@id))" /> для XSLT шаблона. Макрос будет срабатывать при каждом открытии страницы, увеличивать значение поля «Количество просмотров» на единицу и выводить количество просмотров. /Если вывод значений поля не требуется, нужно немного изменить код макроса: | После этого, в шаблоне, который будет выводить данную страницу размещаем макрос %custom counter(%pid%)% если это TPL шаблон либо <xsl:apply-templates select="document(concat('udata://custom/counter/',page/@id))" /> для XSLT шаблона. Макрос будет срабатывать при каждом открытии страницы, увеличивать значение поля «Количество просмотров» на единицу и выводить количество просмотров. /Если вывод значений поля не требуется, нужно немного изменить код макроса: | ||
− | + | <source lang="php"> public function counter($current_page_id) { | |
$hierarchy = umiHierarchy::getInstance(); | $hierarchy = umiHierarchy::getInstance(); | ||
$element=$hierarchy->getElement($current_page_id); | $element=$hierarchy->getElement($current_page_id); | ||
Строка 20: | Строка 20: | ||
$element->commit(); | $element->commit(); | ||
return «»;$element->getValue("counter"); | return «»;$element->getValue("counter"); | ||
− | } | + | } </source> |
Версия 09:22, 27 марта 2012
Для добавления подобного функционала, нужно прежде всего создать в типе данных страница ещё одно поле, которое будет содержать в себе значение количества посещений. Добавим на страницу новую группу (чтобы проще поле было искать) например статистика (statistics), в эту группу добавим поле типа «Счётчик» и назовём его, к примеру, «количество посещений» (counter). Теперь нам нужно написать кастомный макрос, который будет при выполнении увеличивать значение поля «Количество посещений». Идём в папку ~/classes/modules/ открываем файл custom.php и добавляем (после строки //TODO: Write your own macroses here) следующий код:
public function counter($current_page_id) {
$hierarchy = umiHierarchy::getInstance();
$element=$hierarchy->getElement($current_page_id);
$temp_count=$element->getValue("kolichestvo_prosmotrov");
++$temp_count;
$element->setValue("kolichestvo_prosmotrov",$temp_count);
$element->commit();
return $element->getValue("kolichestvo_prosmotrov");
}
После этого, в шаблоне, который будет выводить данную страницу размещаем макрос %custom counter(%pid%)% если это TPL шаблон либо <xsl:apply-templates select="document(concat('udata://custom/counter/',page/@id))" /> для XSLT шаблона. Макрос будет срабатывать при каждом открытии страницы, увеличивать значение поля «Количество просмотров» на единицу и выводить количество просмотров. /Если вывод значений поля не требуется, нужно немного изменить код макроса:
public function counter($current_page_id) {
$hierarchy = umiHierarchy::getInstance();
$element=$hierarchy->getElement($current_page_id);
$temp_count=$element->getValue("counter");
++$temp_count;
$element->setValue("counter",$temp_count);
$element->commit();
return «»;$element->getValue("counter");
}