Implementacja pixela śledzącego

Adrian Adamiec
Adrian Adamiec
April 19, 2017
Implementacja pixela śledzącego

W poniższym artykule opiszę, jak implementować pixel konwersji przez interfejs API w sklepie założonym na platformie Shoplo. Szczegóły użytych metod można znaleźć na stronie dokumentacji tutaj. Zaprezentowany kod został opracowany w oparciu o dostępną bibliotekę do komunikacji z Shoplo API, która jest dostępna pod tym adresem.

Zanim przystąpisz do działania, upewnij się, czy aplikacja posiada odpowiednie uprawnienia do edycji wyglądu sklepu. W tym celu, zaloguj się do swojego konta Partnera i wybierając aplikację z listy, przejdź do jej edycji.

Przedstawione w artykule zadanie ma na celu utworzenie snippet’u, który będzie zawierał znacznik html’owy img oraz podłączenie go do głównego pliku szablonu. Każdy sklep może posiadać wiele szablonów, dlatego należy zainstalować snippet pixel’a śledzącego w każdym z nich.W pierwszym kroku należy pobrać wszystkie szablony zainstalowane w danym sklepie.http://docs.shoplo.com/api/theme#receiveThemes$themes = $shoploApi->theme->retrieve();Następnie w każdym szablonie należy utworzyć nasz snippet pixela śledzącego.http://docs.shoplo.com/api/asset#create$snippetContentData = array("key"=>'snippets/tracking_pixel.tpl',"content"=>$snippetContent);$snippetResponse = $shoploApi->assets->create( $t['id'], $snippetContentData ); Metoda assets->create tworzy nowy snippet lub nadpisuje istniejący. Jest więc stosowana zarówno do jego stworzenia jak i aktualizacji.Po utworzeniu snippetu jesteśmy gotowi do podłączenia go do pliku szablonu głównego o nazwie ‘base.tpl’. Pobieramy zawartość pliku głównego i upewniamy się, czy taki sam kod podłączenia snippetu już nie istnieje.http://docs.shoplo.com/api/asset#receive$productTpl = $shoploApi->assets->retrieve( $t['id'], 'templates/base.tpl' );$tmpContent = $productTpl['asset']['content'];//clean if snippet already plugged$string_formatted = preg_replace('/(<!--tracking_pixel-->)(.*)(<!--tracking_pixel-->)/s', '',$tmpContent);Pozostaje teraz dodanie do zawartości pliku kodu podłączenia naszego snippetu. Warto dodać specjalne komentarze przed i za tym kodem, dzięki czemu w przyszłości będzie nam łatwo odnaleźć go w pliku szablonu. Na koniec aktualizujemy zawartość pliku ‘base.tpl’.$productTplContent = $string_formatted.'<!--tracking_pixel-->{snippet file="tracking_pixel"}<!--tracking_pixel-->';$productTpl['asset']['content'] = $productTplContent;//overwrite content of theme file$productTplResponse = $shoploApi->assets->create( $t['id'], $productTpl['asset'] );

Poniżej prezentuję gotowy przykład wykonanego zadania w języku php:

$snippetContent = '<img src="tracking-pixel-url" />';//retreive all shop themes$themes = $shoploApi->theme->retrieve();if( is_array( $themes ) &&isset( $themes['themes'] ) && $themes['themes'] ){foreach( $themes['themes'] as $t ){$snippetContentData = array("key"=>'snippets/tracking_pixel.tpl',"content"=>$snippetContent);try       {$snippetResponse = $shoploApi->assets->create( $t['id'], $snippetContentData );if( !( is_array( $snippetResponse ) &&isset( $snippetResponse['asset'] ) ) &&isset($snippetResponse['error']) ){$this->validateError($snippetResponse);}}catch ( Exception $e ){echo 'Throw Shoplo Exception: '.$e->getMessage();exit();}try       {//plug into base.tpl theme file           $productTpl = $shoploApi->assets->retrieve($t['id'], 'templates/base.tpl');if( !( is_array( $productTpl ) &&isset( $productTpl['asset'] ) ) &&isset($productTpl['error']) ){$this->validateError($productTpl);}}catch ( Exception $e ){echo 'Throw Shoplo Exception: '.$e->getMessage();exit();}$tmpContent = $productTpl['asset']['content'];//clean if snippet already plugged       $string_formatted = preg_replace('/(<!--tracking_pixel-->)(.*)(<!--tracking_pixel-->)/s', '',$tmpContent); $productTplContent = $string_formatted.'<!--tracking_pixel-->{snippet file="tracking_pixel"}<!--tracking_pixel-->';$productTpl['asset']['content'] = $productTplContent;try       {//overwrite content           $productTplResponse = $shoploApi->assets->create( $t['id'], $productTpl['asset'] );if(  !( is_array( $productTplResponse ) &&isset( $productTplResponse['asset'] ) ) &&isset($productTpl['error']) ){$this->validateError($productTplResponse);}}catch ( Exception $e ){echo 'Throw Shoplo Exception: '.$e->getMessage();exit();} }return true;}[yasr_visitor_votes size="medium"]

przeczytaj także

What’s a Rich Text element?

The rich text element allows you to create and format headings, paragraphs, blockquotes, images, and video all in one place instead of having to add and format them individually. Just double-click and easily create content.

Static and dynamic content editing

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila!

How to customize formatting for each rich text

Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.