ember-fastboot / ember-cli-head

Ember Cli Addon for Adding Content to HTML Head
MIT License
98 stars 34 forks source link

How to override existing tags specified in index.html? #58

Open jurgenwerk opened 5 years ago

jurgenwerk commented 5 years ago

I have a problem where my app index is not prerendered, but nested routes are (served via different origins).

I want to be able to have default tags in my index.html and override it using ember-cli-head when needed.

In my index.html I would like to have:

<head>
  <meta name="og:title" content="Some title">
  ...
</head

But when using ember-cli-head in some nested routes, duplicates happen:

<head>
  <meta name="og:title" content="Some title">
  ...

  <meta name="ember-cli-head-start" content="">
  <meta name="og:title" content="Some more appropriate title">
  <meta name="ember-cli-head-end" content="">

</head

I get duplicates for og:title.

So when social media bots scrape my FastBoot routes, they take the first property. But they should take the second one.

How can I get ember-cli-head to render its stuff either at the beginning of the head, or replace tags that are already present in the head in index.html?

claronz commented 4 years ago

I don't think you can have two tags of the same name at once, But handlebars {{#if}} tags works fine in head.hbs So here's what I'd do in the head.hbs

{{#if model.title}}
    <title>{{model.title}}</title>
    <meta property="og:title" content="{{model.title}}" /> 
{{else}}
    <title>Your default title</title>
    <meta property="og:title" content="Your Default Title" /> 
{{/if}}