ostrio:iron-router-meta

v1.0.1Published 9 years ago

This package has not had recent updates. Please investigate it's current state before committing to using it in your project.

Reactive meta tags for meteor within iron-router

Change meta tags on the fly within iron-router. This package can create meta tags, and link tags as well.

Note: this package implies ostrio:iron-router-title package.

Install:

meteor add ostrio:iron-router-meta

Usage:

Set only name and content attributes on meta tag:

1Router.route 'routeName',
2  meta:
3    name: 'content'

Set only rel and href attributes on link tag:

1Router.route 'routeName',
2  link:
3    rel: 'href'

Set multiple attributes on meta tag:

1Router.route 'routeName',
2  meta:
3    uniqueName: 
4      name: 'name'
5      content: 'content'
6      value: 'value'
7      'og:prop': 'value'
8      itemprop: 'value'

Set multiple attributes on link tag:

1Router.route 'routeName',
2  link:
3    uniqueName: 
4      rel: 'name'
5      sizes: 'value'
6      href: 'value'
7      type: 'value'

You can pass functions as value:

1Router.route 'routeName',
2  meta:
3    url:
4      property: 'og:url'
5      itemprop: 'url'
6      content: ->
7        window.location.href
8  link:
9    canonical: ->
10      window.location.href

Set default values in Router.configure()

1Router.configure
2  meta:
3    charset:
4      charset: 'UTF-8'
5    keywords: 
6      name: 'keywords'
7      itemprop: 'keywords'
8      content: 'Awesome, Meteor, based, app'
9    robots: 'index, follow'
10    google: 'notranslate'
11
12  link:
13    canonical: ->
14      window.location.href
15    image:
16      rel: 'image'
17      sizes: '500x500'
18      href: 'http://doma..'
19    publisher: 'http://plus.google...'

Then override default values in each route:

1Router.route 'account',
2  template: 'account'
3  path: '/me/account'
4  title: 'My Account'
5  meta:
6    keywords: 
7      name: 'keywords'
8      itemprop: 'keywords'
9      content: 'User, Account'

Use function context:

1Router.route 'account',
2  template: 'account'
3  path: '/me/account'
4  meta:
5    keywords: 
6      name: 'keywords'
7      itemprop: 'keywords'
8      content: ->
9        this.data().getKeywords()
10  data: ->
11    getKeywords: ->
12      Collection.Posts.findOne('someId').keywords

Sample config

1Router.configure
2  meta:
3    # <meta charset="UTF-8">
4    charset:
5      charset: 'UTF-8'
6
7    # <meta name="keywords" content="Awes..">
8    keywords: 
9      name: 'keywords'
10      itemprop: 'keywords'
11      content: 'Awesome, Meteor, based, app' 
12    
13    # <meta name="description" itemprop="description" property="og:description" content="Default desc..">
14    description:
15      name: 'description'
16      itemprop: 'description'
17      property: 'og:description'
18      content:  'Default description'
19
20    image:
21      name: 'twitter:image'
22      itemprop: 'image'
23      property: 'og:image'
24      content: 'http://doma..'
25
26    'og:type': 'website'
27    'og:title': ->
28      document.title
29    'og:site_name': 'My Awesome Site'
30
31    url:
32      property: 'og:url'
33      itemprop: 'url'
34      content: ->
35        window.location.href
36
37    'twitter:card': 'summary'
38    'twitter:title': ->
39      document.title
40    'twitter:description': 'Default description'
41    'twitter:site': 
42      name: 'twitter:site'
43      value: '@twitterAccountName'
44    'twitter:creator': 
45      name: 'twitter:creator'
46      value: '@twitterAccountName'
47
48    'http-equiv':
49      'http-equiv': 'X-UA-Compatible'
50      content: 'IE=edge,chrome=1'
51
52    robots: 'index, follow'
53    google: 'notranslate'
54  
55
56  link:
57    # <link rel="canonical" href="http://doma..">
58    canonical: ->
59      window.location.href
60
61    # <link rel="image" sizes="500x500" href="http://doma..">
62    image:
63      rel: 'image'
64      sizes: '500x500'
65      href: 'http://doma..'
66
67    publisher: 'http://plus.google...'
68
69    'shortcut icon':
70      rel: 'shortcut icon'
71      type: 'image/x-icon'
72      href: 'http://domai...'
73
74    'icon':
75      rel: 'icon'
76      type: 'image/png'
77      href: 'http://domai...'
78
79    'apple-touch-icon-144':
80      rel: 'apple-touch-icon'
81      sizes: '144x144'
82      href: 'http://doma..'
83    'apple-touch-icon-114':
84      rel: 'apple-touch-icon'
85      sizes: '114x114'
86      href: 'http://doma..'
87    'apple-touch-icon-72':
88      rel: 'apple-touch-icon'
89      sizes: '72x72'
90      href: 'http://doma..'
91    'apple-touch-icon-57':
92      rel: 'apple-touch-icon'
93      sizes: '57x57'
94      href: 'http://doma..'