1. Forum używa plików Cookies. Dowiedz się więcej o celu ich używania i możliwości zmiany ustawień Cookies w przeglądarce. Czytaj więcej...

ROZWIĄZANE Kod JS dla FaceBook Pixel (blokada wejścia do koszyka, jeśli jest on pusty)

Dyskusja w 'Sklep internetowy eSklep' rozpoczęta przez użytkownika gielo2, 12 Maj 2016.

  1. gielo2

    gielo2 Zaawansowany

    Wiadomości:
    164
    Docenione treści:
    22
    Gdzie mam umieścić kod w JS dla Facebook Pixel, aby działał on prawidłowo? Gdzie go nie umieszczę w plikach .tpl to generuje mi błąd, jak umieszczam korzystając z pola Javascript w panelu admina sklepu jest to samo. Mamy ten kod na innych stronach (nie opartych na Clickshop) i działa on prawidłowo, tylko z ClicK Shop jest problem, więc kod jet prawidłowy na 100%. Ten kod ma być na wszystkich podstronach serwisu

    Kolejna sprawa, to jak kod JS umieścić dla wybranej podstrony sklepu? np. http://www.sklep.platinumfitness.pl/pl/p/Matrix-kreatynowy-Creatine-Z3-160kaps-Beltor/452

    Poniżej kody jakie muszę zaimplementować na sklepie. ID zastąpione xxxx

    Dla każdej podstrony sklepu:

    Kod:
    <script>
    !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
    n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
    n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
    t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
    document,'script','https://connect.facebook.net/en_US/fbevents.js');
    
    fbq('init', 'xxxxxxxxxxxxxxx');
    fbq('track', "PageView");</script>
    <noscript><img height="1" width="1" style="display:none"
    src="https://www.facebook.com/tr?id=164529210611950&ev=PageView&noscript=1"
    /></noscript>
    
    Kod dla wybranej podstrony sklepu np. karty zakupowej produktu
    
    <script>
    !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
    n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
    n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
    t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
    document,'script','https://connect.facebook.net/en_US/fbevents.js');
    
    fbq('init', 'xxxxxxxxxxxxxxx);
    fbq('track', 'ViewContent');
    </script>
    <noscript><img height="1" width="1" style="display:none"
    src="https://www.facebook.com/tr?id=164529210611950&ev=PageView&noscript=1"
    /></noscript>
     
  2. TheL

    TheL @Lider VIP Beta-tester

    Wiadomości:
    2 403
    Docenione treści:
    535
    umieszczaj we własnym kodzie JS ale bez znaczników <script></script> i bez całości noscript.
     
  3. gielo2

    gielo2 Zaawansowany

    Wiadomości:
    164
    Docenione treści:
    22
    No faktycznie bez tego kodu zawartego w noscript działa (bez <script></script> to umieszczałem tam:) ) Teraz tylko może jeszcze jakiś pomysł jak ten drugi kod co podałem dodać do wybranych podstron np. samych podstron z produktami albo tylko dla wybranych produktów ?.
     
  4. TheL

    TheL @Lider VIP Beta-tester

    Wiadomości:
    2 403
    Docenione treści:
    535
    wyłącz edytor i dodaj do opisu produktu :)
     
  5. gielo2

    gielo2 Zaawansowany

    Wiadomości:
    164
    Docenione treści:
    22
    Jeśli to zadziała to ok. Prawdę mówiąc sam jeszcze nie kombinowałem, z tym drugim kodem :] Rozumiem, że jeśli podobny kod JS zamieszczę w opisie podstrony co się pokazuje po dokonaniu zakupów w sklepie (ma zbierać statystyki zakupów) to z tym także nie powinno być problemów?

    Sorki za takie może banalne pytania ale wolę się dowiedzieć za wczasu, bo trochę mi się góra irytuje jak sklep dostaje czkawki gdy coś co powinno zadziałać, jednak nie działa :].
     
  6. TheL

    TheL @Lider VIP Beta-tester

    Wiadomości:
    2 403
    Docenione treści:
    535
    ja uważam, że sklep działa, ale trzeba uważać z modyfikacjami :)
    teoretycznie powinno to zadziałać.
     
  7. gielo2

    gielo2 Zaawansowany

    Wiadomości:
    164
    Docenione treści:
    22
    Mam jeszcze jeden problem związany z tym FB Pixel i clickshop, otóż potrzebuję zamieścić kod, aby zbierał dane z dodania produktu do koszyka. Kod oczywiście w JS jak podany powyżej różniący się jedną zmienną. Nie może być to kod karty koszyka, bo on będzie zliczał wejścia w pusty koszyk, musi byćto dodanie do koszyka, czyli to okienko w ajaksie najlepiej co się pojawia po dodaniu produktu do koszyka. Jakieś pomysły gdzie można umieścić ten kod? Kod nie może się pojawiać z wiadomych względów na wszystkich podstronach sklepu.
     
  8. Grzesiek

    Grzesiek Centrum Pomocy home.pl

    Wiadomości:
    3 660
    Docenione treści:
    333
  9. gielo2

    gielo2 Zaawansowany

    Wiadomości:
    164
    Docenione treści:
    22
    Tylko, że w tym przykładzie to kod znajduje się bezpośrednio w koszyku, a to jak pisałem będzie go zliczało nawet jak koszyk jest pusty. Ja potrzebuję zliczanie podczas dodania produktu do koszyka czyli najlepiej odnośnie tego okienka co się wyświetla po dodaniu produktu, pokliknięciu w button do koszyka, jeszcze przezd wybraniem złuż zamówienie lub kontynuuj zakupy. Chodzi dokładnie o to aby zliczac akcje dodania do koszyka a nie wyświetlania samego koszyka, który może być i pusty.
     
  10. gielo2

    gielo2 Zaawansowany

    Wiadomości:
    164
    Docenione treści:
    22
    Tak jeszcze pomyślałem że jakąś opcją jest mozłiwość zablokowania możłiwości wyświetlania koszyka jak nie ma w nim produktów. Chodzi o to aby wtedy nie bylo możliwości kliknięca w koszyk. Da się to jakoś prosto zrobić ?

    PS.
    Dobra problem ten już rozwiązałem przeprogramowując całkowicie to menu koszyk tak, aby do koszyka można było wejść jedynie gdy zawiera jakieś produkty :)

    Został mi jeszcze jeden kod do dodania, z którym nie powinno być problemu jak sądzę i jak wszystko będzie ok, to temat będzie do zamknięcia.
     
    Ostatnia modyfikacja: 19 Maj 2016
    Grzesiek i Mariusz lubią to.
  11. Mariusz

    Mariusz pomoc.home.pl Moderator forum

    Wiadomości:
    3 087
    Docenione treści:
    302
    Bardzo ciekawa modyfikacja. Czy możemy liczyć, że podzielisz się taką informacją na forum? :oops:

    Taka modyfikacja może się przydać dla potomnych. Możliwość blokady wejścia do koszyka, gdy jest on pusty, jest bardzo ciekawą modyfikacją, która może być przydatna przy wielu przypadkach.
     
  12. TheL

    TheL @Lider VIP Beta-tester

    Wiadomości:
    2 403
    Docenione treści:
    535
    a co jeśli ktoś wejdzie bezpośrednio na adres koszyka ?:D
     
  13. gielo2

    gielo2 Zaawansowany

    Wiadomości:
    164
    Docenione treści:
    22
    Tak modyfikacją się podzielę. Co do bezpośredniego wejścia to niestety tego nie da się przeskoczyć jako że ta opcja musi działać w przypadku usunięcia produktów z koszyka (tu jednak produkty były dodane, więc zliczenie tego jest jak najbardziej prawidłowe). Zakładam jednak, że mało kto, o ile będzie, wpisywał ręcznie adres pustego koszyka.

    Poniżej modyfikacja

    Do podmiany w pliku body_head.tpl od linii 72 zaraz pod {dynamic} zawartość <div></div>
    Kod:
    <div class="basket right{if 0 == $user->basket->countProducts()} empty-basket{/if}">
                                        {if 0 == $user->basket->countProducts()}
                                <a href="/" title="{translate key='Cart'}" class="count">
                                    <img src="{baseDir}/public/images/1px.gif" alt="" class="px1">
                                        <span class="countlabel">
                                            <span>{translate key="Cart"}:</span>
                                            <b>
                                                 ({translate key="empty"})
                                            </b>
                                        </span>
                                </a>
                                        {else}
                                <a href="{route key='basket'}" title="{translate key='Cart'}" class="count">
                                    <img src="{baseDir}/public/images/1px.gif" alt="" class="px1">
                                <span class="countlabel">
                                    <span>{translate key="Cart"}:</span>
                                            <b class="sum">{currency value=$user->basket->sumProducts(false)}</b>
                                            <b class="count">(<span>{$user->basket->countProducts()}</span>)</b>
                                </span>
                                </a>
                                        {/if}
    
                        </div>

    Kilka uwag. Kod oczywiście można bardziej dopracować między innymi przenosząc klasę formatującą z url do np. <span class="count"> Mi jednak zależało na czasie i nie chciało się już dalej przerabiać tego kawałka kodu. Można także całkowicie zablokować pusty koszyk ale uważam, że nie warto, bo jest on używany jak wspomniałem po usunięciu produktu z koszyka i dobrze jakby informacja jaka się tam pojawia po jego usunięciu została, aby klient wiedział, że operacja się powiodła.
     
    Mariusz lubi to.
  14. Słoik

    Słoik Znawca

    Wiadomości:
    246
    Docenione treści:
    26
    Walczę teraz z dodaniem pixela AddToCart. Chciałbym aby działał po kliknięciu przycisku dodaj do koszyka (a nie po otwarciu jego strony). FB na stronie https://developers.facebook.com/doc...product-ads/product-audiences/v2.8#setuppixel podaje takie info:
    Kod:
    If the event needs to be fired on button click and there is no separate page that loads:
    
    
    <!-- The below method uses jQuery, but that is not required -->
    
    <button id="addToCartButton">Add To Cart</button>
    <!-- Add event to the button's click handler -->
    
    <script type="text/javascript">
      $( '#addToCartButton' ).click(function() {
        fbq('track', 'AddToCart', {
          content_ids: ['1234'],
          content_type: 'product',
          value: 2.99,
          currency: 'USD'
        }); 
      });
    </script>
    Jak zaimplementować powyższe i jak powinien wyglądać kod dla zliczania produktów (content_ids:) w koszyku?

    Dla widoku kategorii (product/tableofproducts.tpl) mam działający kod:
    Kod:
    {literal}
    <script>   
    fbq('track', 'ViewCategory', {
    content_ids: {/literal}[{foreach from=$products item=x}'{$x->getIdentifier()}',{/foreach}]{literal},
    content_type: 'product',
    currency: 'PLN'
    });
    </script>
    {/literal}
    Działa ale bez value, nie mogę dojść jak zsumować poszczególne wartości:
    Kod:
    value: {/literal}{foreach from=$products item=product name=prodlist}{$product->stock->stock->price},{/foreach}{literal}
    gdyż pixel chce mieć sumę, a nie jak w tagu Google pojedyncze wartości.

    Dla widoku produktu (product/index.tpl):
    Kod:
    {literal}
    <script>
    fbq('track', 'ViewContent', {
    content_ids: '{/literal}{$product->product->product_id}{literal}',
    content_type: 'product',
    value: {/literal}{if $product->specialOffer}{currency float=true value=$product->defaultStock->getSpecialOfferPrice()}{else}{currency float=true value=$product->defaultStock->getPrice()}{/if}{literal},
    currency: 'PLN'
    });
    </script>
    {/literal}
    Tu wszystko ładnie działa...

    Czyli na chwilę obecną potrzebuje info jak zaimplementować AddToCart dla przycisku dodaj do koszyka (onclick)
    oraz jak obliczać sumę produktów w koszyku.

    Dla Purchase (integracje własne) mam:
    Kod:
    <script>
    fbq('track', 'Purchase', {
    content_ids: {products} '{products.product_id}', {/products}
    content_type: 'product',
    value: {float_sum_noship},
    currency: 'PLN'
    });
    </script>
    Tylko jeszcze do końca nie sprawdziłem jego poprawności.
    Czy ktoś może pomóc?
     
  15. Słoik

    Słoik Znawca

    Wiadomości:
    246
    Docenione treści:
    26
    Jeszcze dodam, że Shoper ma aplikację dla Pixela, więc home.pl zostaje w tyle :)
     
  16. Słoik

    Słoik Znawca

    Wiadomości:
    246
    Docenione treści:
    26
    Działający u mnie kod pixela Purchase:
    Kod:
    <script>
    fbq('track', 'Purchase', {
    content_ids: [{products}'{products.product_id}',{/products}],
    content_type: 'product',
    value: {float_sum_noship},
    currency: 'PLN'
    });
    </script>
    Jeżeli ktoś wczytałby się w post #14 i odpowiedział głównie na temat implementacji pixela AddToCart na kliknięcie "Do koszyka"...
     
    Mariusz lubi to.
  17. Słoik

    Słoik Znawca

    Wiadomości:
    246
    Docenione treści:
    26
    Podnoszę temat, czy może mam założyć nowy wątek?
     
  18. Mariusz

    Mariusz pomoc.home.pl Moderator forum

    Wiadomości:
    3 087
    Docenione treści:
    302
    @Słoik napisz proszę o tym w nowym wątku, opisz w nim proszę wszystko dokładnie oraz podaj proszę link do wskazanego przez Ciebie posta. Postaram się skonsultować opisaną przez Ciebie kwestie ze specjalistami ds. Click Shop.
     

Poleć forum znajomym