Здравствуйте.
Кто нибудь прикручивал к XSLT сбор данных для гугл аналитикса для отслеживания электронной коммерции?
там необходимо настроить генерацию скрипта, который бы выводил данные о номере заказа, наименовании товара, его цена и количество.
Правильно ли я думаю, что в файле purchase.xsl в шаблоне
<xsl:template match="purchasing[@stage = 'result' and @step = 'successful']">
<p><xsl:text>&emarket-order-successful;</xsl:text></p>
</xsl:template>
вывести требуемые данные в нужном формате.?
Возможно ли вообще на этой странице получить данные о номере заказа?
т.к. зная номер заказа можно вытащить и все остальные требуемые данные.
Вот и вопрос, как вытащить тут номер заказа.
ID заказа можно получить. например, таким образом - http://wiki.umisoft.ru/%D0%9F%D0%BE%D0%B8%D1%81%D0%BA_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B5%D0%B3%D0%BE_%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0,_%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B9_%D0%BE%D1%84%D0%BE%D1%80%D0%BC%D0%B8%D0%BB_%D0%BF%D0%BE%D0%BA%D1%83%D0%BF%D0%B0%D1%82%D0%B5%D0%BB%D1%8C.
К сожалению тут пусто.
Странно.
Вот мой код (когда-то брал с wiki, если не ошибаюсь). Работает на версии 2.8.5.3:
public function order_last($template = 'order_last') {
list($tpl_block) = def_module::loadTemplates("./tpls/emarket/{$template}.tpl", 'order_block');
$cmsController = cmsController::getInstance();
$domain = $cmsController->getCurrentDomain();
$domainId = $domain->getId();
//поиск последнего заказа для текущего пользователя
$sel = new selector('objects');
$sel->types('object-type')->name('emarket', 'order');
$sel->where('customer_id')->equals(customer::get()->id);
$sel->where('name')->isNull(false);
$sel->where('domain_id')->equals($domainId);
$sel->order('order_date')->desc();
$sel->limit(0, 1);
$result = $sel->first;
if($sel->length > 0) {
$block_arr['order_id'] = $result->id;
$block_arr['number'] = $result->number;
return def_module::parseTemplate($tpl_block, $block_arr, false, $result->id);
}
}
а статья про поиск последнего заказа текущего макроса открывается по этому адресу
взяв за основу этот макрос, удалось прикрутить к странице /emarket/purchase/result/successful/ сформированные скрипты для отправки в гугл.аналитикс для отслеживания электронной коммерции.
Всем огромное спасибо.
а то я когда искала что то подобное на wiki, почему то посчитала что данная статья (если судить по заголовку) мне не подойдет, и даже не открывала.эх.
а так, если вдруг кому еще понадобится, у меня получилось так, может и не совсем оптимально.
<xsl:template match="purchasing[@stage = 'result' and @step = 'successful']">
<p>
<xsl:text>&emarket-order-successful;</xsl:text>
</p>
<xsl:variable name="orderl_id" select="document('udata://emarket/order_last/')" mode="last"/>
<xsl:variable name="order_info" select="document(concat('udata://emarket/order/',$orderl_id//order_id))/udata"/>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-********-1']);
_gaq.push(['_addTrans',
'<xsl:value-of select="$orderl_id//order_id" />', // номер заказа ОБЯЗАТЕЛЬНО
'My-Shop', // название магазина
'<xsl:value-of select="$order_info//summary/price/actual" />', // стоимость заказа (без учета доставки) ОБЯЗАТЕЛЬНО
'0', // налог
'0', // доставка
'SPB', // город
'SPB', // регион
'Russia' // страна
]);
<xsl:apply-templates select="$order_info//items/item" mode="vvv"/>
_gaq.push(['_trackTrans']);
</script>
</xsl:template>
<xsl:template match="udata[@method = 'order']/items/item" mode="vvv">
<xsl:variable name="orderl_id" select="document('udata://emarket/order_last/')"/>
_gaq.push(['_addItem','<xsl:value-of select="$orderl_id//order_id" />','<xsl:value-of select="page/@id" />', '<xsl:value-of select="@name" />', '', '<xsl:apply-templates select="price" mode="last_order"/>', '<xsl:apply-templates select="amount" mode="amount" />' ]);
</xsl:template>