Темонезависимая установка счётчиков

Автор BIOHAZARD, 05 декабря 2009, 09:48:12

« предыдущая - следующая »

0 Пользователей и 1 гость просматривают эту тему.

BIOHAZARD

05 декабря 2009, 09:48:12 Последнее редактирование: 05 декабря 2009, 15:26:59 от BIOHAZARD
Сразу определимся - таким образом поставить можно не все счётчики, а только JavaScript счётчики, не отображающиеся на странице

Примеры таких сервисов:
google https://www.google.com/analytics/home/?hl=ru
Яндекс http://metrika.yandex.ru/
Статун http://www.statun.com/ (испытал на своём форуме - оказался непригоден)

возможно есть ещё какие то аналогичные "скромные" счётчики, но и эти два дают вполне исчерпывающую информацию о посещаемости Ваших сайтов


берём файл Sources/Load.php
ищем
Код

// Load a theme, by ID.
function loadTheme($ID_THEME = 0, $initialize = true)
{
   global $ID_MEMBER, $user_info, $board_info, $sc;
   global $db_prefix, $txt, $boardurl, $scripturl, $mbname, $modSettings;
   global $context, $settings, $options;


заменяем на
Код

// Load a theme, by ID.
function loadTheme($ID_THEME = 0, $initialize = true)
{
   global $ID_MEMBER, $user_info, $board_info, $sc;
   global $db_prefix, $txt, $boardurl, $scripturl, $mbname, $modSettings;
   global $context, $settings, $options;

$context['html_headers'] .= 'код вашего невидимого счётчика';




Пример вставки счётчика Яндекс.Метрики:
В сервисе Яндекс.Метрики получаем код счётчика такого вида
Код
<!-- Yandex.Metrika -->
<script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript"></script>
<script type="text/javascript">
try { var yaCounterХХХХХХ = new Ya.Metrika(ХХХХХХ); } catch(e){}
</script>
<noscript><div style="position: absolute;"><img src="//mc.yandex.ru/watch/195024" alt="" /></div></noscript>
<!-- /Yandex.Metrika -->

где ХХХХХХ Ваш персональный идентификатор (шесть цифр)

Удаляем из него всё, кроме JavaScript контейнеров, получаем
Код
<script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript"></script>
<script type="text/javascript">
try { var yaCounterХХХХХХ = new Ya.Metrika(ХХХХХХ); } catch(e){}
</script>


Вставляем это в файл Load.php, как показано выше
Код

// Load a theme, by ID.
function loadTheme($ID_THEME = 0, $initialize = true)
{
   global $ID_MEMBER, $user_info, $board_info, $sc;
   global $db_prefix, $txt, $boardurl, $scripturl, $mbname, $modSettings;
   global $context, $settings, $options;

$context['html_headers'] .= '
<script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript"></script>
<script type="text/javascript">
try { var yaCounterХХХХХХ = new Ya.Metrika(ХХХХХХ); } catch(e){}
</script>';


Примечание 1: если в коде Вашего счётчика присутствуют одинарные кавычки ', то при вставке в код их необходимо обязательно экранировать - заменять на \'

Примечание 2: данный код приведён для SMF 1.1.x, для SMF 2.0 всё точно так же, но надо искать фрагмент
Код
// Load a theme, by ID.
function loadTheme($id_theme = 0, $initialize = true)
{
   global $user_info, $user_settings, $board_info, $sc;
   global $txt, $boardurl, $scripturl, $mbname, $modSettings, $language;
   global $context, $settings, $options, $sourcedir, $ssi_theme, $smcFunc;
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Mavn

Кстати не знаю но может имеет смысл вставлять в Subs.php
function template_footer()
пробовал ?
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

BIOHAZARD

Да, действительно можно вставлять в файле Sources/Subs.php
Найти
Код

function template_footer()
{
   global $context, $settings, $modSettings, $time_start, $db_count;


заменить на
Код

function template_footer()
{
   global $context, $settings, $modSettings, $time_start, $db_count;

   echo 'код счётчиков';

При этом счётчики выведутся ПЕРЕД футером (подвалом).

У этого способа есть несомненный плюс - можно вставлять любые счётчики, в том числе видимые.
Но есть минус - может не увязаться с дизайном.

Да и вообще принято ставить счётчики не перед футером, а прямо в нём, а здесь это не получится. Ну или придётся вручную переделывать все темы, а мы ставим обратную задачу - отредактировать всего один файл и забыть о счётчиках.

PS: не забывайте, что и здесь необходимо в коде счётчиков заменять все ' на \'
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Mavn

слушай а ты не пробовал поставить счетчик не в начале функции а в конце перед
Код: (php)
}
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

BIOHAZARD

тогда будет после закрывающего тэга </html>
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Mavn

ага :) точно однако смотри есть чуток выше такая замечательная штука как
function theme_copyright
в конце перед }  добавить
echo '</br>test';
и тогда инфа будет выдаваться аккурат после копирайта :). но в пределах блока вывода копирайта
Код

<li class="copyright"></br>test</li>
      
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

BIOHAZARD

честно говоря не хотел показывать народу туда дорогу, а то начнутся ковыряния в копирайте, а потом весь форум будет в вопросах "почему у меня постоянно какая-то фигня вверху форума вылазит"

но всё же можно использовать копирайт для этой цели:
находим фрагмент
Код

   // Lewis Media no longer holds the copyright.
   $forum_copyright = str_replace(array('Lewis Media', 'href="http://www.lewismedia.com/"', '2001-'), array('Simple Machines LLC', 'href="http://www.simplemachines.org/about/copyright.php" title="Free Forum Software"', ''), $forum_copyright);

   echo '
      <span class="smalltext" style="display: inline; visibility: visible; font-family: Verdana, Arial, sans-serif;">';

заменяем на
Код

   // Lewis Media no longer holds the copyright.
   $forum_copyright = str_replace(array('Lewis Media', 'href="http://www.lewismedia.com/"', '2001-'), array('Simple Machines LLC', 'href="http://www.simplemachines.org/about/copyright.php" title="Free Forum Software"', ''), $forum_copyright);

   echo '
здесь код счётчиков, который выведется ПЕРЕД копирайтом
     <span class="smalltext" style="display: inline; visibility: visible; font-family: Verdana, Arial, sans-serif;">';


и/или находим
Код

   echo '
      </span>';
}

function template_footer()
{

заменяем на
Код

   echo '
      </span>
здесь код счётчиков, который будет выводиться ПОСЛЕ копирайтов';
}

function template_footer()
{


PS: помним про экранирование одинарных кавычек?
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

BoPoH

сделал для SMF2 RC1-2
Код
1240:	// Load a theme, by ID.
1241: function loadTheme($id_theme = 0, $initialize = true)
1242: {
1243: global $user_info, $user_settings, $board_info, $sc;
1244: global $txt, $boardurl, $scripturl, $mbname, $modSettings, $language;
1245: global $context, $settings, $options, $sourcedir, $ssi_theme, $smcFunc;
1246:
==>1247:     $context['html_headers'] .= '
1248: <script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript"></script>
1249:     <script type="text/javascript">
1250:     try { var yaCounter513020 = new Ya.Metrika(513020); } catch(e){}
1251:     </script>';

теперь в логах  сыплются  ошибки

8: Undefined index: html_headers
Файл: E:/Rooms/ххххх/ххххххххх/www/Sources/Load.php
Строка: 1247

как можно исправить?

BIOHAZARD

Код: (php)
 if (!isset($context['html_headers'])) $context['html_headers'] = '';

$context['html_headers'] .= '
<script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript"></script>
<script type="text/javascript">
try { var yaCounter513020 = new Ya.Metrika(513020); } catch(e){}
</script>';


так будет более правильно
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

BoPoH

07 декабря 2009, 11:59:18 #9 Последнее редактирование: 08 декабря 2009, 09:36:04 от BoPoH
Ошибки перестали сыпаться, спасибо, только почему-то на  http://metrika.yandex.ru теперь пишет, что код установлен не на всех страницах.  Но думаю это уже мелочи  :)

PS Проверил сегодня, пишет счетчик установлен корректно,   :D BIOHAZARD, еще раз спасибо!

RBW

А если просто код счетчика держать в отдельном файле, а из разных тем его инклюдить?

BIOHAZARD

Цитата: RAINBOW от 26 декабря 2009, 10:48:18
А если просто код счетчика держать в отдельном файле, а из разных тем его инклюдить?

http://www.simplemachines.ru/index.php?topic=8.0

здесь же речь о темонезависимой установке - прописал один раз и забыл
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

L.....a

Цитата: BIOHAZARD от 26 декабря 2009, 16:46:30
http://www.simplemachines.ru/index.php?topic=8.0

здесь же речь о темонезависимой установке - прописал один раз и забыл

Хотела поставить как вы сказали на раз и забыла, но чтото не получается  :'(

xoxma

23 января 2011, 23:00:33 #13 Последнее редактирование: 23 января 2011, 23:32:11 от xoxma
Покажите пример с гугл аналистиком.
А то при вставке в тему, как раз не работает...
Модуль гугл_аналистик не ставится, либо что-то не так с правами на папки...Тема http://custom.simplemachines.org/themes/index.php?lemma=1752

Код
$context['html_headers'] .= '
<script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push([\'_setAccount\', \'код\']);
  _gaq.push([\'_trackPageview\']);
  (function() {
    var ga = document.createElement(\'script\'); ga.type = \'text/javascript\'; ga.async = true;
    ga.src = (\'https:\' == document.location.protocol ? \'https://ssl\' : \'http://www\') + \'.google-analytics.com/ga.js\';
    var s = document.getElementsByTagName(\'script\')[0]; s.parentNode.insertBefore(ga, s);
  })();
</script>';

Что-то не так может с экранированием?

Bugo

А в index.template.php используемой темы не забыли внести изменения, которые делает мод при установке?

BIOHAZARD

http://www.simplemachines.ru/index.php?topic=10335.0

Цитата: Bugo от 24 января 2011, 01:17:24
А в index.template.php используемой темы не забыли внести изменения, которые делает мод при установке?
описанный здесь метод не затрагивает файлы тем, только сорцы
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

xoxma

Цитата: Bugo от 24 января 2011, 01:17:24
А в index.template.php используемой темы не забыли внести изменения, которые делает мод при установке?

При установке пишет,
ЦитироватьВы не можете загрузить или установить новый пакет модификаций, так как директория Пакетов Модификаций защищена от записи (CHMOD)!

На какую папку нужно поставить 777?

С модом Counters: Google, StatCounter & Yandex такая же история...

BIOHAZARD

/packages - 777
/packages/temp - 777 (если отсутствует, создать)
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

xoxma

Цитата: BIOHAZARD от 24 января 2011, 11:54:24
/packages - 777
/packages/temp - 777 (если отсутствует, создать)

Мод поставился, благодарю.
Но теперь не могу найти, где прописывать аналистик. На скрине показано в настройках модов, но у меня ничего там не появилось.
"Установленных модов, имеющих настройки, в данном разделе нет."

BIOHAZARD

попробуйте теперь удалить мод, на одной из страниц показывается, успешны ли будут изменения
скорее всего там у вас всё будет выделено красным и на самом деле мод так и не смог установиться
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Mavn

Может имеет смысл обсуждение мода в отдельной теме?
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

BIOHAZARD

думаю стоит отсечь всё лишнее и закинуть в ветку http://www.simplemachines.ru/index.php?board=16.0
с названием вроде "не устанавливается мод"
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ


Rostovchanka

19 марта 2012, 06:36:43 #23 Последнее редактирование: 19 марта 2012, 07:54:48 от Rostovchanka
попробовала вариант установки счетчика, описанный в этом сообщении http://www.simplemachines.ru/index.php?topic=9107.msg60015#msg60015

выбрала вариант "ПОСЛЕ копирайтов", но он не устраивает тем, что видимые счетчики выводят между копирайтом и строкой с мобильной версией..

теперь вопрос...почему просто нельзя отредактировать Themes/default/index.template.php?
если бы я не читала форум, я бы полезла именно туда

при установке кода яндекс метрики пишет, что счетчик установлен не на всех страницах
счетчик стоит в index.template.php

Bugo

Цитата: Rostovchanka от 19 марта 2012, 06:36:43почему просто нельзя отредактировать Themes/default/index.template.php?

Потому что не все используют дефолтную тему. А у некоторых тем даже больше, чем одна. Поэтому универсальное решение с редактированием одного файла лучше, чем если бы пришлось редактировать index.template.php каждого шаблона.

Rostovchanka

Цитата: Bugo от 19 марта 2012, 14:59:37
Потому что не все используют дефолтную тему. А у некоторых тем даже больше, чем одна. Поэтому универсальное решение с редактированием одного файла лучше, чем если бы пришлось редактировать index.template.php каждого шаблона.

ясно, спасибо