Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Recommended Posts

Здравствуйте)

 

Я в OpenCart только начал работать и имеется задание : интегрировать yandex e-commerce на сайт интернет магазина.

 

Что для этого понадобилось?

 

1. Скрипт yandex metrica - я его установил в header.tpl, для загрузки на все страницы сайта | Работает!

2. Полазив форумы и прочее я нашел такой модуль (дополнение) как VQMod, который уже был добавлен на сайт и написал для него xml файл и назвал его yandex_e-commerce.xml, далее загрузил его через VQMod Manager и посмотрел логи ошибок - ошибок не было.

 

Как известно Yandex E-commerce поддерживает 4 вида скриптов:

 

1 - Добавление в корзину

2 - Удаление из корзины

3 - Просмотр карточки товара

4 - Оформление заказа

 

Все эти скрипты срабатывают при определенных действиях.

вот ссылка на доки https://yandex.ru/support/metrika/data/e-commerce.xml

 

исходя из документации я написал однотипный xml файл с таким кодом:

 

<modification>
<id>Yandex E-Commerce.</id>
  <version>1.0</version>
  <vqmver>2.0</vqmver>
  <author>autor</author> 
    <file name="catalog/view/theme/*/template/product/product.tpl">
      <operation>
        <search position="before"><![CDATA[<?php echo $content_bottom; ?>]]></search>
        <add><![CDATA[
          <script type=text/javascript">
            dataLayer.push({
            "ecommerce": {
            "detail": {
            "products": [
            {
            "id": '<?php echo $product['product_id]; ?>',
            "name" : '<?php echo $product['product_name']; ?>',
            "price": '<?php echo $product['product_price']; ?>',
            "brand": "Мебель",
            "category": '<?php echo $product['product_category']; ?>',
            }
            ]
            }
            }
            });
          </script>
          ]]></add>
        </operation>
      </file>
      <file name="catalog/view/theme/*/template/product/product.tpl">
        <operation>
          <search position="before"><![CDATA[<?php echo $content_bottom; ?>]]></search>
          <add><![CDATA[
            <script type=text/javascript">
             $('.big').click(function(){
             dataLayer.push({
             "ecommerce": {
             "add": {
             "products": [
             {
             "id": '<?php echo $product['product_id]; ?>',
             "name": '<?php echo $product['product_name']; ?>',
             "price": '<?php echo $product['product_price']; ?>',
             "brand": Мебель",
             "category": '<?php echo $product['product_category']; ?>',
             "quantity": '<?php echo $product['product_quantity']; ?>'
             }
             ]
             }
             }
             });
             });
           </script>
           ]]></add>
         </operation>
       </file>
     </modification>
 
 
В поля id - мне нужно получить ID товара который я смотрю
В поле name - имя товара который я смотрю и так далее...
 
В чем проблема?
 
Проблема в том что КОД добавляется на сайт НО он не работает то есть не заполняются поля товара для e-commerce
 
в общем вот что видно в коде сайта после внедрения xml перед выводом "$content_bottom;"
 
 

<script type="text/javascript">  

dataLayer.push({  

"ecommerce":{  

"detail": {  

"products": [   {  

"id": '',  

"name" : '',  

"price": '',  

"brand": " Мебель",  

"category": '',  

}  

]  

}  

}  

});  

</script>          

 

<script type="text/javascript">  

$('.big').click(function(){  

dataLayer.push({  

"ecommerce": {  

"add": {  

"products": [   {  

"id": '',  

"name": '',  

"price": '',  

"brand": "Мебель",  

"category": '',  

"quantity": ''  

}  

]  

}  

}  

});  

});  

</script>

 

Подскажите пожалуйста как сделать отправку данных о товаре в Yandex E-Commerce, ведь код внедряется и расположение после кода Yandex Metrica...
Может я как то не так получаю ID товара и прочие значения?..
 
Страница на которую это внедряется обычная страница просмотра продукта, где не в общем все продукты или товары магазина а где сама карточка товара с подробной информацией о товаре
 
Я в OpenCart еще плаваю..
Змінено користувачем Nyiann
Надіслати
Поділитися на інших сайтах


У Вас как минимум все переменные неправильно указаны:

<?php echo $product['product_id']; ?> заменить на <?php echo $product_id; ?>, 

<?php echo $product['product_name']; ?> заменить на <?php echo $heading_title; ?>, 

<?php echo $product['product_price']; ?> на <?php if (!$special) { ?><?php echo $price; ?><?php } else { ?><?php echo $special; ?><?php } ?>,

мебель на  <?php echo $manufacturer; ?>

Надіслати
Поділитися на інших сайтах


У Вас как минимум все переменные неправильно указаны:

<?php echo $product['product_id']; ?> заменить на <?php echo $product_id; ?>, 

<?php echo $product['product_name']; ?> заменить на <?php echo $heading_title; ?>, 

<?php echo $product['product_price']; ?> на <?php if (!$special) { ?><?php echo $price; ?><?php } else { ?><?php echo $special; ?><?php } ?>,

мебель на  <?php echo $manufacturer; ?>

<search position="before"><![CDATA[<?php echo $content_bottom; ?>]]></search>
        <add><![CDATA[
          <script type=text/javascript">
            window.dataLayer.push({
            "ecommerce": {
            "detail": {
            "products": [
            {
            "id": '<?php echo $product_id; ?>',
            "name" : '<?php echo $product_info['name]; ?>',
            "price": '<?php echo $product_info['price']; ?>',
            "brand": '<?php echo $manufacturer; ?>',
            "category": '<?php echo $category_info; ?>',
            }
            ]
            }
            }
            });
          </script>
          ]]></add>
        </operation>
      </file>
      <file name="catalog/view/theme/theme001/template/product/product.tpl">
        <operation>
          <search position="before"><![CDATA[<?php echo $content_bottom; ?>]]></search>
          <add><![CDATA[
            <script type=text/javascript">
             $('.big').click(function(){
             window.dataLayer.push({
             "ecommerce": {
             "add": {
             "products": [
             {
             "id": '<?php echo $product_id; ?>',
             "name": '<?php echo  $product_info['name]; ?>',
             "price": '<?php echo $product_info['price'];?>',
             "brand": '<?php echo $manufacturer; ?>',
             "category": '<?php echo $category_info; ?>',
             "quantity": '<?php echo $product_info['quantity']; ?>'
             }
             ]
             }
             }
             });
             });
           </script>
           ]]></add>
         </operation>
 
я как раз до вашего ответа переделал получение значений но вот снова у меня такая проблема не знаю как получить категорию:с
 
И добавил  window.dataLayer.push({ в скрипте который встраивается.
 
Но пробую сделать что то, в просмотре кода сайта там все значения встают туда куда надо, т.е до создания поста они пустые были теперь заполены, кроме категории, но все еще не приходит информация о товаре или совершенных действиях с товаром (к примеру положить в корзину) в Yandex Metrica..
 
Скрипт Метрики поставил правильно, указал ID и добавил ecommerce, код находится наверху сайта т.е весь скрипт для товаров находится ниже yandex metrica code.
 
Мб я что то не так поставил?
или сама метрика так долго данные переваривает и выдаст мне их к примеру через 5ч?
 
ничего не пойму, а вот еи говорить об обычных Целях Метрики то они работают идеально..
Надіслати
Поділитися на інших сайтах


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

И у кнопки "В корзину" класс ckass="big"?

ам, ну да я с кабинета, где находится Яндекс метрика скопировал сгенерированый код js для добавления на сайт чтобы яндекс метрика и все ее функции работали I8qb_JObwDpqa_ib3o-4klqEZ_8.png

Код который как пример дают на вики по e-commerce в яндексе, вот его я получил и добавил в header.tpl и он добавляется на все страницы сайта, а вот xml внедряется на определенные страницы и выполняет определенные действия с товаром (добавление удаление просмотр покупка).

 

Да,у кнопки "В Корзину" (Купить) имеется класс "big", такой класс только у этой кнопки

Надіслати
Поділитися на інших сайтах


Ну да нужно так, я смотрел это дополнение, но оно платное а я в программировании чуточку да разбираюсь, но с cms opencart щас вот столкнулся и надо интегрировать e-commerce. 

 

По идее я вроде сделал все как надо, как требует яндекс

 

- Вставить скрипт метрики в хедер или в футер но яндекс советует в хедер, и код e-commerce располагать ниже кода метрики.

 

Я так и сделал но почему то не присылается ничего в метрику..

Змінено користувачем Nyiann
Надіслати
Поділитися на інших сайтах


В общем, сам спросил и сам разобрался

 

Все что выше я писал работает и заполняется как надо, проблема была в 1 строке в скрипте xml который внедряется на сайт

 

В общем, после <script type="text/javascript"> , вставляем код window.dataLayer = window.dataLayer || [];

 

то есть будет вот так: 

 

<script type="text/javascript">

           window.dataLayer = window.dataLayer || [];

            window.dataLayer.push({
            "ecommerce": {
            "detail": {
            "products": [
            {....
</script>
 
И такой код вставлять надо в каждый скрипт где идет вызов  window.dataLayer.push({
 
с:
 
Надеюсь данная тема кому нибудь поможет в дальнейшем) 
Змінено користувачем Nyiann
Надіслати
Поділитися на інших сайтах


Итого, приведу полный пример xml файла,

 

<modification>
<id>Yandex E-Commerce.</id>
  <version>1.0</version>
  <vqmver>2.0</vqmver>
  <author>*</author> 
  <file name="catalog/view/theme/*/template/product/product.tpl">
    <operation>
      <search position="before"><![CDATA[<?php echo $content_bottom; ?>]]></search>
      <add><![CDATA[
        <script type="text/javascript">
          window.dataLayer = window.dataLayer || []; 
          window.dataLayer.push({
          "ecommerce": {
          "detail": {
          "products": [
          {
          "id": '<?php echo $product_id; ?>',
          "name" : '<?php echo $product_info['name']; ?>',
          "price": '<?php echo $product_info['price']; ?>',
          "brand": '<?php echo $manufacturer; ?>',
          "category": '<?php echo $category; ?>',
          }
          ]
          }
          }
          });
        </script>
        ]]></add>
      </operation>
    </file>
    <file name="catalog/view/theme/*/template/product/product.tpl">
      <operation>
        <search position="before"><![CDATA[<?php echo $content_bottom; ?>]]></search>
        <add><![CDATA[
          <script type="text/javascript">
            window.dataLayer = window.dataLayer || []; 
            $('.big').click(function(){
            window.dataLayer.push({
            "ecommerce": {
            "add": {
            "products": [
            {
            "id": '<?php echo $product_id; ?>',
            "name": '<?php echo  $product_info['name']; ?>',
            "price": '<?php echo $product_info['price'];?>',
            "brand": '<?php echo $manufacturer; ?>',
            "category": '<?php echo $category; ?>',
            "quantity": '<?php echo $product_info['quantity']; ?>'
            }
            ]
            }
            }
            });
            });
          </script>
          ]]></add>
        </operation>
      </file>
    </modification>
 
 
;)
Надіслати
Поділитися на інших сайтах


зачем убивать время в несколько дней когда модулю цена копейки?
если ток от делать нечего)

Надіслати
Поділитися на інших сайтах


  • 1 year later...
3 часа назад, bioray сказал:

А можно ссылку?

выше давал, оно уже бесплатное

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.