2009-02-11 13 views

Antwort

3

Sie können den JavaScript-Code von Adsense in die einzelne HTML-Seite einfügen, mit der GWT startet. Auf diese Weise wird die Werbung nicht im selben Bereich wie GTW, sondern über/unter dem GWT-Code angezeigt. Für die Werbung könnte das ok sein.

Dieses Beispiel stellt eine baner über die Anwendung:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
    <head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
    <title>www.javaoracleblog.com</title> 
    <script type="text/javascript" language="javascript" src="com.javaoracleblog.aggregator.nocache.js"></script> 
    </head> 
    <body> 
<script type="text/javascript".. 
ADsense code here 
</script> 
    <!-- OPTIONAL: include this if you want history support --> 
    <iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe> 
    </body> 
</html> 

Um Google WT, um anzuzeigen, dass die Website von Google AdSense vertraut werden können Sie einen regulären Ausdruck passende URL zum -whitelist Befehlszeile hinzufügen müssen Streit.

Beachten Sie, dass dies wahrscheinlich nicht die Probleme lösen wird, die im oben genannten Artikel "Warum ich GWT abgeladen habe" beschrieben sind.

3

Nach this thread on AdSense:

Kurzversion, können Sie nicht Adsense über Ajax verwenden, ohne die Programmrichtlinien/t & c des

Lange Version ...

Ad Code durch einen xmlhttp Aufruf übergeben wird nicht gerendert, es wird nur als Text behandelt (daher responseText). Die einzige Möglichkeit, den js-Code auszuführen, besteht darin, "responseXML" gekoppelt mit dem "exec()" -Befehl zu verwenden.

Zum Beispiel ...

Wenn Ihr xml etwas enthält entlang die Linien:

Dies ist der Inhalt von der externen Datei JavaScript-Code hier geht

Sie würden zuweisen eine Variable (z. B. page_data) mit ajax_obj.responseXML, führen Sie die XML über einen Parser und führen Sie

exec (js Variable oder Zeile von XML hier);

Nicht wirklich hilfreich von einem Adsense Standpunkt, aber so ist es gemacht.

Es ist auch erwähnenswert, Why I dumped GWT:

Ein weiteres Problem Banner mein adsense waren. Da ich nicht viel Inhalt auf der Seite hatte, waren die Banner manchmal off Thema. Ein noch größeres Problem war, dass die Banner blieben das gleiche, wenn die Menschen nach verschiedenen Schlüsselwörtern suchten (seit der Ajax Refresh nicht ausgelöst hat ein AdSense aktualisieren). Ich löste das, indem ich die Suche mit einer Seitenwiederauffrischung anstelle von eines Ajaxanrufs tat. Der Ajax-Teil der Website war auf Sortieren, Facettieren, i18n und Anzeigen von Tipps beschränkt.

+0

danke, ich schätze deine Arbeit sehr, aber ich brauche noch einen Workaround, damit das funktioniert! –

+2

Sie erkennen, dass Sie damit gegen die AdSense-Nutzungsbedingungen verstoßen? – cletus

0

Der AdSense-Bot von Google crawlt Ihre Seite, um festzustellen, welche Anzeigen geschaltet werden. Daher sollten Sie AdSense nicht auf Seiten mit überwiegend dynamischen Inhalten platzieren. Es wird nicht gut funktionieren.

Vielleicht sollten Sie in andere Werbeprogramme schauen?

+0

Dynamischer Inhalt IST, was Adsense relevant macht! Das AdSense-Skript scannt die Website und bestimmt, welche Anzeigen basierend auf diesem Inhalt angezeigt werden. Auf der anderen Seite ist GWT reines Javascript, und deshalb funktioniert Adsense nicht so, wie es sollte, und nicht, weil die Seite dynamisch ist! – Vladimir

2

Sie könnten die interview Ich habe mit InfoQ. Es enthält ein Beispielkapitel aus meinem Buch und es ist zufällig auf SEO.

Es ist nicht trivial, aber ich denke, die Lösungen in diesem Kapitel lassen GWT gut in einer Umgebung funktionieren, in der SEO wichtig ist. Die grundlegende Lösung besteht darin, etwas zu implementieren, das ich 'Bootstrapping' nenne. Dies bedeutet, dass Ihre Seiten die Informationen aufnehmen, die normalerweise in GWT-RPC-Anfragen auftreten, und diese auf der Seite serialisieren. Das GWT-Widget lädt diese Informationen dann ohne eine RPC-Anforderung. Während Ihre Seite die Informationen in JavaScript serialisiert, ist es einfach, auch eine <noscript> auf die Seite zu schreiben, die für SEO verwendet werden kann.

Werfen Sie einen Blick auf die PDF-Datei hier: InfoQ GWT geht es ins Detail. Das gesamte Beispielprojekt ist hier: google code mit Quelle auf GitHub.

+0

-1: Völlig außer Thema. – Vladimir

+0

nicht wahr? Bei den Fragen geht es um AdSense mit GWT, was schwierig ist, da eine Standard-GWT-Site nicht viel Inhalt auf die Seite bringen würde. In diesem Kapitel wird ein Ansatz erläutert, mit dem Inhalte auf die Seite gestellt werden, sodass Google sie durchsuchen kann, um relevante Anzeigen anzuzeigen. Off Thema? – jdwyah

2

Wenn Sie wirklich möchten, dass AdSense irgendwie "in" GWT ist, würde ich das Frame-Widget verwenden. Grundsätzlich generiert das Frame-Widget einen < iframe ... > innerhalb Ihres GWT-Codes. Zuerst habe ich gedacht, iframe, UGH! Aber das <iframe> Tag ist immer noch Teil der HTML5 spec und wurde sogar um einige Attribute erweitert, die genau für diesen "Sandboxing" Zweck da zu sein scheinen. Und mit dem entsprechenden CSS-Stil haben Sie keine Bildlaufleisten um Ihren <iframe>.

Und hier ist die eigentliche Lösung:

sollten Sie setzen

<ui:style> 
    .sponsor { 
    border: 0em; 
    width: 20em; 
    height: 6em; 
    float: right; 
    display: inline; 
    } 
</ui:style> 
<g:HTMLPanel> 
    <g:Frame ui:field="sponsor" url="issue/extern/Google-AdSense.html" styleName="{style.sponsor}"/> 
</g:HTMLPanel> 

in Ihre .ui.xml-Datei und die Logik in die entsprechende .java Datei:

@UiField 
    Frame sponsor; 

Auch sollten Sie die setzen tatsächlichen Google AdSense-Code (<Skript> Zeug) in eine separate HTML-Datei im Inneren Der Öffentliche Ordner von GWT heißt in diesem Fall Google-AdSense.html und befindet sich in der externen -Ordner innerhalb der öffentlichen Ordner. Ausgabe (im Frame URL Attribut) ist in diesem Fall der GWT-Ausgabeordner.

Und here is how it looks like: Die Anzeige in der oberen rechten Ecke.

Btw dies ist auch die Möglichkeit, den Google Analytics-Code in GWT einzubetten.

0

Sie können AdSense und GWT zusammen verwenden, ohne Frames oder andere Hacks zu verwenden, wenn Sie einige Sorgfalt bei der Erstellung Ihrer Host-Seiten nehmen.

Der Schlüssel besteht darin, Ihren AdSense-Code in die Host-Seite aufzunehmen und dann das dom-Element mit der Anzeige zu bearbeiten, aber nicht von der Seite abzutrennen. Sie können also die Anzeigen in den Text Ihres anderen gwt-Codes einfügen, solange die dom-Struktur nicht geändert wird.

Wenn Sie das enthaltene dom-Element trennen und erneut anfügen, scheint es in Chrome und Firefox zu funktionieren, IE zeigt jedoch ein Leerzeichen an. Ich versuchte zunächst, das Anzeigen-DIV-Element in ein DockLayoutPanel zu verschieben und dachte, alles sei großartig, bis ich es verspätet im IE getestet habe.

Das ist also OK:

Element element = Document.get().getElmentById("ad"); 
element.getStyle().setPosition(ABSOLUTE); 
element.getStyle().setTop(20, PX); 

Aber das ist nicht:

myPanel.add(ElementWrapper.wrap(element)); 

weil das Hinzufügen eines Widget in ein anderes Widget Wieder Eltern es.

Das bedeutet, dass Sie keines der integrierten LayoutPanel-Elemente verwenden können, um Ihr Anzeigen-Div zu halten, da Layout ein vorhandenes Element nicht umbrechen kann (es erstellt sein eigenes DIV in seinem Konstruktor). Sie können möglicherweise die Layout-Panel-Zeug ändern, so dass es ein Element umschließt und nicht wieder parent es ... aber ich habe dies noch nicht versucht.

Ich habe die Ergebnisse in IE6 +, Chrome und Firefox getestet. Nachteil ist, dass Sie die Anzeigen nur aktualisieren können, wenn Sie eine neue Seite laden. Aber in meinem Fall wurde GWT verwendet, um HTML-Seiten zu verbessern, so dass dies kein Problem war. In jedem Fall ... klicken Nutzer eher auf eine andere Anzeige als auf eine, die sie mehrmals gelesen haben? Nicht sicher, dass es so wichtig ist.

1

Ich konnte dies mit DFP Small Business + Async Publisher-Tag + AdSense-Integration tun:

Hier ist der Code:

Auf Ihrer Host-Seite, setzen Sie Ihre Publisher-Tag, so etwas wie:

<head> 
     <script type="text/javascript" src="http://www.googletagservices.com/tag/js/gpt.js"></script> 
      <script type="text/javascript"> 
       var slot1 = googletag.defineUnit('/XXXX/ca-pub-YYYYYYYYYYYYYYY/transaction', [468, 60], 'div-gpt-ad-ZZZZZZZ-0').addService(googletag.pubads()); 
       googletag.pubads().enableSingleRequest(); 
       googletag.enableServices(); 
      </script> 

... 
    </head> 

ich habe eine Ansicht mit UiBinder, mit einem div mit der an der Spitze, wie dies angegeben ID erstellt:

<g:HTMLPanel height="62px" width="100%"> 

      <div id='div-gpt-ad-ZZZZZZZ-0' style='width:470px; height:60px;'> 
      </div> 
    </g:HTMLPanel> 

Auf der onLoad() -Methode der Ansicht, initialisieren Sie die Anzeige, wie folgt aus:

@Override 
protected void onLoad() { 

    setupAd(); 
} 

public static native void setupAd() /*-{ 
    $wnd.googletag.cmd.push(function() {$wnd.googletag.display('div-gpt-ad-ZZZZZZZ-0')}); 
}-*/; 

die Anzeige zu aktualisieren, rufen Sie einfach Refresh-Anzeige für den Schlitz am Kopf angegeben:

public static native void refreshAd() /*-{ 
    $wnd.googletag.pubads().refresh([$wnd.slot1]); 
}-*/; 

Das ist alles!

Weitere Informationen über den Publisher-Tag, überprüfen: http://support.google.com/dfp_sb/bin/answer.py?hl=en&answer=1649768

Jetzt bin kämpfen, ich weiß, wie AdSense Bot zu machen meine Ajax-Anwendung Kropf.Ich habe das Ajax Krabbeln Schema implementiert:

https://developers.google.com/webmasters/ajax-crawling/docs/getting-started

Aber ich habe die Informationen aus AdSense Forum, dass die AdSense-Bot (Medienpartner-Google) funktioniert nicht mit „entkam Fragment“ Ajax Schema bekam. Weiß jemand, ob Google Fortschritte dabei machen will?

Dies schränkt diesen Ansatz ein, um nur interessenbezogene Anzeigen zu schalten, da die kontextbasierte Anzeigenschaltung vom Ajax-Crawling-Schema abhängt.