2013-07-02 15 views
10

Ich versuche, Anzeigen auf meine angular.js App zu setzen, und ich habe etwas gelesen und festgestellt, dass es nicht möglich ist, nur den normalen AdSense-Code zu kopieren und einzufügen.Angular.js & Adsense

Ich habe gehört, Sie sollen „in einer Richtlinie wickeln mit einer Einbindung“, und das einzige Beispiel, das ich dafür finden kann, ist ein anderer Stackoverflow Beitrag: AngularJs and AddThis social plugin

Kann jemand helfen Anleitung geben, wie um dies mit Google Adsense zu tun?

+0

Hallo David, ich habe vor kurzem auch Angular gelernt. Ich arbeitete mit diesem Typ John Lindquist (er hat auch einige Arbeiten an Papervision gemacht, so wie ich ursprünglich von ihm gehört habe), jedenfalls hat er eine Seite http://www.egghead.io, die eckigen Tutorials gewidmet ist. Schau dir die Anweisungen an, er hat ein paar kurze Videos darüber. Darüber hinaus würde ich nur die Dokumente als aktuellste Referenz verwenden. Das grundlegende Problem, so wie ich es verstehe, ist, dass eckige DOM-Elemente hinzufügen/entfernen wird und wenn es JS gibt, die diese DOM-Elemente verarbeiten müssen, müssen Sie es in eine Direktive einfügen, damit es läuft. – shaunhusain

Antwort

15

Sie sollten eine Wrapper-Richtlinie an das AdSense-Skript wie folgt tun ...

<div data-my-ad-sense> 
    <!-- Google AdSense --> 
    <script async src="http://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> 
    <ins class="adsbygoogle" 
     style="display:inline-block;width:728px;height:90px" 
     data-ad-client="ca-pub-0000000000" 
     data-ad-slot="0000000000"></ins> 
    <script> 
    (adsbygoogle = window.adsbygoogle || []).push({}); 
    </script> 
</div> 

Und diese Anweisung, um Ihre Richtlinien hinzufügen ...

directive('myAdSense', function() { 
    return { 
    restrict: 'A', 
    transclude: true, 
    replace: true, 
    template: '<div ng-transclude></div>', 
    link: function ($scope, element, attrs) {} 
    } 
}) 

Dies ist der ADSENSE Asynchron-Code.

+1

das scheint nicht zu funktionieren, meine Anzeigen sind leer (aber seltsamerweise immer noch mit einem Iframe geladen). irgendwelche Ideen? Ich benutze sie in einer ng-Wiederholung, wo jedes vierte Element eine Anzeige hat. Sie können es bei sparkmyinterest.com sehen, wenn das hilft – Rob

+1

irgendein Update auf diesem? Ich habe hier dasselbe Problem. – ericbae

+1

Diese Lösung scheint zu funktionieren, aber wenn die NG-Ansicht geändert wird, wenn mehr als ein ADS in einer ng-Wiederholung gedruckt wird: das erste Mal schaue ich mir die Ansicht an: OK (oder manchmal ein oder mehrere ADS fehlen), ABER ändern sich die Ansicht und das Zurückkommen einiger (oder aller) ADS fehlen – ricricucit

17

benötigen Sie

yourApp.directive('ads', function() { 
    return { 
     restrict: 'A', 
     templateUrl: 'partiels/adsTpl', 
     controller: function(){ 
      (adsbygoogle = window.adsbygoogle || []).push({}); 
     } 
    }; 
}); 

erstellen Sie eine Vorlage, eine Richtlinie erstellen mit Ihren Anzeigen-Code in meinem Fall "partiels/adsTpl.html"

<ins class="adsbygoogle" 
style="display:inline-block;width:300px;height:250px" 
data-ad-client="ca-pub-00000000" 
data-ad-slot="000000"></ins> 

die Richtlinie zu Ihrer Seite hinzufügen

<div data-ads></div> 

Platzieren Sie den AdSense-js-Aufruf im Kopfbereich Ihrer Hauptseite vor angularjs

<head> 
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> 
.... 

et voila, das ist

+1

Da ich mehrere Ansichten und Routen habe, zeigt es nur die ersten 3 Mal und funktioniert dann erst wieder, wenn die Site neu geladen wird. – Kode

+0

hi @ kode, ich habe viele Sicht in meiner Web-App, aber in meinem Fall funktioniert es perfekt, können Sie bitte weitere Details zur Verfügung stellen. –

+0

Danke @ zied.hosni. Ich habe einen Beitrag hier: http://stackoverflow.com/questions/29709973/angular-adsense-ads-not-loading-on-route-change-up-to-3-ads-for-the-entire-app es scheint, dass der einzige Unterschied ist, dass meine Direktive replace verwendet: true – Kode

2

Ich bin nicht sicher, ob das Folgende tun gemäß dem adsense T & C gültig ist

löschen Sie alle Google-Variablen verwandt, bevor Sie die URL

ändern
Object.keys(window).filter(function(k) { return /google/.test(k) }).forEach(
     function(key) { 
      delete(window[key]); 
     } 
    ); 
2

In der Javascript-Datei definieren Sie eine benutzerdefinierte Richtlinie für Google AdSense

window.app.directive('googleAd', [ 
    '$timeout', function($timeout) { 
    return { 
     restrict: 'A', 
     link: function(scope, element, attr) { 
     return $timeout(function() { 
      var adsbygoogle, html, rand; 
      rand = Math.random(); 
      html = "<ins class='adsbygoogle' style='display:block' data-ad-client='ca-pub-7656700967113967' data-ad-slot='1894787830' data-ad-format='auto'></ins>"; 
      $(element).append(html); 
      return (adsbygoogle = window.adsbygoogle || []).push({}); 
     }); 
     } 
    }; 
    } 

Die AdSense-Informationen für die oben genannte Richtlinie werden von Google bei der Auswahl der Anzeige bereitgestellt. auf der Seite AD- Verwendung den folgenden Tag

<div google-ad=""></div> 

Im Index angezeigt werden soll.html verwenden, um die

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> 

Ein Video-Tutorial für das Aufstehen und Laufen zur Verfügung gestellt wird hier AngularJS + Adsense