ember-cli-head icon indicating copy to clipboard operation
ember-cli-head copied to clipboard

How to override existing tags specified in index.html?

Open jurgenwerk opened this issue 5 years ago • 1 comments

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?

jurgenwerk avatar May 03 '19 14:05 jurgenwerk

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}}

claronz avatar Jun 17 '20 03:06 claronz