madvolkov 0 Posted April 16, 2019 Report Share Posted April 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} что ли ? Link to post Share on other sites
support 447 Posted April 16, 2019 Report Share Posted April 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 } } ?> Link to post Share on other sites
madvolkov 0 Posted April 16, 2019 Author Report Share Posted April 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']); ?>); } Link to post Share on other sites
support 447 Posted April 16, 2019 Report Share Posted April 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 } ?> Link to post Share on other sites
madvolkov 0 Posted April 16, 2019 Author Report Share Posted April 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 нужно установить и в этом случае; Link to post Share on other sites
support 447 Posted April 16, 2019 Report Share Posted April 16, 2019 12 минут назад, madvolkov сказал: а как быть с кнопкой добавления в корзину ? она выводится такой вот меткой Судя по примеру кода, надо просто метку ADD_CART_BUTTON обернуть этим кодом и подставить {$PRODUCTS_ID} если в карточке товара или {$module_data.PRODUCTS_ID} если в списке товара внутри категории. Link to post Share on other sites
madvolkov 0 Posted April 16, 2019 Author Report Share Posted April 16, 2019 <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 0 Posted April 16, 2019 Author Report Share Posted April 16, 2019 а просто пробую вставить метку {$PRODUCT S_ID} в шаблон карточки товара и перестаёт загружаться страница вообще. Link to post Share on other sites
support 447 Posted April 16, 2019 Report Share Posted April 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> Link to post Share on other sites
madvolkov 0 Posted April 16, 2019 Author Report Share Posted April 16, 2019 капец вставляю так : <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 447 Posted April 16, 2019 Report Share Posted April 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> Может просто смарти не может разобрать кучу этих скобок правильно. Link to post Share on other sites
madvolkov 0 Posted April 16, 2019 Author Report Share Posted April 16, 2019 заработало СПС Link to post Share on other sites
support 447 Posted April 16, 2019 Report Share Posted April 16, 2019 4 минуты назад, madvolkov сказал: заработало СПС Не за что Link to post Share on other sites
madvolkov 0 Posted April 16, 2019 Author Report Share Posted April 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 ? Link to post Share on other sites
support 447 Posted April 16, 2019 Report Share Posted April 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 и количество, и цена. Link to post Share on other sites
madvolkov 0 Posted April 16, 2019 Author Report Share Posted April 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); } Link to post Share on other sites
madvolkov 0 Posted April 16, 2019 Author Report Share Posted April 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 Link to post Share on other sites
support 447 Posted April 16, 2019 Report Share Posted April 16, 2019 11 минут назад, madvolkov сказал: а точнее xml или yml файл http://ваш-магазин.ру/market.php Link to post Share on other sites
madvolkov 0 Posted April 16, 2019 Author Report Share Posted April 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. ну и не все товары как я понимаю парсятся Link to post Share on other sites
support 447 Posted April 16, 2019 Report Share Posted April 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 строка. Пишет что название не задано. Link to post Share on other sites
madvolkov 0 Posted April 16, 2019 Author Report Share Posted April 16, 2019 в файле market.php всего 346 строк Link to post Share on other sites
support 447 Posted April 16, 2019 Report Share Posted April 16, 2019 15 минут назад, madvolkov сказал: в файле market.php всего 346 строк Судя по тексту ошибки - нет. Надо ж в браузере смотреть, открыв адрес http://ваш-магазин.ру/market.php Скрипт ведь пытается вытунять сгенерированный файл. Link to post Share on other sites
madvolkov 0 Posted April 16, 2019 Author Report Share Posted April 16, 2019 Понял . спасибо. Последний вопрос...в файле checkout_success.php можно ли как то вывести mail пользователя который оформил заказ ? так вот верно ведь ? echo $_SESSION['sc_customers_email_address']; Link to post Share on other sites
madvolkov 0 Posted April 16, 2019 Author Report Share Posted April 16, 2019 а точнее просто так вот $sc_customers_email_address ? Link to post Share on other sites
support 447 Posted April 16, 2019 Report Share Posted April 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 будет например кнопка с квитанцией, тоже за основу можно взять. Link to post Share on other sites
Recommended Posts