2016-03-15 54 views
0

我與我緊密合作的seo公司告訴我,我需要在我的流星項目的主體標籤之間添加此代碼。如何爲meteor.js添加谷歌再營銷代碼?

<script type="text/javascript"> 
/* <![CDATA[ */ 
var google_conversion_id = 123456789; 
var google_custom_params = window.google_tag_params; 
var google_remarketing_only = true; 
/* ]]> */ 
</script> 
<script type="text/javascript"  src="//www.googleadservices.com/pagead/conversion.js"> 
</script> 
<noscript> 
<div style="display:inline;"> 
<img height="1" width="1" style="border-style:none;" alt=""src="//googleads.g.doubleclick.net/pagead/viewthroughconversion/949352235 /?value=0&amp;guid=ON&amp;script=0"/> 
</div> 
</noscript> 

但是,正如我們所知,腳本標籤在body標籤內不能正確執行。 所以我搜索谷歌找到答案,我發現這個代碼,可以工作,但它是在反應。我怎樣才能將這個反應代碼轉換爲正常的JavaScript,我可以從模板或其他東西中引用。我在想一個onCreated和orRendered函數。

  GoogleTag = React.createClass({ 
       displayName : 'GoogleTag', 
       render(){ 
        var src = ''; 
        if(this.props.type === 'conversion'){ 
         src = _.template('//www.googleadservices.com/pagead/conversion/<%=id%>/?label=<%=label%>&guid=ON&script=0'), 
         src = src({id : this.props.id, label : this.props.label}) 
        } 

        if (this.props.type === 'remarketing') { 
         src = _.template('//googleads.g.doubleclick.net/pagead/viewthroughconversion/<%=id%>/?value=0&guid=ON&script=0'), 
         src = src({id: this.props.id}) 
        } 
        var style = { 
         display : "inline" 
        }, 
        imgStyle = { 
         borderStyle : "none" 
        } 
        return (
         <div style={style}> 
          <img height="1" width="1" style={imgStyle} alt="" src={src}/> 
         </div> 
        ) 
       } 
      }) 

回答

0

廣場

<script type="text/javascript"> 
    var google_conversion_id = 123456789; 
    var google_custom_params = window.google_tag_params; 
    var google_remarketing_only = true; 
</script> 
<script type="text/javascript" src="//www.googleadservices.com/pagead/conversion.js"></script> 
在你的腦袋

,你會被罰款。

流星,你只能有一個<head>在你的項目中定義,只是創建一個名爲head.html客戶端上的文件,並將上面的代碼文件中的body標籤內。

+0

嘿Lieuwe,謝謝爲了您的評論。 我做了你所說的,並將腳本標籤放在頭部,並且我在我的谷歌標籤助理上收到了這個錯誤。 http://s11.postimg.org/olv1wnzb7/Screen_Shot_2016_03_16_at_10_30_50_AM.png – DCastillo

+0

@DCastillo是不是更像是一個警告?我沒有使用Google Tag Assistant的經驗,但我想這是因爲在頭塊中渲染腳本。但Meteor默認會這樣做,所以這不會成爲問題。如果你真的必須把它放在體內,請看一下https://github.com/meteorhacks/meteor-inject-initial(特別是Inject.rawBody函數) –

+0

好的,謝謝,我會試試這個。 – DCastillo

0

首先,刪除您有關於此的任何代碼。沒有自定義書面實現,標準實現將不適用於Meteor。

其次,拿Google給你的代碼塊。扔掉所有的JavaScript和所有的腳本標籤。你不需要它們。

我們將運行「非標準實現」,但它的工作方式與我們所擔心的相同。拿noscript標籤(帶有img標籤的div)內的代碼,我們需要把它放在我們頁面渲染的每個地方。所以,把它放在你的Blaze或React佈局模板中,你應該完成。谷歌會檢測到noscript的實現(他們創建了這個實現,所以它可以爲沒有啓用JavaScript的訪問者工作,但是我們正在黑客攻擊它用於我們的實現),所有Google真正需要看到的是url從img標籤:)

1

您可以使用Google Remarketing library for async actions,並通過直接調用跟蹤功能寫你的元數據調用:

/* remarketingTrack utility */ 

export default function remarketingTrack(data = {}) { 
     try { 
     trackConversion({ 
      google_conversion_id: SOME_ID, 
      google_custom_params: data, 
      google_remarketing_only: true 
     }); 
     } catch (e) { 
     // error 
     } 
} 

/** somewhere in ReactJS component **/ 

    componentDidMount() { 
     remarketingTrack({ 
     flight_originid: XXX, 
     flight_destid: XXX, 
     flight_startdate: date, 
     flight_pagetype: 'home', 
     }); 
    } 

我認爲這是更靈活,巧妙的解決辦法