2013-04-09 10 views
7

एम्बर (हैंडलबार) टेम्पलेट में Google AdSense बैनर शामिल करने का उचित तरीका क्या है? मैं एक राय यह है कि इस तरह दिखता है के लिए एक टेम्पलेट है कहते हैं:एम्बर टेम्पलेट और Google AdSense

<script type="text/x-handlebars" data-template-name="myPageWithBanner"> 
    <div id="mainContent"> 
    Lorem ipsum main content 
    </div> 
    <div id="banner"> 
    //Normally I would insert a script tag here, but that is not possible 
    </div> 
</script> 

मैं पूर्व संकलित टेम्पलेट का उपयोग कर कोड से ऐसा करने की जरूरत है, या वहाँ एक रास्ता मैं के बारे में पता नहीं कर रहा हूँ है?

उत्तर

3

मेरे पास Google AdSense खाता नहीं है, इसलिए मैं इसका परीक्षण नहीं कर सकता। लेकिन वहाँ कई प्रमुख समस्याओं यहां हैं:

  1. आप एक Handlebars टेम्पलेट के अंदर एक <script> टैग, भले ही नहीं आप CDATA का उपयोग नहीं हो सकती।
  2. Google AdSense को AdSense पृष्ठ को आपके पृष्ठ में वर्बैटिम दिखाई देने की आवश्यकता है, या यह एक TOS उल्लंघन है।
  3. this StackOverflow answer के अनुसार, AJAX साइटों पर AdSense इस समय खराब रूप से समर्थित है।
  4. Google AdSense क्रॉलर आपके पृष्ठ पर कोई भी सामग्री नहीं देख पाएगा, इसलिए मुझे संदेह है कि विज्ञापन-लक्ष्यीकरण काम करने जा रहा है। लेकिन कुछ चीजों के लिए नीचे देखें जो क्रॉलर की मदद कर सकता है।

लेकिन मुझे सादगी के लिए, मान लीजिए कि आप Google के साथ सीधे TOS मुद्दों पर चर्चा कर सकते हैं, और मैं तकनीकी समस्याओं को हल करने का प्रयास करूंगा।

window.App = Ember.Application.create(); 

// Explicitly declare the view class for our application view. 
App.ApplicationView = Ember.View.extend({ 
    // Called once the view is rendered. 
    didInsertElement: function() { 
     $('#ads-load').appendTo("#ads").css("display", "block"); 
    } 
}); 
: फिर

<script type="text/x-handlebars"> 
    <h1>Ember AdSense</h1> 
    {{outlet}} 
    <div id="ads"></div> 
</script> 

<script type="text/x-handlebars" data-template-name="index"> 
    <p>Hello, world!</p> 
</script> 

<div id="ads-load" style="display: none"> 

<!-- 
    Apparently this needs to appear verbatim, exactly as Google gave it to 
    you, or it's a TOS violation. 
--> 

<script type="text/javascript"><!-- 
google_ad_client = "ca-pub-XXXXXXXXXX"; 
/* Test Ad */ 
google_ad_slot = "XXXXXX"; 
google_ad_width = 250; 
google_ad_height = 250; 
//--> 
</script> 
<script type="text/javascript" 
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> 
</script> 

</div> 

जब हमारे मुख्य टेम्पलेट लोड, हम अपने आवेदन टेम्पलेट में विज्ञापन स्थानांतरित करने के लिए jQuery का उपयोग करें: सबसे पहले, पर this StackOverflow answer आधारित है, यहाँ एक संभव समाधान है कि आप शब्दशः गूगल की स्क्रिप्ट को सर्व करने की अनुमति देता है है

Google क्रॉलर आपको सामग्री देखने की अनुमति देने के लिए, Google के पास official advice for AJAX applications है, लेकिन मैं don't know whether that works with the AdSense crawler है। वैकल्पिक रूप से, यदि आप अपने प्रदर्शित यूआरएल को अपडेट करने के लिए pushState का उपयोग कर रहे हैं, तो आपको यह सुनिश्चित करना होगा कि क्रॉलर द्वारा अनुरोध किए जाने पर उन प्रत्येक यूआरएल को आपके सर्वर द्वारा प्रस्तुत किया जा सके। (डिस्कर्स फ़ोरम सॉफ़्टवेयर does exactly this।)

कृपया मुझे बताएं कि यह आपको करीब आता है या नहीं।

+0

यह काम नहीं प्रतीत होता है। स्क्रिप्ट टैग सही div में डाला गया है, लेकिन यह बैनर लोड करने के लिए इसे ट्रिगर करने के लिए पर्याप्त प्रतीत नहीं होता है। – Johan

+0

मैंने इसे किसी अन्य स्टैक ओवरफ्लो उत्तर के आधार पर नए कोड के साथ अपडेट किया है। क्या यह आपको करीब आता है? यह भी ध्यान रखें कि ऐडसेंस आपकी पेज सामग्री को देखने में सक्षम नहीं होगा। यहां कुछ सुझाए गए समाधान दिए गए हैं: http://stackoverflow.com/questions/10834751/adsense-with-ajax – emk

+0

मुझे वास्तव में लगता है कि मैं ऐडसेंस विज्ञापन को ऐसे div में रहने दूंगा जो एम्बर द्वारा नियंत्रित नहीं है (यानी एक स्थिर) । यह दोनों मुझे टीओएस का उल्लंघन करने से रोकेंगे और गतिशील रूप से बैनर जोड़ने की समस्या से छुटकारा पायेंगे। मेरा मानना ​​है कि आपका उत्तर अन्य उपयोग मामलों के लिए सही होगा, इसलिए मैं आपको जवाब क्रेडिट दूंगा। – Johan

संबंधित मुद्दे