2013-08-23 17 views
0

我已經看到了一些與其他平臺一起使用的技術,但不知道是否有人有乾淨的方法來做到這一點。如何在GAE/GWT應用程序中添加動態Facebook元標記

我的應用程序有一個主機HTML文件,並使用標準的MVP/Places/Activities來分析哈希片段。它爲不同的元素顯示各種類似的按鈕。 FB(使用lint工具確認)只會讀取主機頁面的靜態HTML,所以我需要在返回給請求者之前對其進行操作(在這個問題中,沒有必要在GWT中搞亂)。

我用的是吉斯-Y com.google.inject.servlet.ServletModule所以我可以創建類似:

serve("/fb/*").with(MetaTagAdder.class); 

而且我可以使用/ FB/*的Like按鈕的URL。因此,請將託管頁面的HTML(根據需要添加到動態元標記中)發送出去。然後* .nocache.js文件跳到EntryPoint.OnModuleLoad()中。

這似乎有點笨重。任何人有更好的主意?

回答

0

所以我結束了這種方式,它工作正常。創建一個servlet,其doPost/doGet方法寫出你的主機html並將參數傳遞給它。因此,URL類似於:

http://example.com/fb/mypage.html?foo=baz#place:foo=baz 

然後你可以創建meta標籤的參數等:

// the first chunk of the static html 
resp.getWriter().println("<html><head><script type=\"text/javascript\" language=\"javascript\" src=\"/myMoodule/myModule.nocache.js\"></script>"); 

// the dynamic meta tags 
resp.getWriter().println("<meta property=\"og:title\" content=\"" + req.getParameter("foo") + "\" />"); 

// the rest of the static html 
resp.getWriter().println("</head><body></body></html>"); 

然後,當你正在設置你的FB-的數據href屬性像div,使用上面的網址。也適用於SEO。生產系統的注意事項:

  • 網站中的導航元素應將用戶驅回到直接託管版本。這可能會很棘手。瞭解您將使HTTP請求中的查詢字符串保持靜態,而散列片段隨着用戶的反應而發展。
  • 如果您的參數範圍有限並對參數進行了處理,請在HttpServlet中使用memcache來緩存返回給客戶端的html的半靜態副本。
  • 不要把東西放在體內,試圖讓你的搜索引擎優化成爲爵士樂。心痛在於這個方向。

我還在調整這個,但在這一點上看不到任何下降的死秀表演。

相關問題