madvolkov 0 Опубликовано 16 апреля, 2019 Жалоба Share Опубликовано 16 апреля, 2019 Подскажите как настроить ? 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} что ли ? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 16 апреля, 2019 Жалоба Share Опубликовано 16 апреля, 2019 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 } } ?> Ссылка на сообщение Поделиться на другие сайты
madvolkov 0 Опубликовано 16 апреля, 2019 Автор Жалоба Share Опубликовано 16 апреля, 2019 Опа спасибо, сработало ! осталось ещё немного ) на страницах категорий в этом же файле вставить код надо : <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']); ?>); } Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 16 апреля, 2019 Жалоба Share Опубликовано 16 апреля, 2019 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 } ?> Ссылка на сообщение Поделиться на другие сайты
madvolkov 0 Опубликовано 16 апреля, 2019 Автор Жалоба Share Опубликовано 16 апреля, 2019 а как быть с кнопкой добавления в корзину ? она выводится такой вот меткой {$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 нужно установить и в этом случае; Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 16 апреля, 2019 Жалоба Share Опубликовано 16 апреля, 2019 12 минут назад, madvolkov сказал: а как быть с кнопкой добавления в корзину ? она выводится такой вот меткой Судя по примеру кода, надо просто метку ADD_CART_BUTTON обернуть этим кодом и подставить {$PRODUCTS_ID} если в карточке товара или {$module_data.PRODUCTS_ID} если в списке товара внутри категории. Ссылка на сообщение Поделиться на другие сайты
madvolkov 0 Опубликовано 16 апреля, 2019 Автор Жалоба Share Опубликовано 16 апреля, 2019 <p class="button-holder">{literal}<script>onmousedown="try { rrApi.addToBasket({$PRODUCTS_ID}) } catch(e) {}" {$ADD_CART_BUTTON}</script>{/literal}</p> так не работает ( Ссылка на сообщение Поделиться на другие сайты
madvolkov 0 Опубликовано 16 апреля, 2019 Автор Жалоба Share Опубликовано 16 апреля, 2019 а просто пробую вставить метку {$PRODUCT S_ID} в шаблон карточки товара и перестаёт загружаться страница вообще. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 16 апреля, 2019 Жалоба Share Опубликовано 16 апреля, 2019 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> Ссылка на сообщение Поделиться на другие сайты
madvolkov 0 Опубликовано 16 апреля, 2019 Автор Жалоба Share Опубликовано 16 апреля, 2019 капец вставляю так : <p class="button-holder" onmausedown="try {rrApi.addToBasket({$PRODU CTS_ID })} catch(e){}">{$ADD_CART_BUTTON}</p> вообще страница не загружается . контентная часть head и body пустые *( Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 16 апреля, 2019 Жалоба Share Опубликовано 16 апреля, 2019 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> Может просто смарти не может разобрать кучу этих скобок правильно. Ссылка на сообщение Поделиться на другие сайты
madvolkov 0 Опубликовано 16 апреля, 2019 Автор Жалоба Share Опубликовано 16 апреля, 2019 заработало СПС Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 16 апреля, 2019 Жалоба Share Опубликовано 16 апреля, 2019 4 минуты назад, madvolkov сказал: заработало СПС Не за что Ссылка на сообщение Поделиться на другие сайты
madvolkov 0 Опубликовано 16 апреля, 2019 Автор Жалоба Share Опубликовано 16 апреля, 2019 и последний шаг : На финальной странице оформления заказа (на которой пользователю сообщают о том, что заказ сформирован, благодарят за покупку и так далее) необходимо установить обработчик совершения транзакции: Копировать <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 ? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 16 апреля, 2019 Жалоба Share Опубликовано 16 апреля, 2019 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 и количество, и цена. Ссылка на сообщение Поделиться на другие сайты
madvolkov 0 Опубликовано 16 апреля, 2019 Автор Жалоба Share Опубликовано 16 апреля, 2019 Это вот это в файле 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); } Ссылка на сообщение Поделиться на другие сайты
madvolkov 0 Опубликовано 16 апреля, 2019 Автор Жалоба Share Опубликовано 16 апреля, 2019 в файле 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 Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 16 апреля, 2019 Жалоба Share Опубликовано 16 апреля, 2019 11 минут назад, madvolkov сказал: а точнее xml или yml файл http://ваш-магазин.ру/market.php Ссылка на сообщение Поделиться на другие сайты
madvolkov 0 Опубликовано 16 апреля, 2019 Автор Жалоба Share Опубликовано 16 апреля, 2019 спасибо. при запуске вылазит такое вот : 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. ну и не все товары как я понимаю парсятся Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 16 апреля, 2019 Жалоба Share Опубликовано 16 апреля, 2019 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 строка. Пишет что название не задано. Ссылка на сообщение Поделиться на другие сайты
madvolkov 0 Опубликовано 16 апреля, 2019 Автор Жалоба Share Опубликовано 16 апреля, 2019 в файле market.php всего 346 строк Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 16 апреля, 2019 Жалоба Share Опубликовано 16 апреля, 2019 15 минут назад, madvolkov сказал: в файле market.php всего 346 строк Судя по тексту ошибки - нет. Надо ж в браузере смотреть, открыв адрес http://ваш-магазин.ру/market.php Скрипт ведь пытается вытунять сгенерированный файл. Ссылка на сообщение Поделиться на другие сайты
madvolkov 0 Опубликовано 16 апреля, 2019 Автор Жалоба Share Опубликовано 16 апреля, 2019 Понял . спасибо. Последний вопрос...в файле checkout_success.php можно ли как то вывести mail пользователя который оформил заказ ? так вот верно ведь ? echo $_SESSION['sc_customers_email_address']; Ссылка на сообщение Поделиться на другие сайты
madvolkov 0 Опубликовано 16 апреля, 2019 Автор Жалоба Share Опубликовано 16 апреля, 2019 а точнее просто так вот $sc_customers_email_address ? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 16 апреля, 2019 Жалоба Share Опубликовано 16 апреля, 2019 32 минуты назад, madvolkov сказал: а точнее просто так вот $sc_customers_email_address ? У Вас в /checkout_success.php уже есть переменная $order со всеми данными заказа. Просто в checkout_success.php добавьте метку или просто выведите всю информацию, например так: echo var_dump($order->info); А затем у же метку для шаблона сделайте с нужными данными через $vamTemplate->assign и в шаблоне уже вставляйте нужную метку. В общем, смотрите примеры, всё это уже есть. Например включите модуль оплаты kvitancia, оформите заказ и на странице checkout_success.php будет например кнопка с квитанцией, тоже за основу можно взять. Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения