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

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «'''Задача:''' вставить на страницу код счетчика. '''Решение:''' мы будем рассматривать, вставк…»)
 
Строка 44: Строка 44:
 
<source lang="java">
 
<source lang="java">
 
...
 
...
<xsl:value-of select="document('upage://414.metriki')/udata/property/value" disable-output-escaping="yes" />
+
<xsl:value-of select="document('upage://414.metrika')/udata/property/value" disable-output-escaping="yes" />
 
</body>
 
</body>
 
...
 
...

Версия 09:21, 27 августа 2012

Задача: вставить на страницу код счетчика.

Решение: мы будем рассматривать, вставку кода счетчика на примере вставки счетчика yandex-метрика.

Для реализации этой задачи, нам необходимо выполнить следующие действия:

1. В модуле "Шаблоны Данных" добавить дочерний тип для "Страниц контента";

2. В новом типе добавить поле "Метрика", тип "Простой текст";

3. Создать новую страницу в структуре "Настройки сайта" (снять галочку "Отображать в меню");

4. Изменить тип страницы на созданный в шаблонах данных (изменяется в "дополнительных настройках" страниц);

5. В поле "Метрика" вставить код нужного счетчика, например yandex-метрики и примерно код этого счетчика будет выглядеть так:

 <!-- Yandex.Metrika counter -->
<div style="display:none;"><script type="text/javascript">
(function(w, c) {
    (w[c] = w[c] || []).push(function() {
        try {
            w.yaCounter123456 = new Ya.Metrika({id:123456, enableAll: true});
        }
        catch(e) { }
    });
})(window, 'yandex_metrika_callbacks');
</script></div>
<script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript" defer="defer"></script>
<noscript><div><img src="//mc.yandex.ru/watch/123456" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->

так же можно вставить текст копирайта и сохраняем страницу;

6. Последний шаг будет различаться, в зависимости от того, какой шаблонизатор мы используем. Для tpl-шаблонизатора вывод содержания этого поля в шаблон дизайна будет производится с помощью макроса %data getProperty()%. Подробное описание этого макроса в документации разработчиков сайтов [[1]].

В xslt-шаблонизаторе, для того, чтобы получить свойство страницы необходимо использовать протокол upage. Если мы хотим увидеть конкретное свойство страницы, например "Метрики" - вводим в адресной строке браузера следующий запрос: httр://silaest.ru/upage/XX.YY , где XX - это ID страницы, свойство которой необходимо вывести, YY - идентификатор поля (XX и YY следует разделить точкой). То есть, если ID созданной страницы настроек 414 (httр://silaest.ru/admin/content/edit/414/), а идентификатор поля метрик в шаблонах данных "metrika", то запрос будет выглядеть следующим образом: httр://silaest.ru/upage/414.metrika

Если мы хотим установить счетчик для всех страниц потребуется отредактировать шаблон "~/xsltTpls/layouts/default.xsl" - вывести свойство страницы "Настройки сайта" до закрывающего тега <body>, то есть:

...
<xsl:value-of select="document('upage://414.metrika')/udata/property/value" disable-output-escaping="yes" />
</body>
...

Также, обращаем свое внимание, что поле "wysiwyg" (Визуальный редактор) не предназначен для вставки кода (например yandex-метрики). Для этих целей следует использовать тип поля "Простой текст", при создании нового поля в "Шаблонах данных" (шаг 2). В противном случае часть кода будет вырезана визуальным редактором и счетчик работать не будет.

Если нам требуется добавить код других счетчиков или вставить карту - создавать дочернюю страницу не требуется, достаточно просто добавить новые поля (для уже созданного типа "Настройки сайта") в шаблонах данных.