1

「注文確認ページ」(購入ページに感謝します)で、私のサイトのマーケティング ピクセルを追跡するための優れたデータ レイヤーを取得したいと考えています。このサイトは、e コマース プラットフォームとして OXID Shop を使用しています。

私は次の設定をしたいと思います:

IF currentPage == 'thankyou':

products_info = '[{id: 'product_id_1', price: 'price_1', quantity: 'quantity_1'},
                  {id: 'product_id_2', price: 'price_2', quantity: 'quantity_2'}]'

ページ変数 "CurrentController" = 'thankyou' の場合、次のコードを使用してバックエンドから直接値を取得しようとしています。これは、1 つの記事の値のみを含む変数に対して簡単に実行できます。

例:

[{if $currentControllerName == "thankyou"}]    

    var dataLayer = [];

    [{assign var="order" value=$oView->getOrder()}]

    dataLayer.push(
                   {email: [{$order->oxorder__oxbillemail->value}]}
                   );

[{/if}]

問題は、products_info 変数の冒頭で述べたような、複数の記事の値を取得する必要がある場合です。

次のコードを試していますが、イテレータを「追加」する方法や、各製品の値を 1 つの変数に送信する方法がわかりません。

[{if $currentControllerName == "thankyou"}]    

var dataLayer = [];

[{assign var="order" value=$oView->getOrder()}]

(
[{foreach from=$orderArticles item="currOrderArticle"}]
[{assign var="currArticle" value=$currOrderArticle->getArticle()}]
[{assign var="currBasePrice" value=$currOrderArticle->getBasePrice()}]

product_info: [{id: [{$currOrderArticle->oxorderarticles__oxartnum->value}], 
                price: [{$currBasePrice->getBruttoPrice()}], 
                quantity: [{$currOrderArticle->oxorderarticles__oxamount->value}]}]


[{/foreach}]
)

[{/if}]
4

1 に答える 1

1

呼び出している Javascript 関数 .push() は、呼び出すたびに項目を dataLayer 配列に追加します。(ドキュメントを参照)

それでは、かごに入っているすべての製品に対して、smarty にその関数の呼び出しをレンダリングさせてみませんか。

[{if $oView->getClassName() == "thankyou"}]

<script>

        var dataLayer = [];

        [{assign var="basket" value=$oView->getBasket()}]

        [{foreach from=$basket->getContents() item=basketitem}]

            [{assign var=itemarticle value=$basketitem->getArticle()}]
            [{assign var="basketitemprice" value=$basketitem->getPrice()}]

            dataLayer.push({ id: [{$itemarticle->oxarticles__oxartnum->value}], price: [{$basketitemprice->getBruttoPrice()}], quantity: [{$basketitem->getAmount()}] });

        [{/foreach}]

</script>

[{/if}]

これにより、製品が JavascriptdataLayer配列に追加されます。

以下も機能するはずであることに注意してください: (サポートされていないバージョンの IE では機能しない可能性があります)

[{if $oView->getClassName() == "thankyou"}]

<script>

    var dataLayer = [

        [{assign var="basket" value=$oView->getBasket()}]

        [{foreach from=$basket->getContents() item=basketitem}]

            [{assign var=itemarticle value=$basketitem->getArticle()}]
            [{assign var="basketitemprice" value=$basketitem->getPrice()}]

            { id: [{$itemarticle->oxarticles__oxartnum->value}], price: [{$basketitemprice->getBruttoPrice()}], quantity: [{$basketitem->getAmount()}] },

        [{/foreach}]

    ];

</script>

[{/if}]

最後に、あなたがやろうとしているのは、Javascript 配列を作成することです (Google タグ マネージャーで読み取ることができます)。これは、Thankyou ページの最終出力 (および完全に有効な Javascript) です。

<script>

    var dataLayer = [];

    dataLayer.push({ id: 3788, price: 24.95, quantity: 1 });           
    dataLayer.push({ id: 1401, price: 129, quantity: 1 });        
    dataLayer.push({ id: 10101, price: 0, quantity: 1 });

</script>

データを dataLayer 変数に追加するために PHP を使用していないことに注意してください。次に、dataLayer 配列を作成する Javascript コード (Smarty/PHP を使用) を作成します (これは、Google タグ マネージャー Javascript で利用できます)。

于 2016-04-12T15:28:31.973 に答える