Настройка параметров интернет магазина в Яндекс метрика. Нужна помощь.

Главные вкладки

Аватар пользователя Moel Moel 8 января 2013 в 8:02

Возникла проблема с настройкой параметров интернет-магазина в метрике.
Кто нибудь настраивал для drupal? У меня созданы цели : Заказ завершен содержит «cart/checkout/complete» (заказ) и Ваш заказ практически готов к оформлению. содержит «checkout/review» (корзина).
Обьясните незнающему куда вставлять вот этот код из инструкции метрики и чем заменять эти самые параметры. например чем заменить 12345? Если можно поподробней.
var yaParams = {
order_id: "12345",
order_price: 123.45,
currency: "RUR",
exchange_rate: 1,
goods: [{
id: "1",
name: "наименование товара",
price: 100,
quantity: 1}]
};

Инструкция из метрики http://help.yandex.ru/metrika/?id=1115035

Комментарии

Аватар пользователя Moel Moel 8 января 2013 в 13:54

Да это и так понятно. А какой переменной можете поподробней. Где ее взять или как сделать. Если можно на примере. Заранее спасибо.

Аватар пользователя Moel Moel 8 января 2013 в 20:44

Да уж это точно=( Нормального подробнго ответа уй дождешься пока денег не предложишь. Просто в метрике так все скудно описано хоть какой один реальный примерчик бы привели. Функция очень нужная. Неужели никто не настраивал. Или жаба душит пару строчек написать.=(

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 8 января 2013 в 21:04

"Moel" wrote:

Да уж это точно=( Нормального подробнго ответа уй дождешься пока денег не предложишь

Здаётся мне вы не из тех, кто может что то предложить.

Аватар пользователя Moel Moel 9 января 2013 в 1:49

Так бы и назвали форум решаем проблемы за деньги. Пишите в личку если можете сделать и сколько стоит.

Аватар пользователя Plazik Plazik 10 января 2013 в 18:40

"Moel" wrote:
Просто я из тех кому самому интересно поразбираться.

Тогда в чем проблема? Изучите api друпала и вперед)

Ваша проблема быстро не решается, тут нужно писать отдельный модуль.
Я бы на вашем месте обратился за помощью к автору модуля яндекс метрики http://drupal.org/project/yandex_metrics

А в качестве примера рассмотрел бы модуль http://drupal.org/project/commerce_google_analytics

Аватар пользователя Moel Moel 11 января 2013 в 23:20

Никаких модулей писать не надо. Я уже настроил настроил метрику. Параметры заказа и общей стоимости заказа передаются, а вот с параметрами товаров возникли проблемы. Вообщем опишу как что делал.
Это для Drupal 6.
Вообщем метрика нам дает вот такой код

var yaParams = {
  order_id: "12345",
  order_price: 123.45,
  currency: "RUR",
  exchange_rate: 1,
  goods:
     [
        {
          id: "1",
          name: "наименование товара",
          price: 100,
          quantity: 1
        }
      ]
};

где order_id - номер заказа,order_price - общая стоимость заказа,currency -валюта,exchange_rate- курс.
С этим проблем нет - заходим в настройки оформления заказа ставим формат ввода PHP и добавляем код после текста:

<script type="text/javascript">
var yaParams = {
order_id:"[order-id]",
order_price: [order-total-raw],
currency: "RUR",
  exchange_rate: 1
};
</script>

Тут просто используются токены. Но можно использовать переменные drupala.
С информацией по заказам сложнее.
Вот код по товарам

goods:
     [
        {
          id: "1",
          name: "наименование товара",
          price: 100,
          quantity: 1
        }
      ]
};

id - артикул, name - наименование товара, price- цена, quantity- количетво товара в заказе.
Если у вас заказываюn по одному виду товара то проблем нет. Просто добавляете на ту же страницу в настройках оформления заказа код.

goods: [{
    name: <?print$item->title?>,
    price: <?print $item->price?>,
    quantity: <? print $item->qty?>
          }]
};

И еще что бы все это работало нужно что бы в метрике были включены цели интернет магазинов.
На странице на который мы добавили код должна быть установлена цель заказ. У меня это checkout/review.

Если кто нибудь сможет помочь сделать для нескольких товаров то буду очень благодарен. Я пока пробовал делать так

<?php$items = uc_cart_get_contents();
 $item_price = 0;
foreach (uc_cart_get_contents() as $item) {

                  $itemsss[] = array(                  
                  $item->title,
                  $item->price,
                  $item->qty,                 
                );?>

Вот такой массив описан для нескольких товаров в метрике.

goods:
     [
        {
          id: "11",
          name: "телевизор",
          price: "10600"
        },
        {
          id: "22",
          name: "наушники",
          price: "400.50"
        }
      ]

Данные поступают, массив наполняется но вот как этими данными наполнить массив яндекс метрики goods я к сожалению не знаю.
У меня с PHP Javascript проблемы. Я начал знакомство с нимb часа 4 назад пока пытался настроить эти параметры для метрики.
Надеюсь кто нибудь поможет. И кстати есть еще очень хорошая штука расширение для firefox metrika.info - он показывает полный лог по метрике. Очень удобно в конкретном случае сразу видно какие данные поступают или не поступают.

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 12 января 2013 в 1:00

"Moel" wrote:
goods: [ { id: "11", name: "телевизор", price: "10600" }, { id: "22", name: "наушники", price: "400.50" } ]

Это обычный json, из массива ПХП конвертируется легко см drupal_json_encode()

Так что этот говнокод (без обид)

"Moel" wrote:
goods: [{ name: <?print$item->title?>, price: <?print $item->price?>, quantity: <? print $item->qty?> }] };

имеет смысл прибрать

кстати, говнокод тоже

"Moel" wrote:
С этим проблем нет - заходим в настройки оформления заказа ставим формат ввода PHP и добавляем код после текста:

но раз работает для вас...

Аватар пользователя Moel Moel 12 января 2013 в 1:09

<a href="mailto:volocuga@drupal.org">volocuga@drupal.org</a> wrote:
"Moel" wrote:
goods: [ { id: "11", name: "телевизор", price: "10600" }, { id: "22", name: "наушники", price: "400.50" } ]

Это обычный json, из массива ПХП конвертируется легко см drupal_json_encode()

Так что этот говнокод (без обид)

"Moel" wrote:
goods: [{ name: <?print$item->title?>, price: <?print $item->price?>, quantity: <? print $item->qty?> }] };

имеет смысл прибрать

кстати, говнокод тоже

"Moel" wrote:
С этим проблем нет - заходим в настройки оформления заказа ставим формат ввода PHP и добавляем код после текста:

но раз работает для вас...

Может поможете не бесплатно. Насчет говнокода конечно без обид так как я совершенно не знаю php и яваскрипт.

Аватар пользователя Moel Moel 27 февраля 2013 в 19:50

Вообщем работает сейчас так - полностью и потоварно:

<?phpfunction form_oplata_init(){

    $path = drupal_get_path_alias($_GET['q']);
    $yaParams=array();
    if($path=='cart/checkout/complete'){

    $order = uc_order_load(intval($_SESSION['cart_order']));

        $yaParams['order_id']=$order->order_id;
    $yaParams['order_price']=$order->order_total;
        $yaParams['currency']='RUR';
    $yaParams['exchange_rate']=1;

        foreach($order->products as $item){
        $yaParams['goods'][]=array(
            'id'=>$item->order_product_id,
        'name'=>$item->title,
            'price'=>$item->price,
        'quantity'=>$item->qty,    
        );
    }
    }

    $jsMetrika='var yaParams = '._form_oplata_json_encode($yaParams).';';
    drupal_add_js($jsMetrika,'inline');
}

//  Перевод в json
function _form_oplata_json_encode($data) {
        switch ($type = gettype($data)) {
            case 'NULL':
                return 'null';
            case 'boolean':
                return ($data ? 'true' : 'false');
            case 'integer':
            case 'double':
            case 'float':
                return $data;
            case 'string':
                return '"' . addslashes($data) . '"';
            case 'object':
                $data = get_object_vars($data);
            case 'array':
                $output_index_count = 0;
                $output_indexed = array();
                $output_associative = array();
                foreach ($data as $key => $value) {
                    $output_indexed[] = _form_oplata_json_encode($value);
                    $output_associative[] = _form_oplata_json_encode($key) . ':' . _form_oplata_json_encode($value);
                    if ($output_index_count !== NULL && $output_index_count++ !== $key) {
                        $output_index_count = NULL;
                    }
                }
                if ($output_index_count !== NULL) {
                    return '[' . implode(',', $output_indexed) . ']';
                } else {
                    return '{' . implode(',', $output_associative) . '}';
                }
            default:
                return ''; // Not supported
        }
}?>

Вот результат в метрике: