2009-02-11 27 views

Trả lời

3

Bạn có thể đặt mã javascript từ Adsense trong trang HTML đơn mà GWT bắt đầu bằng. Bằng cách này, quảng cáo sẽ không được hiển thị trong cùng khu vực với GTW nhưng trên/dưới mã GWT. Đối với quảng cáo có thể là ok.

Ví dụ này đặt một baner trên ứng dụng:

<!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> 

Để chỉ đến Google WT rằng trang web của Google adsense có thể được tin cậy bạn cần phải thêm một URL khớp regex để dòng lệnh -whitelist tranh luận.

Lưu ý rằng điều này có thể sẽ không giải quyết được các vấn đề được mô tả trong bài viết "Tại sao tôi bán phá giá GWT" ở trên.

3

Theo this thread on AdSense:

phiên bản ngắn, bạn không thể sử dụng Adsense qua Ajax mà không vi phạm các chính sách chương trình /t & phiên bản c của

Long ...

rao vặt mã được truyền qua lệnh gọi xmlhttp không được hiển thị, nó chỉ được coi là văn bản (do đó, responseText). Cách chỉ để thực thi mã js là sử dụng "responseXML" cùng với lệnh "exec()" .

Ví dụ ...

Nếu xml của bạn có chứa một cái gì đó cùng theo dòng:

Đây là nội dung từ tập tin bên ngoài mã javascript goes here

Bạn sẽ gán một biến (được gọi là page_data chẳng hạn) bằng cách sử dụng ajax_obj.responseXML, chạy XML thông qua trình phân tích cú pháp và chạy

exec (biến js hoặc dòng từ XML tại đây);

Không thực sự hữu ích từ quan điểm của Adsense , nhưng đó là cách thực hiện.

Nó cũng đáng nói Why I dumped GWT:

Một vấn đề khác là adsense của tôi biểu ngữ. Vì tôi không có nhiều nội dung trên trang, các biểu ngữ là đôi khi không nằm trong chủ đề. Một vấn đề lớn hơn nữa là các biểu ngữ ở lại giống nhau khi mọi người tìm kiếm các từ khóa khác nhau (vì việc làm mới ajax không kích hoạt làm mới adsense ). Tôi đã giải quyết vấn đề này bằng cách thực hiện tìm kiếm với làm mới trang thay vì cuộc gọi ajax. Phần ajax của trang web bị giới hạn trong việc sắp xếp, cạnh tranh, i18n và hiển thị các mẹo.

+0

cảm ơn, tôi thực sự đánh giá cao của bạn, nhưng tôi vẫn cần bất kỳ giải pháp nào để thực hiện công việc này! –

+2

Bạn nhận ra rằng bạn đang vi phạm các điều khoản của AdSense? – cletus

0

bot AdSense của Google thu thập dữ liệu trang của bạn để xác định quảng cáo nào cần phân phối. Do đó, bạn không nên đặt AdSense trên các trang có nội dung chủ yếu là động. Nó sẽ không hoạt động tốt.

Có thể bạn nên xem xét các chương trình quảng cáo khác?

+0

Nội dung động LÀ những gì làm cho adsense có liên quan! Tập lệnh adsense quét trang web và xác định quảng cáo nào sẽ hiển thị dựa trên nội dung đó. Mặt khác, GWT là javascript thuần túy và đó là lý do tại sao adsense không hoạt động như mong muốn và không phải vì trang web là động! – Vladimir

2

Bạn có thể xem interview Tôi đã làm với InfoQ. Nó bao gồm một chương mẫu từ cuốn sách của tôi và nó sẽ xảy ra trên SEO.

Nó không phải là tầm thường, nhưng tôi nghĩ rằng các giải pháp trong chương cho phép GWT hoạt động tốt trong một môi trường mà SEO là quan trọng. Các giải pháp cơ bản là để thực hiện một cái gì đó tôi gọi là 'bootstrapping'. Điều này có nghĩa là các trang của bạn lấy thông tin thường xuất hiện trong các yêu cầu GWT-RPC và tuần tự hóa chúng trong trang. Tiện ích GWT sau đó tải thông tin này mà không có yêu cầu RPC. Trong khi trang của bạn tuần tự hóa thông tin vào JavaScript, thật dễ dàng để viết một số <noscript> vào trang có thể được sử dụng cho SEO.

Hãy xem PDF bao gồm ở đây: InfoQ GWT nó đi vào tất cả các chi tiết. Toàn bộ dự án mẫu là ở đây: google code với nguồn trên github.

+0

-1: Hoàn toàn tắt chủ đề. – Vladimir

+0

huh? Các câu hỏi là về AdSense w/GWT rất khó vì một trang web GWT tiêu chuẩn sẽ không đặt nhiều nội dung trên trang. Chương này giải thích cách tiếp cận đặt nội dung trên trang để Google có thể thu thập thông tin để hiển thị quảng cáo có liên quan. Đề ra? – jdwyah

2

Nếu bạn thực sự muốn AdSense trở thành "bên trong" GWT, tôi sẽ sử dụng tiện ích Khung. Về cơ bản, tiện ích Khung tạo ra một iframe <...> bên trong mã GWT của bạn. Đầu tiên tôi đã nghĩ iframe, UGH! Nhưng <iframe> thẻ vẫn là một phần của HTML5 spec và thậm chí đã được mở rộng bởi một số thuộc tính dường như ở đó cho chính xác mục đích "hộp cát" này. Và với kiểu dáng CSS tương ứng, bạn sẽ không có bất kỳ thanh cuộn nào quanh khung nội tuyến < của mình >.

Và đây là giải pháp thực tế:

Bạn nên đặt

<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> 

vào tập tin .ui.xml của bạn và logic vào .java tập tin tương ứng:

@UiField 
    Frame sponsor; 

Ngoài ra, bạn nên đặt mã Google AdSense thực tế (số < tập lệnh > nội dung) vào một tệp HTML riêng bên trong Thư mục công khai của GWT - trong trường hợp này - được gọi là Google-AdSense.html và nằm bên trong thư mục extern bên trong thư mục công khai công khai. số (trong thuộc tính khung url) trong trường hợp này là thư mục đầu ra GWT.

here is how it looks like: Quảng cáo ở góc trên bên phải.

Btw đây cũng là cách nhúng mã Google Analytics vào GWT.

0

Bạn có thể sử dụng AdSense và GWT cùng nhau mà không cần sử dụng khung hoặc các hack khác nếu bạn quan tâm đến cách tạo trang lưu trữ.

Điều quan trọng là bao gồm mã AdSense của bạn trong trang lưu trữ và sau đó điều khiển phần tử dom chứa quảng cáo nhưng để không tách rời từ trang đó. Vì vậy, bạn có thể định vị lại quảng cáo vào nội dung của mã gwt khác của bạn miễn là cấu trúc dom không bị thay đổi.

Nếu bạn tháo và lắp lại phần tử có chứa phần tử thì nó sẽ xuất hiện để hoạt động trong Chrome và Firefox nhưng IE sẽ hiển thị một khoảng trống. Ban đầu, tôi đã cố gắng di chuyển phần tử DIV của quảng cáo vào trong DockLayoutPanel và nghĩ rằng mọi thứ đều tuyệt vời cho đến khi tôi thử nghiệm nó một cách muộn màng trong IE.

Vì vậy, đây là OK:

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

Nhưng đây không phải là:

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

vì thêm một widget khác phụ tùng tái cha mẹ nó. Điều này có nghĩa là bạn không thể sử dụng bất kỳ công cụ LayoutPanel tích hợp nào để giữ div quảng cáo của mình vì Bố cục không thể bao bọc phần tử hiện tại (Nó tạo DIV riêng của nó trong hàm khởi tạo của nó). Bạn có thể sửa đổi các công cụ bảng điều khiển bố trí để nó kết thúc tốt đẹp một phần tử và không tái cha mẹ nó ... nhưng tôi chưa thử điều này.

Tôi đã thử nghiệm kết quả trong IE6 +, Chrome và Firefox. Nhược điểm là bạn không thể làm mới quảng cáo trừ khi bạn tải một trang mới. Nhưng trong trường hợp của tôi GWT đã được sử dụng để tăng cường các trang html do đó không phải là một vấn đề. Trong mọi trường hợp ... người dùng có nhiều khả năng nhấp vào một quảng cáo khác với quảng cáo họ đọc nhiều lần không? Không chắc nó rất quan trọng.

1

tôi có thể làm điều này bằng DFP Small Business + async Thẻ nhà xuất bản + AdSense tích hợp:

Đây là mã:

Vào trang chủ của bạn, đưa thẻ nhà xuất bản của mình, một cái gì đó như:

<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> 

tôi đã tạo ra một cái nhìn với UiBinder, với một div với id được chỉ định ở phần đầu, như thế này:

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

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

Trên phương pháp onLoad() của giao diện, bạn khởi tạo quảng cáo, như thế này:

@Override 
protected void onLoad() { 

    setupAd(); 
} 

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

Để làm mới quảng cáo, chỉ cần gọi quảng cáo làm mới cho khe quy định tại đầu:

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

Đó là tất cả!

Để biết thêm thông tin về thẻ nhà xuất bản, kiểm tra: http://support.google.com/dfp_sb/bin/answer.py?hl=en&answer=1649768

Bây giờ tôi đang đấu tranh để biết làm thế nào để làm cho bot AdSense vào bầu diều của chim ứng dụng ajax của tôi.Tôi đã thực hiện chương trình Ajax Crawling:

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

Nhưng tôi đã có những thông tin từ diễn đàn AdSense rằng bot AdSense (Mediapartners-Google) không làm việc với "thoát đoạn" chương trình Ajax. Có ai biết liệu Google có kế hoạch thực hiện bất kỳ tiến bộ nào không?

Điều này giới hạn phương pháp này để chỉ phân phối quảng cáo dựa trên sở thích, vì phân phát quảng cáo dựa trên ngữ cảnh phụ thuộc vào lược đồ thu thập thông tin ajax.

Các vấn đề liên quan