2016-05-07 22 views
2

我不敢相信這個問題以前從未被問及過。如何在Meteor中添加簡單的Facebook og標籤?

如何在Meteor中爲Facebook添加og標籤?只要將它放在<head></head>之間就不能用於og標記,但它對於常規元標記有效。

是的,讓我們說,現在我完全滿意地做這個靜態。

回答

0

假設您使用Blaze,您可以使用meteorhacks/meteor-ssrmeteorhacks/picker。他們也將爲動態內容工作。

您可以按照有關如何使用這兩個包來解決問題本指南:Meteor Server-Side Rendering for SEO Purposes

+0

僅僅因爲添加了一個簡單的靜態標籤,我不想對我的網站做出巨大的改變(可能需要整整一週的工作量並僱用一個系統管理員)。另外,Meteor的全部觀點都在客戶端渲染,所以...不用了,謝謝。 – Yeats

+0

那麼好運...然後...簡單地說,Facebook抓取工具不會運行JS,因此他們無法看到您的開放圖形標記 –

+0

如何讓其他不運行JS的抓取工具可以看到元標記?就像網絡上的簡單元標記分析器一樣。 – Yeats

4

這是非常簡單的添加使用DocHead package Meta標籤。

如果你需要他們是靜態的,你幾乎可以添加meta標籤一個Meteor.startup()方法中,使用Dochead

即:在您的客戶端代碼,只需添加meta標籤到您的主要途徑,或者在客戶端Meteor.startup()方法中。

FlowRouter.route('/', { 
    name: '/', 
    action: function() { 
      DocHead.setTitle("X"); 
    DocHead.addMeta({property: 'og:image', content: 'image_URL'}); 
    DocHead.addMeta({property: 'og:image:width', content: '2083'}); 
    DocHead.addMeta({property: 'og:image:height', content: '1091'}); 
    DocHead.addMeta({property: 'og:site_name', content: 'X'}); 
    DocHead.addMeta({property: 'og:title', content: X}); 
    DocHead.addMeta({property: 'og:type', content: 'website'}); 
    DocHead.addMeta({property: 'og:description', content: 'X'}); 
    DocHead.addMeta({property: 'og:keywords', content: 'X'}); 
    DocHead.addMeta({property: 'fb:app_id', content: 'X'}); 
    DocHead.addMeta({property: 'description', content: 'X'}); 
    DocHead.addMeta({property: 'keywords', content: 'X'}); 
    DocHead.addMeta({property: 'twitter:card', content: 'summary'}); 
    DocHead.addMeta({property: 'twitter:url', content: 'X'}); 
    DocHead.addMeta({property: 'twitter:title', content: 'X')}); 
    DocHead.addMeta({property: 'twitter:description', content: 'X'}); 
     BlazeLayout.render('appLayout', { 
      top: '_header', 
      main: 'home' 
     }); 
    } 
}); 

編輯:SSR是不是唯一的方法FB爬蟲可以看到你的meta標籤,使用prerender作品魅力太大,並且需要在這種情況下,減少工作

+0

您能否詳細說明您的答案,並添加關於您提供的解決方案的更多描述? – abarisone

3

從流星1.3可以使用dynamicHead與服務器端路由器掛鉤,例如:

Picker.route('/', (params, req, res, next) => { 
    req.dynamicHead = (req.dynamicHead || "") + '<meta name="metaname1" content="metacontent1">'; 
    req.dynamicHead += '<meta name="og:title" content="mytitle">'; 
    next(); 
}); 

這增加了兩個meta標籤初始HTML頭所以就在履帶沒有問題。通過使用這種方法,您需要的唯一軟件包是服務器端路由器,在上例中我使用了Picker

0

我認爲在流星應用中使用ssr是沒有意義的,你失去了流星賦予你的許多好處,並且如果你有一個擁有許多url的網頁,使用prerender.io會很貴,因爲流星1.4圖書館的快速渲染停止在ssr中工作,所以根據我自己的經驗使它工作是很痛苦的。 解決方案可能是在您的服務器中創建另一個爲fb創建元標記的服務,例如,您向Facebook提供URL http://my server.com:8080/id-of-your-post,這將是一個ssr服務它會檢查數據庫中的所有內容以生成標記並將其發送到HTML文件中。 現在是時候讓Facebook做像谷歌和索引基於JavaScript的網站。技術正在發生變化,但事實並非如此。