2012-09-11 23 views
8

मैं वर्तमान में ऐसी साइट पर विज्ञापन देने के लिए Google प्रकाशक टैग का उपयोग कर रहा हूं जो बहुत जल्द उत्तरदायी होगा। हमारे पास एक विशेष विज्ञापन स्लॉट है जो संभावित रूप से 2 संभावित चौड़ाई, 728 या 960 की सेवा कर सकता है और किस चौड़ाई पर निर्भर करता है, मैं या तो नौसेना के ऊपर या नीचे विज्ञापन प्रस्तुत करना चाहता हूं।मैं सेवा विज्ञापन आयामों का पता कैसे लगा सकता हूं

तो पहला पहला सवाल यह है कि यह दूरस्थ रूप से कहीं भी है या नहीं और यह भी संभव है? मुझे संदेह है कि मुझे शायद दो अलग-अलग विज्ञापन स्लॉट परिभाषित करना चाहिए।

प्राथमिक प्रश्न हालांकि जो शायद अकादमिक है, यह है कि मैं किसी विज्ञापन के आयामों का पता कैसे लगा सकता हूं? मुझे संदेह है कि इसका समाधान विज्ञापन प्लेटफार्म के लिए अज्ञेयवादी है क्योंकि मुझे मूल रूप से नोड सम्मिलन का पता चला है और फिर कंटेनर तत्व के आयामों का निरीक्षण किया जा रहा है।

मैं डोमोडोडइंस्ड जावास्क्रिप्ट ईवेंट के साथ प्रयोग कर रहा हूं, हालांकि यह विज्ञापनों को "लेकिन" सब कुछ के लिए ट्रिगर करने लगता है। मैं तब तक उलझन में हूं जब तक कि जीपीटी इस तरह से विज्ञापनों को सम्मिलित नहीं करता है जो इस घटना को ट्रिगर नहीं करता है।

+0

महान सवाल! – jnthnclrk

उत्तर

5

मैंने पहले ऐसा कुछ किया है ... और जिस विधि पर मैं बस गया था वह एक आंतरिक डीएफपी फ़ंक्शन (रेंडरएन्डेड) को ओवरराइड कर रहा था ताकि मैं देख सकूं कि विज्ञापन स्क्रीन पर जिस बिंदु पर प्रस्तुत किया गया था ...

उदाहरण के लिए विज्ञापन आप निम्नलिखित की तरह कुछ कर सकता है के आयाम प्राप्त करने के लिए (मैं केवल क्रोम में यह परीक्षण किया है, लेकिन यह बहुत दूर पूरी तरह से पार किया जा रहा ब्राउज़र से नहीं होना चाहिए):

<html> 
<head> 
    <title>DFP test</title> 

    <script type='text/javascript'> 
     var googletag = googletag || {}; 
     googletag.cmd = googletag.cmd || []; 
     (function() { 
      var gads = document.createElement('script'); 
      gads.async = true; 
      gads.type = 'text/javascript'; 
      var useSSL = 'https:' == document.location.protocol; 
      gads.src = (useSSL ? 'https:' : 'http:') + 
      '//www.googletagservices.com/tag/js/gpt.js'; 
      var node = document.getElementsByTagName('script')[0]; 
      node.parentNode.insertBefore(gads, node); 
     })(); 
    </script> 


    <script type="text/javascript"> 
     googletag.cmd.push(function() { 
      var slot1 = googletag.defineSlot('/12345678/TEST', [266, 115], 'div-gpt-ad-1340819095858-0').addService(googletag.pubads()); 

      slot1.oldRenderEnded = slot1.renderEnded; 
      slot1.renderEnded = function(){ 
       window.console.log('width: '+document.getElementById('div-gpt-ad-1340819095858-0').getElementsByTagName('iframe')[0].contentWindow.document.width); 
       window.console.log('height: '+document.getElementById('div-gpt-ad-1340819095858-0').getElementsByTagName('iframe')[0].contentWindow.document.height); 
       slot1.oldRenderEnded(); 
      }; 

      googletag.pubads().enableSingleRequest(); 
      googletag.enableServices(); 
     }); 
    </script> 

</head> 
<body> 

    <div id='div-gpt-ad-1340819095858-0' style='width:266px; height:115px;'> 
     <script type='text/javascript'> 
      googletag.cmd.push(function() { 
       googletag.display('div-gpt-ad-1340819095858-0'); 
      }); 
     </script> 
    </div> 

</body> 
</html> 

हो सकता है कि आप जो कुछ भी कर रहे हों, लेकिन उस कार्य को ओवरराइड करने से आपको उस स्थान पर जाने देना चाहिए जहां आपको होना चाहिए ... यदि आपके कोई प्रश्न हैं तो मुझे बताएं।

+0

यह वास्तव में जो मैं ढूंढ रहा हूं उसके सबसे नज़दीकी समाधान है। अगला चरण विज्ञापन स्लॉट के अंदर प्रदान की गई रचनात्मक इच्छित इच्छित चौड़ाई का लगातार पता लगाना है। हमारे लिए रचनात्मक iframes, छवियों, और फ़्लैश वस्तुओं के बीच भिन्न हो सकता है। मैंने पाया है कि वे लगभग हमेशा एक चौड़ाई param है कि मैं पढ़ सकते हैं। रेंडर चौड़ाई का पता लगाना समस्याग्रस्त लगता है यदि कंटेनर div बहुत छोटा है क्योंकि रचनात्मक क्षैतिज रूप से टूट जाता है। – sphoid

+0

@ मैट कूपर - आप आंतरिक डीएफपी फ़ंक्शन को कहां और कैसे खोजते हैं? यदि अन्य कार्य हैं तो मैं ओवरराइड कर सकता हूं जो बहुत अच्छा होगा। – dinie

+2

@umami मैंने इसे क्रोम इंस्पेक्टर के साथ googletag नाम स्थान में देखकर पाया। यदि आप इंस्पेक्टर को फायर करते हैं और कंसोल में googletag टाइप करते हैं तो आपको googletag ऑब्जेक्ट दिखाई देगा ... वहां कुछ फ़ंक्शन हैं और यदि आप slot_manager_instance में देखते हैं और अलग-अलग विज्ञापन इकाइयों में ड्रिल करते हैं तो आपको बहुत सारी चीज़ें मिलेंगी अन्य कार्यों ... एक और रिपो जिसे मैंने बाद की तारीख में पाया, आंतरिक डीएफपी लॉगर को हुक करता है और अन्य डीएफपी कार्यों में भी हुक करना संभव बनाता है, आपको यह दिलचस्प लगेगा: https://github.com/mcountis/ डीएफपी-इवेंट –

0

मुझे Google AdSense के साथ WiiMusic.net पर एक ही समस्या थी। मैं जो कर रहा था वह जावा के साथ विज्ञापन युक्त div के आकार का पता लगा रहा था और फिर विज्ञापन लोड किया। इस स्थिति में, लोड होने के बाद मेरे पृष्ठ के संकल्प या आकार को बदलना संभव नहीं था, इसलिए यह काम किया।

आपकी स्थिति में, आपका पृष्ठ निश्चित रूप से आकार बदल सकता है और क्या नहीं। मुझे लगता है कि यदि आप अपने उत्तरदायी डिज़ाइन के आधार पर अलग-अलग विज्ञापन संस्करण दिखाना चाहते हैं, तो आपको उस बिंदु पर विज्ञापनों को फिर से लोड करना होगा। यदि आप एसिंक्रोनस विज्ञापन कोड का उपयोग कर रहे हैं, तो यह संभव होना चाहिए।

इसे समेटने के लिए, हाँ, यह जावास्क्रिप्ट के साथ सचेत और संभव है। आपके विज्ञापनों को जावास्क्रिप्ट को वैसे भी काम करने की आवश्यकता है, इसलिए यह बाधा का अधिक नहीं होना चाहिए।

+0

मेरी स्थिति में मुझे वास्तव में इसके विपरीत करने की आवश्यकता है। मैं प्रदत्त विज्ञापन के आकार के आधार पर युक्त div की आकार/स्थिति को समायोजित कर दूंगा। ऐसा करने के लिए मुझे विज्ञापन डालने के लिए कॉलबैक को परिभाषित करने के लिए कुछ तरीका ढूंढना होगा। जैसा कि मैंने कहा है कि मैंने DOMNodeInserted ईवेंट की कोशिश की है और मैं विज्ञापन सामग्री डालने पर पता लगाने के लिए DOMSubtreeModified के साथ प्रयोग कर रहा हूं। – sphoid

+0

@sphoid, मेरी अज्ञानता को क्षमा करें, लेकिन मैंने सोचा कि डीएफपी विज्ञापन स्लॉट में केवल एक आकार हो सकता है? डीएफपी कैसे निर्धारित करता है कि कौन सा आकार विज्ञापन आपकी सेवा करेगा? आप किस पृष्ठ पर वापस आते हैं, इस पर निर्भर करते हुए आप अपने पृष्ठ को अलग-अलग आकार दे रहे हैं? मुझे लगता है कि DOMNodeInserted समस्या आईफ़्रेम के कारण है जिसमें विज्ञापन परोसा जा रहा है। – Brad

+0

आप googletag.defineslot() में एक स्लॉट के लिए अल्पविराम से अलग कई विज्ञापन आकार परिभाषित कर सकते हैं। मैं मुख्य रूप से लीडरबोर्ड विज्ञापन स्लॉट के लिए ऐसा करता हूं जो पूर्ण पृष्ठ चौड़ाई बैनर के साथ-साथ संकुचित केंद्रित बैनर भी प्रदान कर सकता है। मेरे कुछ विज्ञापन iframes सम्मिलित नहीं करते हैं, इसके बजाय वे गतिशील रूप से एक div उत्पन्न करते हैं और कुछ स्क्रिप्ट टैग डालें और कभी-कभी क्रिएटिव फ़्लैश आधारित होने पर टैग ऑब्जेक्ट करें। मुझे यह पता लगाने में सक्षम होना चाहिए कि कम से कम उन तत्वों को कब डाला जाता है। – sphoid

0

तो हमेशा की तरह मैं इसे सोचने का तरीका था। कारण मैं एक डोम परिवर्तन का पता नहीं लगा रहा था क्योंकि जब तक मैं ईवेंट हैंडलर आवंटित कर रहा था तब तक विज्ञापन पहले से ही डाला गया था। विज्ञापनों को सिंक्रनाइज़ करते समय मैं तुरंत कंटेनर div के आयामों को माप सकता हूं और विज्ञापन आयाम प्राप्त कर सकता हूं। अतुल्यकालिक रूप से लोड करते समय मैं परिवर्तन के लिए मूल HTML को संग्रहीत करके और परिवर्तन के दौरान मतदान करने और कंटेनर div के माप को बनाकर आंतरिक HTML परिवर्तनों के लिए मतदान करने में सक्षम हूं। आपके समय के लिए धन्यवाद ब्रैड।

+0

मैंने बहुत जल्द बात की। यह समाधान केवल उन स्थितियों में काम करता है जहां कंटेनर div रचनात्मक वारंट करते समय आकार बदल सकता है और आकार बदल सकता है। मेरे पास एक परिदृश्य है जहां कंटेनर div का आकार बदल नहीं सकता है, इसलिए क्रिएटिव क्षैतिज रूप से टूट जाता है जो कि बहुत ही समस्या है जिसे मैं टालने की कोशिश कर रहा हूं। मुझे लगता है कि रचनात्मक के आयामों का पता लगाने के लिए मुझे एक कानूनी तरीका चाहिए। – sphoid

9

जीपीटी के लिए एक अद्यतन किया गया है जो इसे अधिक सुरुचिपूर्ण ढंग से करने की अनुमति देता है। घटना आपको बताएगी कि क्या एक रचनात्मक लौटाया गया था और यदि ऐसा है तो आयाम, साथ ही अतिरिक्त जानकारी।

googletag.pubads().addEventListener('slotRenderEnded', function(event) { 
console.log('Creative with id: ' + event.creativeId + 
    ' is rendered to slot of size: ' + event.size[0] + 'x' + event.size[1]); 
}); 

घटना भी है। यह लक्षण आपको बताएगा कि कोई वास्तविक रचनात्मकता वापस आई है या नहीं।

+1

और एक घटना। आकार भी "सरणी, प्रस्तुत रचनात्मक आकार का संकेत देता है।" https://support.google.com/dfp_premium/answer/1650154?hl=hi – MarkD

+0

यह वास्तव में अब चयनित उत्तर होना चाहिए। – jnthnclrk

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