如何在Meteor中添加简单的Facebook og标签?

时间:2016-05-07 11:48:11

标签: meteor facebook-opengraph

我无法相信这个问题以前从未被问过和回答过。

如何在Meteor中添加og标签供Facebook阅读?将它放在<head></head>之间不适用于og标记,但它适用于常规元标记。

是的,让我们现在说,我非常满意这种静态做法。

4 个答案:

答案 0 :(得分:5)

使用DocHead package添加Meta标签非常简单。

如果您需要它们是静态的,您可以使用Dochead在Meteor.startup()方法中添加元标记

即:在客户端代码中,只需将元标记添加到主路径或客户端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抓取工具可以看到您的元标记的唯一方式,使用prerender也可以作为魅力,在这种情况下需要的工作量更少

答案 1 :(得分:3)

从Meteor 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();
});

这会在初始html头部添加两个元标记,因此抓取工具不会出现问题。通过使用此方法,您需要的唯一软件包是服务器端路由器,在上面的示例中我使用了Picker

答案 2 :(得分:0)

假设您使用的是Blaze,则可以使用meteorhacks/meteor-ssrmeteorhacks/picker。它们也适用于动态内容。

您可以按照本指南了解如何使用这两个软件包来解决您的问题:Meteor Server-Side Rendering for SEO Purposes

答案 3 :(得分:0)

我认为在流星应用程序中使用ssr是没有意义的,你会失去meteor给你的许多好处,并且使用prerender.io可能会很昂贵,如果你有一个网页有很多url也是因为meteor 1.4库快速渲染停止在ssr中工作,因此根据我自己的经验使其工作很痛苦。 解决方案可能是在服务器中创建另一个为fb创建元标记的服务,例如,您向Facebook提供URL http://my server.com:8080/id-of-your-post,这将是一个ssr服务,它检查数据库中的所有内容以生成标记并将它们发送到HTML文件中。 现在是时候让Facebook像谷歌和索引基于JavaScript的网站一样。技术正在发生变化,但事实并非如此。