Добавление счетчика посещений на страницы сайта — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «Для добавления подобного функционала, нужно прежде всего создать в типе данных страница е…»)
 
 
(не показано 8 промежуточных версий 3 участников)
Строка 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) следующий код:
                public function counter($current_page_id) {
+
              <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: Строка 11:
 
                         $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 шаблона. Макрос будет срабатывать при каждом открытии страницы, увеличивать значение поля «Количество просмотров» на единицу и выводить количество просмотров. /Если вывод значений поля не требуется, нужно немного изменить код макроса:
                public function counter($current_page_id) {
+
          <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);
Строка 19: Строка 21:
 
                         $element->setValue("counter",$temp_count);
 
                         $element->setValue("counter",$temp_count);
 
                         $element->commit();
 
                         $element->commit();
                        return «»;$element->getValue("counter");
+
                } </source>
                }
+
[[Категория:Написание кастомных макросов]]

Текущая версия на 08:11, 26 октября 2015


Для добавления подобного функционала, нужно прежде всего создать в типе данных страница ещё одно поле, которое будет содержать в себе значение количества посещений. Добавим на страницу новую группу (чтобы проще поле было искать) например статистика (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();
                }