Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Вывод разных валют в разных доменах у каталога

Автор ivan23Раздел Настройка системы и модулей

Ответов: 3
Просмотров: 4530
Последний ответ 04 Апреля 2013, 22:05:40
от admin
Как добавить вывод информации и редактирование информации в профиль

Автор rellaiРаздел Шаблоны XSLT

Ответов: 7
Просмотров: 5492
Последний ответ 28 Апреля 2014, 08:13:27
от rellai
Вывод объектов каталога с отдельными характеристиками объектов в таблице

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 19
Просмотров: 13050
Последний ответ 16 Июля 2013, 16:53:58
от thecoder
Вывод ссылками названия тем "Входит в сюжеты" на главной странице новостей

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 4
Просмотров: 4119
Последний ответ 01 Ноября 2013, 22:41:58
от Axiomateria
Как сделать "Заказ в 1 шаг" на сайте выведенном с UMI

Автор tbm-mРаздел Шаблоны XSLT

Ответов: 1
Просмотров: 3484
Последний ответ 01 Января 2016, 06:47:54
от admin

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

*

sam

  • ***
  • 216
  • +3/-1
  • "Век живи - век учись!"
    • Просмотр профиля
Здравствуйте!
На сайте есть скрипт Я.Метрики с асинхронным кодом в файле .../xsltTpls/layouts/default.xsl:
				<!-- Yandex.Metrika counter -->
<script type="text/javascript">
var yaParams = {IP-address: "<?php echo $_SERVER['REMOTE_ADDR']; ?>"};
</script>
<script type="text/javascript">
(function (d, w, c) {
(w[c] = w[c] || []).push(function() {
try {
w.yaCounter******** = new Ya.Metrika({ id:********, webvisor:true, clickmap:true, trackLinks:true, accurateTrackBounce:true, params:window.yaParams||{ } });
}
catch(e) { }
});
var n = d.getElementsByTagName("script")[0],
s = d.createElement("script"),
f = function () {
n.parentNode.insertBefore(s, n);
};
s.type = "text/javascript";
s.async = true;
s.src = (d.location.protocol == "https:" ? "https:" : "http:") + "//mc.yandex.ru/metrika/watch.js";
if (w.opera == "[object Opera]") {
d.addEventListener("DOMContentLoaded", f, false);
} else { f(); }
})(document, window, "yandex_metrika_callbacks");
</script>
<noscript><div><img src="//mc.yandex.ru/watch/********" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
В этом коде прошу обратить внимание на следующий скрипт, и параметр:
<script type="text/javascript">
var yaParams = {IP-address: "<?php echo $_SERVER['REMOTE_ADDR']; ?>"};
</script>

params:window.yaParams||{ }
Так как Я.Метрика перестал выводить IP-адреса посетителей, приходится изощряться таким образом, чтобы при выявлении злостных вредителей сайта, добавить их IP в черный список.

Но скрипт + параметр (см. второй код) не выполняют свою функцию, т.е. IP-адреса так и не видны.

Может кто подскажет, как для тестирования выводить IP-адрес в .../xsltTpls/layouts/default.xsl через скрипт/php? А также, как правильно все сделать, чтобы IP-адреса посетителей выводились в Я.Метрике?
Жизнь слишком коротка, чтобы выучить и знать всё на свете. Тем более, что мир быстро меняется, и технологии за ним тоже. Но это не повод, чтобы перестать учиться к чему-то новому. "Век живи - век учись!" Иначе жизнь будет прожита без пользы, как для себя, так и для окружающих.

*

crazygeorgio

  • ***
  • 140
  • +7/-0
    • Просмотр профиля
конечно так ничего не будет выводиться, сделайте кастомный метод, который бы возвращал $_SERVER['REMOTE_ADDR'] и пропишите через xslt

*

sam

  • ***
  • 216
  • +3/-1
  • "Век живи - век учись!"
    • Просмотр профиля
crazygeorgio, а можно попросить пример кастомного макроса на этот счетчик и его вызова через xslt? Код счетчика я уже привел выше.
Жизнь слишком коротка, чтобы выучить и знать всё на свете. Тем более, что мир быстро меняется, и технологии за ним тоже. Но это не повод, чтобы перестать учиться к чему-то новому. "Век живи - век учись!" Иначе жизнь будет прожита без пользы, как для себя, так и для окружающих.

*

crazygeorgio

  • ***
  • 140
  • +7/-0
    • Просмотр профиля
в custom.php пишем

public function getUserIp {
  return $_SERVER['REMOTE_ADDR'];
}

в шаблоне
<script type="text/javascript">
  var yaParams = {IP-address: "<xsl:value-of select="document('udata://custom/getUserIp')/udata" />"};
</script>

*

sam

  • ***
  • 216
  • +3/-1
  • "Век живи - век учись!"
    • Просмотр профиля
Спасибо! Попробую сделать.
Жизнь слишком коротка, чтобы выучить и знать всё на свете. Тем более, что мир быстро меняется, и технологии за ним тоже. Но это не повод, чтобы перестать учиться к чему-то новому. "Век живи - век учись!" Иначе жизнь будет прожита без пользы, как для себя, так и для окружающих.

*

sam

  • ***
  • 216
  • +3/-1
  • "Век живи - век учись!"
    • Просмотр профиля
Была одна неточность в макросе - казалось бы мелочь - забыли скобки "()"

public function getUserIp() {
  return $_SERVER['REMOTE_ADDR'];
}

Без этих скобок на сайте была ошибка в custom.php, в строке начала макроса. Надо что-то внутри скобок прописать или нет?
Жизнь слишком коротка, чтобы выучить и знать всё на свете. Тем более, что мир быстро меняется, и технологии за ним тоже. Но это не повод, чтобы перестать учиться к чему-то новому. "Век живи - век учись!" Иначе жизнь будет прожита без пользы, как для себя, так и для окружающих.

*

crazygeorgio

  • ***
  • 140
  • +7/-0
    • Просмотр профиля
нет, не надо, параметров ведь нет

*

sam

  • ***
  • 216
  • +3/-1
  • "Век живи - век учись!"
    • Просмотр профиля
Ок. Читал, что IP-адрес не всегда в "REMOTE_ADDR" - может усовершенствовать макрос, чтобы если не там IP, то в любом случае выводить правильный IP-адрес посетителя сайта?

Просто в Я.Маркете есть злостные "кликальщики", которые жмут и жмут. Не так много, конечно, но Я.Маркет это за склик не принимает почему-то (видимо выгодно, что у нас списываются $)?!
Жизнь слишком коротка, чтобы выучить и знать всё на свете. Тем более, что мир быстро меняется, и технологии за ним тоже. Но это не повод, чтобы перестать учиться к чему-то новому. "Век живи - век учись!" Иначе жизнь будет прожита без пользы, как для себя, так и для окружающих.

*

crazygeorgio

  • ***
  • 140
  • +7/-0
    • Просмотр профиля
можно как-то так

    public function getUserIp() {
      //получаем HTTP_X_FORWARDED_FOR
      $forward_ip = @getenv('HTTP_X_FORWARDED_FOR');
      if(empty($forward_ip)){
        $user_ip = @getenv('REMOTE_ADDR');
        $proxy_ip = '';
      } else{
        $user_ip = $forward_ip;
        $proxy_ip = @getenv('REMOTE_ADDR');
      }
      return $user_ip;
    }