Jump to content

Recommended Posts

madvolkov

Подскажите как настроить ? 

https://my.retailrocket.ru/5caf5bd197a5252ee8f2af04/TrackersInstruction?trackingJs=True

в head установил код.

А далее на страницах товара в шаблоне вывода товара тоже прописал данный скрипт. 

<script type="text/javascript">
    (window["rrApiOnReady"] = window["rrApiOnReady"] || []).push(function() {
		try{ rrApi.view(<product_id>); } catch(e) {}
	})
</script>

Где:

  • <product_id> - ID товара (должно совпадать с ID, передаваемом в YML).

Пример:

<script type="text/javascript"> (window["rrApiOnReady"] = window["rrApiOnReady"] || []).push(function() { try { rrApi.view(123); } catch(e) {} }) </script>

 

<product_id> - ID товара (должно совпадать с ID, передаваемом в YML).   КАК ВОТ ЭТО РЕАЛИЗОВАТЬ ТО ?

 

вместо 

<product_id>

надо вставить метку {$PRODUCTS_MODEL} что ли ? 

Link to post
Share on other sites
support
11 минут назад, madvolkov сказал:

Подскажите как настроить ? 

https://my.retailrocket.ru/5caf5bd197a5252ee8f2af04/TrackersInstruction?trackingJs=True

в head установил код.

А далее на страницах товара в шаблоне вывода товара тоже прописал данный скрипт. 


<script type="text/javascript">
    (window["rrApiOnReady"] = window["rrApiOnReady"] || []).push(function() {
		try{ rrApi.view(<product_id>); } catch(e) {}
	})
</script>

Где:

  • <product_id> - ID товара (должно совпадать с ID, передаваемом в YML).

Пример:

<script type="text/javascript"> (window["rrApiOnReady"] = window["rrApiOnReady"] || []).push(function() { try { rrApi.view(123); } catch(e) {} }) </script>

 

<product_id> - ID товара (должно совпадать с ID, передаваемом в YML).   КАК ВОТ ЭТО РЕАЛИЗОВАТЬ ТО ?

 

вместо 


<product_id>

надо вставить метку {$PRODUCTS_MODEL} что ли ? 

В /includes/modules/metatags.php добавьте в самом низу что-то вроде:

<?php 
if (strstr($PHP_SELF, FILENAME_PRODUCT_INFO)) {

	if ($product->isProduct()) {
?>	
<script>
    (window["rrApiOnReady"] = window["rrApiOnReady"] || []).push(function() {
		try{ rrApi.view(<?php echo $product->data['products_id']; ?>); } catch(e) {}
	})
</script>
<?php 
}
}
?>

 

Link to post
Share on other sites
madvolkov

Опа спасибо, сработало ! 

осталось ещё немного ) на страницах категорий в этом же файле вставить код надо

 

<script type="text/javascript">
    (window["rrApiOnReady"] = window["rrApiOnReady"] || []).push(function() {
		try { rrApi.categoryView(<category_id>); } catch(e) {}
	})
</script>

category_id - айди категории как получить ?

куда вставлять корд нашёл...как получить id категории ? 

плюс это вот надо ещё : 

На кнопках, нажатие которых приводит к добавлению товара в корзину, необходимо установить обработчик событий:

 Копировать
onmousedown="try { rrApi.addToBasket(<product_id>) } catch(e) {}"

Где:

  • <product_id> - ID товара (должно совпадать с ID, передаваемом в YML).

Пример:

<div class="buy_button " onmousedown="try { rrApi.addToBasket(123) } catch(e) {}"></div>

  • Обратите внимание:
    • Кнопка добавления в корзину может находиться как в карточке товара, так и в листингах, вызов метода addToBasket нужно установить и в этом случае;

по id категори сделал так вот : это верно ? 

try { rrApi.categoryView(<?php echo ($_GET['cat']); ?>); }

Link to post
Share on other sites
support
7 минут назад, madvolkov сказал:

category_id - айди категории как получить ?

 

$current_category_id

В том же файлы добавляйте что-то типа:

<?php if ($current_category_id > 0) { ?>
<script type="text/javascript">
    (window["rrApiOnReady"] = window["rrApiOnReady"] || []).push(function() {
		try { rrApi.categoryView(<?php echo $current_category_id; ?>); } catch(e) {}
	})
</script>
<?php } ?>

 

Link to post
Share on other sites
madvolkov

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

{$ADD_CART_BUTTON}

onmousedown="try { rrApi.addToBasket(<product_id>) } catch(e) {}"

Где:

  • <product_id> - ID товара (должно совпадать с ID, передаваемом в YML).

Пример:

<div class="buy_button " onmousedown="try { rrApi.addToBasket(123) } catch(e) {}"></div>

  • Обратите внимание:
    • Кнопка добавления в корзину может находиться как в карточке товара, так и в листингах, вызов метода addToBasket нужно установить и в этом случае;
Link to post
Share on other sites
support
12 минут назад, madvolkov сказал:

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

 

Судя по примеру кода, надо просто метку ADD_CART_BUTTON обернуть этим кодом и подставить {$PRODUCTS_ID} если в карточке товара или {$module_data.PRODUCTS_ID} если в списке товара внутри категории.

 

Link to post
Share on other sites
madvolkov

                         <p class="button-holder">{literal}<script>onmousedown="try { rrApi.addToBasket({$PRODUCTS_ID}) } catch(e) {}"
{$ADD_CART_BUTTON}</script>{/literal}</p>

 

так не работает ( 

Link to post
Share on other sites
madvolkov

а просто пробую вставить метку {$PRODUCT S_ID} в шаблон карточки товара и перестаёт загружаться страница вообще.

Link to post
Share on other sites
support
37 минут назад, madvolkov сказал:

                         <p class="button-holder">{literal}<script>onmousedown="try { rrApi.addToBasket({$PRODUCTS_ID}) } catch(e) {}"
{$ADD_CART_BUTTON}</script>{/literal}</p>

 

так не работает ( 

Конечно не будет работать.

Тэг literal ... /literal запрещает выполнять код, т.е. у Вас внутри этого тэга код исполняться не будет, метки в данные не превратятся.

Да и зачем там script не понятно.

Вам же показываются готовый пример.

Просто вместо <product_id> добавьте {$PRODUCTS_ID}

Как-то так, видимо:

<div class="buy_button" onmousedown="try { rrApi.addToBasket({$PRODUCTS_ID}) } catch(e) {}">{$ADD_CART_BUTTON}</div>

 

Link to post
Share on other sites
madvolkov

капец вставляю так : 

 <p class="button-holder" onmausedown="try {rrApi.addToBasket({$PRODU CTS_ID })} catch(e){}">{$ADD_CART_BUTTON}</p> 

вообще страница не загружается . контентная часть 

head и body пустые *(

Link to post
Share on other sites
support
23 минуты назад, madvolkov сказал:

капец вставляю так : 

 <p class="button-holder" onmausedown="try {rrApi.addToBasket({$PRODU CTS_ID })} catch(e){}">{$ADD_CART_BUTTON}</p> 

вообще страница не загружается . контентная часть 

head и body пустые *(

Попробуйте так:

<div class="buy_button" onmousedown="{literal}try { rrApi.addToBasket({/literal}{$PRODUCTS_ID}{literal}) } catch(e) {}{/literal}">{$ADD_CART_BUTTON}</div>

Может просто смарти не может разобрать кучу этих скобок правильно.

Link to post
Share on other sites
support
4 минуты назад, madvolkov сказал:

заработало СПС

Не за что

Link to post
Share on other sites
madvolkov

и последний шаг :

 

На финальной странице оформления заказа (на которой пользователю сообщают о том, что заказ сформирован, благодарят за покупку и так далее) необходимо установить обработчик совершения транзакции:

 Копировать
<script type="text/javascript">
(window["rrApiOnReady"] = window["rrApiOnReady"] || []).push(function() {
    try {
        rrApi.order({
            transaction: "<transaction_id>",
            items: [
                { id: <product_id>, qnt: <quantity>,  price: <price>},
                { id: <product_id>, qnt: <quantity>,  price: <price> }
            ]
        });
    } catch(e) {}
})
</script>

Где:

  • <transaction_id> - ID транзакции,
  • <product_id> - ID товара (должно совпадать с ID, передаваемом в YML),
  • <qnt> - количество единиц товара в заказе,
  • <price> - цена за единицу товара.

как я понимаю это файл checkout_success.php но не могу понять для него отдельно где либо формируется head или можно это как то сделать тоже в файле metatags.php ?

Link to post
Share on other sites
support
32 минуты назад, madvolkov сказал:

и последний шаг :

 

На финальной странице оформления заказа (на которой пользователю сообщают о том, что заказ сформирован, благодарят за покупку и так далее) необходимо установить обработчик совершения транзакции:

 Копировать

<script type="text/javascript">
(window["rrApiOnReady"] = window["rrApiOnReady"] || []).push(function() {
    try {
        rrApi.order({
            transaction: "<transaction_id>",
            items: [
                { id: <product_id>, qnt: <quantity>,  price: <price>},
                { id: <product_id>, qnt: <quantity>,  price: <price> }
            ]
        });
    } catch(e) {}
})
</script>

Где:

  • <transaction_id> - ID транзакции,
  • <product_id> - ID товара (должно совпадать с ID, передаваемом в YML),
  • <qnt> - количество единиц товара в заказе,
  • <price> - цена за единицу товара.

как я понимаю это файл checkout_success.php но не могу понять для него отдельно где либо формируется head или можно это как то сделать тоже в файле metatags.php ?

Это уже сделано на примере модулей яндекс метрики и google analytics.

Передаются данные о заказе точно так же.

Смотрите /checkout_success.php и /includes/modules/analytics/metrika.php

Просто возьмите код метрики и чуть исправьте его, все данные там уже есть: и id и количество, и цена.

 

Link to post
Share on other sites
madvolkov

Это вот это в файле metrika.php ?

	$item_string = '';
    $items_query = vam_db_query("select products_id, products_model, products_name, products_price, final_price, products_quantity from " . TABLE_ORDERS_PRODUCTS . " where orders_id = '" . $order_id . "' order by products_name");
    while ($items = vam_db_fetch_array($items_query)) {
		$category_query = vam_db_query("select p2c.categories_id, cd.categories_name from " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where p2c.products_id = '" . $items['products_id'] . "' AND cd.categories_id = p2c.categories_id AND cd.language_id = '" . (int)$_SESSION['languages_id'] . "'");
		$category = vam_db_fetch_array($category_query);
		
	  $item_string .=  '{'."\n".'id: "' . htmlspecialchars($items['products_id']) . '",'."\n".'name: "' . htmlspecialchars($items['products_name']) . '",'."\n".'price: ' . number_format($items['products_price'],2,'.','') . ','."\n".'quantity: ' . number_format($items['products_quantity']) . ''."\n".'},'."\n";
    }

А выводится так вот :

if (YANDEX_METRIKA == 'true') {

include(DIR_WS_MODULES . 'analytics/metrika.php');
$tracking_code .= '
<script type="text/javascript">
var yaParams = {
	
'.$transaction_string.'	
  goods: 
     [
'.$item_string.'	
      ]
	};
</script>
<div style="display:none;"><script type="text/javascript">
(function(w, c) {
    (w[c] = w[c] || []).push(function() {
        try {
            w.yaCounter' . YANDEX_METRIKA_ID . ' = new Ya.Metrika({id:' . YANDEX_METRIKA_ID . ', enableAll: true,webvisor:true,ut:"noindex",params:window.yaParams||{ }});
        }
        catch(e) { }
    });
})(window, \'yandex_metrika_callbacks\');
</script></div>
<script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript" defer="defer"></script>
<noscript><div><img src="//mc.yandex.ru/watch/' . YANDEX_METRIKA_ID . '" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
		    ';

	$vamTemplate->assign('google_tracking', 'true');
	$vamTemplate->assign('tracking_code', $tracking_code);

}

 

Link to post
Share on other sites
madvolkov

в файле metrika.php сделал так вот :

// ############## "ЭТО ДЛЯ СЕРВИСА retailrocket ###############
$item_string2 = '';
    $items_query1 = vam_db_query("select products_id, products_model, products_name, products_price, final_price, products_quantity from " . TABLE_ORDERS_PRODUCTS . " where orders_id = '" . $order_id . "' order by products_name");
    while ($items = vam_db_fetch_array($items_query1)) {
		$category_query1 = vam_db_query("select p2c.categories_id, cd.categories_name from " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where p2c.products_id = '" . $items['products_id'] . "' AND cd.categories_id = p2c.categories_id AND cd.language_id = '" . (int)$_SESSION['languages_id'] . "'");
		$category1 = vam_db_fetch_array($category_query1);
		
	  $item_string2 .=  '{'."\n".'id: ' . htmlspecialchars($items['products_id']) .  ','."\n".'qnt: ' . number_format($items['products_quantity']) . ','."\n".'price: ' . number_format($items['products_price'],2,'.','') .'},'."\n";
    }

// ############## "ЭТО ДЛЯ СЕРВИСА retailrocket ###############

а в файле checkout_success.php так вот :

<?
include(DIR_WS_MODULES . 'analytics/metrika.php');
?>

<script type="text/javascript">
(window["rrApiOnReady"] = window["rrApiOnReady"] || []).push(function() {
    try {
        rrApi.order({
            transaction: <? echo $order_id?>,
            items: [
            
				<? echo $item_string2;?>
				
				
				 
            ]
        });
    } catch(e) {}
})
</script>

вроде работает )

остался вопрос необходимо загрузить xml файл с товарными позициями как я понимаю для данного сервиса : 

а где в вамшоп такое делается ?

 

а точнее xml или yml файл 

Описание формата XML: https://yandex.ru/support/partnermarket/yml/about-yml.xml

Пример структуры YML для нашей системы: https://retailrocket.omnidesk.ru/knowledge_base/item/66040

Link to post
Share on other sites
madvolkov

спасибо. при запуске вылазит такое вот : 

This page contains the following errors:

error on line 693 at column 82: xmlParseEntityRef: no name

Below is a rendering of the page up to the first error.

ну и не все товары как я понимаю парсятся

 

Link to post
Share on other sites
support
14 минут назад, madvolkov сказал:

спасибо. при запуске вылазит такое вот : 

This page contains the following errors:

error on line 693 at column 82: xmlParseEntityRef: no name

Below is a rendering of the page up to the first error.

ну и не все товары как я понимаю парсятся

 

Смотрите что там у Вас на 693 строка.

Пишет что название не задано.

Link to post
Share on other sites
support
15 минут назад, madvolkov сказал:

в файле market.php всего 346 строк 

Судя по тексту ошибки - нет.

Надо ж в браузере смотреть, открыв адрес http://ваш-магазин.ру/market.php

Скрипт ведь пытается вытунять сгенерированный файл.

Link to post
Share on other sites
madvolkov

Понял . спасибо.

Последний вопрос...в файле checkout_success.php можно ли как то вывести mail пользователя который оформил заказ ?

так вот верно ведь ? 

echo $_SESSION['sc_customers_email_address'];

Link to post
Share on other sites
support
32 минуты назад, madvolkov сказал:

а точнее просто так вот $sc_customers_email_address ?

У Вас в /checkout_success.php уже есть переменная $order со всеми данными заказа.

Просто в checkout_success.php добавьте метку или просто выведите всю информацию, например так:

echo var_dump($order->info);

А затем у же метку для шаблона сделайте с нужными данными через $vamTemplate->assign

и в шаблоне уже вставляйте нужную метку.

 

В общем, смотрите примеры, всё это уже есть.

Например включите модуль оплаты kvitancia, оформите заказ и на странице checkout_success.php будет например кнопка с квитанцией, тоже за основу можно взять.

Link to post
Share on other sites
×
×
  • Create New...