Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set dynamic Meta Tags and Open Graph tags in polymer?

I have a polymer node site that I've been working on and can't figure out how to include dynamic meta tags and Open Graph tags. Jquery won't work and neither will using the polymer api to add a node because it will add all the tags after the page loads and facebook won't be able to read the tags. Google crawlers do render the page but it would be best if I could set the description in the header.

<html>
  <head>
    <meta name="description" content="description goes here" />
    <meta property="og:title" content="title"/>
  </head>
  <body>
    <group-pages id="grouppages" is="dom-bind"></group-pages>
  </body>
</html>

grouppages sets the data and uses a services to populate the page based off the url but what I can't find out is how to change the meta tags depending on the page.

Anyone have any ideas?

One thought was get information server side and send it in to polymer but I'm still not sure if that's possible between node and polymer.

like image 520
ahebib Avatar asked Dec 07 '15 21:12

ahebib


People also ask

How do you add meta tags to open graph?

Just go to Page Settings > Social Image > Upload. If you need to add other OG tags and customize the default settings, go to Page Settings > Advanced > Page Header Code Injection. Read the following section on adding the tags manually and copy-paste the code there.

How does the Open Graph Protocol OGP name the meta tags?

The four basic open graph tags that are required for each page are og:title , og:type , og:image , and og:url . These tags should be unique for each page you serve, meaning your homepage's tags should all be different from your blog post article's page.


2 Answers

It's definitely an open issue, and it concerns any way to generate meta tags on the client side, whether it's Polymer or any other front-end code.

It can be overcome only if the crawlers execute JS. On May 2014 Google started doing so. On the other hand, as far as I know Facebook has not moved in this direction yet.

You might want to check out these other two answers to get a complete picture:

  • https://stackoverflow.com/a/16485238/570016
  • https://stackoverflow.com/a/25421037/570016

As of today, the only 100% reliable way is for the server to intercept crawlers and specifically render content for them before sending the response. This is also knwon as isomorphic JavaScript. There already are some useful tools out there to support such tasks, like Prerender.

Hope this helps! Cheers

like image 62
Pensierinmusica Avatar answered Oct 26 '22 05:10

Pensierinmusica


If you host your Polymer app with Firebase, you can prerender the index.html file with a Firebase http trigger function.

exports.host = functions.https.onRequest((req, res) => {
  // replace og-tags in the index.html file and return it
});

See this post for more info.

like image 30
toto11 Avatar answered Oct 26 '22 05:10

toto11