Иван Бочкарев

Иван Бочкарев

С нами с 11 июня 2013; Место в рейтинге пользователей: #11
Иван Бочкарев
16 декабря 2019, 10:20
+4
Согласен, мы выделим топовые дополнения, которые требуют адаптации в первую очередь. Такие как: migx, AjaxForm, formit, minishop2, gallery, pdoTools. И силами сообщества будем работать над адаптацией.
Иван Бочкарев
16 декабря 2019, 09:45
+1
Верно, на github есть такое. Но на самом деле это alpha 1. Они там на путали.
Иван Бочкарев
16 декабря 2019, 09:31
+2
В ближайшее время все будет. Нужно немного терпения, это только первая альфа версия.
Иван Бочкарев
16 декабря 2019, 09:30
+1
Конечно, когда работаешь над проектом, а не сидишь как диванный критик. Не особо следив за процессом разработки.
Иван Бочкарев
15 декабря 2019, 10:11
+1
Есть уже на русском, стараюсь новые статьи по 3-ке сразу переводить
Иван Бочкарев
12 декабря 2019, 01:32
0
Пиши тут, вдруг кто-то тоже будет искать решение.
Иван Бочкарев
12 декабря 2019, 01:31
+1
Как у вас прописаны правила в htaccess:
RewriteRule ^(ru|en|ar|ch)/assets(.*)$ assets$2 [L,QSA]
Так?
Иван Бочкарев
03 декабря 2019, 00:40
0
Так как удалить коммент не могу. Вот обновленный код:

Сниппет: utmSnippet

<?php
$cookies = array('utm_source', 'utm_medium', 'utm_content', 'utm_term', 'utm_campaign');

foreach ($cookies as $key) {
    if (!isset($_COOKIE[$key]))
    {
        $val = $_GET[$key];
        $_COOKIE[$key] = $val;
        setcookie($key, $val, time() + 60 * 60 * 24 * 5);
    }
}
Обновление получения данных из кук и передача в поля:

<script>
  //GA Client_ID
  ga(function (tracker) {
    var clientId = tracker.get('clientId');
    $('form input[name=client_id_google]').val(clientId);
  });

  // Yandex.metrica client ID
  ym(XXXXXXXXX, 'getClientID', function (clientID) {
    $('form input[name=client_id_yandex]').val(clientID);
  });
  
  var cookies = ['utm_campaign', 'utm_content', 'utm_medium', 'utm_source', 'utm_term'];
  cookies.forEach(function(key) {
    $('form input[name=' + key + ']').val(Cookies.get(key));
  });
</script>
Иван Бочкарев
02 декабря 2019, 01:43
+1
<script>
  window.AMOPIXEL_IDENTIFIER_PARAMS = window.AMOPIXEL_IDENTIFIER_PARAMS || {};
  window.AMOPIXEL_IDENTIFIER_PARAMS.onload = function (pixel_identifier) {
    var visitor_uid = pixel_identifier.getVisitorUid(); // Получаем visitor_uid
    // console.log ( 'visitor_uid' , visitor_uid) ;
    if (visitor_uid) {
      // Записываем его в скрытое поле формы 'visitor_uid'
      $(document).ready(function () {
        $('form input[name = "visitor_uid"]').val(visitor_uid);
      });
    }
  };
</script>
Иван Бочкарев
02 декабря 2019, 01:32
+1
Возможно кому то пригодится.

Вместе с передачей необходимых полей нужно было передавать UTM метки, а также client ID Yandex метрики и GA.

Пишу как реализовал:

В наши формы добавляем скрытые поля:

<input type="hidden" name="client_id_yandex" value="">
<input type="hidden" name="client_id_google" value="">
<input type="hidden" name="utm_source" value="">
<input type="hidden" name="utm_medium" value="">
<input type="hidden" name="utm_content" value="">
<input type="hidden" name="utm_term" value="">
<input type="hidden" name="utm_campaign" value="">
В код вызова AjaxForm в параметр amoCRMmodxAmoFieldsEq добавляем соответствие полей:

'amoCRMmodxAmoFieldsEq' => 'phone||email||amocrm_link==XXXXXXX||amocrm_name==XXXXXXX||amocrm_form==XXXXXXX||amocrm_nameform==XXXXXXX||amocrm__subtitle==XXXXXXX||client_id_yandex==v||client_id_google==XXXXXXX||utm_source==XXXXXXX||utm_medium==XXXXXXX||utm_content==XXXXXXX||utm_term==XXXXXXX||utm_campaign==XXXXXXX||question==XXXXXXX||visitor_uid==visitor_uid',

Где XXXXXXX — номер поля в AmoCRM.

Далее создаем сниппет utmSnippet — для сохранения значений UTM меток в кукки. Для чего это нужно, а чтобы отслеживать метки не только по ссылке, по которой пришел клиент с рекламы, а также при переходе по другим страницам сайта метки не терялись.

<?php
if (!isset($_COOKIE['utm_source']))
{
    $utm_source = $_GET['utm_source'];
    setcookie("utm_source", $utm_source, time() + 60 * 60 * 24 * 5);
}
if (!isset($_COOKIE['utm_medium']))
{
    $utm_medium = $_GET['utm_medium'];
    setcookie("utm_medium", $utm_medium, time() + 60 * 60 * 24 * 5);
}
if (!isset($_COOKIE['utm_content']))
{
    $utm_content = $_GET['utm_content'];
    setcookie("utm_content", $utm_content, time() + 60 * 60 * 24 * 5);
}
if (!isset($_COOKIE['utm_term']))
{
    $utm_term = $_GET['utm_term'];
    setcookie("utm_term", $utm_term, time() + 60 * 60 * 24 * 5);
}
if (!isset($_COOKIE['utm_campaign']))
{
    $utm_campaign = $_GET['utm_campaign'];
    setcookie("utm_campaign", $utm_campaign, time() + 60 * 60 * 24 * 5);
}
Вызываем, в body сниппет

[[!utmSnippet?]]
Переходим к получению, подстановке в скрытые поля и передаче значений UTM меток, client ID в AmoCRM.

Получаем значения Client ID:

$(document).ready(function () {
//GA Client_ID
var clientId = ga.getAll()[0].get('clientId');
$(document).ready(function () {
  $('form input[name = "client_id_google"]').val(clientId);
});

// Yandex.metrica client ID
var clientidym = yaCounterXXXXXXX.getClientID();
$(document).ready(function () {
  $('form input[name = "client_id_yandex"]').val(clientidym);
});
}

Для облегчения получения значений UTM меток воспользуемся либой js-cookie

$(document).ready(function () {
var utm_campaign = Cookies.get('utm_campaign');
$(document).ready(function () {
  $('form input[name = "utm_campaign"]').val(utm_campaign);
});

var utm_content = Cookies.get('utm_content');
$(document).ready(function () {
  $('form input[name = "utm_content"]').val(utm_content);
});

var utm_medium = Cookies.get('utm_medium');
$(document).ready(function () {
  $('form input[name = "utm_medium"]').val(utm_medium);
});

var utm_source = Cookies.get('utm_source');
$(document).ready(function () {
  $('form input[name = "utm_source"]').val(utm_source);
});

var utm_term = Cookies.get('utm_term');
$(document).ready(function () {
  $('form input[name = "utm_term"]').val(utm_term);
});
}
Иван Бочкарев
28 ноября 2019, 19:14
0
Сделан рефакторинг ядра, стилей админки, редизайн админки, новая страница входа, новый инсталлятор и многое другое.
Иван Бочкарев
28 ноября 2019, 19:12
0
Этим и обеспокоен Марк и Джейсон, что нет обновленной информации.

Основное уже описано, можно править и тестировать дополнения.
Иван Бочкарев
25 ноября 2019, 09:05
2
0
Можно так:
{set $material = $_modx->resource.project_material | split:'||'}
{foreach $material as $item}
    {set $filter[] = 'project_material=='~$item}
{/foreach}

{'!pdoResources' | snippet : [
  'parents' => 7,
  'limit' => 2,
  'tvPrefix' => '',
  'tvFilters' => $filter,
  'showLog' => 0,
  'sortby' => 'RAND()',
  'includeTVs' => 'project_image,project_price,project_area,project_material,project_size,project_bedrooms,project_bathrooms,location',
  'tpl' => '@FILE chunks/projects/project.tpl',
]}
Иван Бочкарев
24 ноября 2019, 11:52
0
Проверь на наличие не закрытых div
Иван Бочкарев
24 ноября 2019, 11:41
0
Кто такой Шифу — Мастер Ши́фу (англ. Master Shifu) — Малая панда — Учитель По и Неистовой Пятёрки. Сначала он не признавал По как Избранного и всячески мешал ему, но со временем понял свою ошибку, разработал собственную «методику» для обучения По и обрёл внутреннее спокойствие.

=)