From ecf6bd8d75e77920752ca031fbaddec5bc529d07 Mon Sep 17 00:00:00 2001 From: Jonas Braathen Date: Tue, 17 Sep 2019 23:54:47 +0200 Subject: [PATCH] Add image meta tags --- src/components/Layout.js | 7 ++--- src/components/Meta.js | 50 ++++++++++++++++++++++++++++++++ src/pages/404.js | 4 +-- src/pages/booking.js | 4 +-- src/pages/foreningene.js | 4 +-- src/pages/profil.js | 4 +-- src/pages/program.js | 4 +-- src/templates/association.js | 9 ++++-- src/templates/author.js | 4 +-- src/templates/blog.js | 4 +-- src/templates/category.js | 4 +-- src/templates/event-organizer.js | 4 +-- src/templates/event-type.js | 4 +-- src/templates/event.js | 17 ++++++----- src/templates/page.js | 17 ++++++----- src/templates/post.js | 19 +++++++----- src/templates/tag.js | 4 +-- src/templates/venue.js | 11 ++++--- 18 files changed, 119 insertions(+), 55 deletions(-) create mode 100644 src/components/Meta.js diff --git a/src/components/Layout.js b/src/components/Layout.js index 5275147..9820328 100644 --- a/src/components/Layout.js +++ b/src/components/Layout.js @@ -1,17 +1,14 @@ import React from 'react' import PropTypes from 'prop-types' -import Helmet from 'react-helmet' import classNames from 'classnames' import Navbar from './Navbar' import Footer from './Footer' +import Meta from './Meta' import '../css/main.scss' const TemplateWrapper = ({ children, classes }) => (
- +
{children}
diff --git a/src/components/Meta.js b/src/components/Meta.js new file mode 100644 index 0000000..af93f6f --- /dev/null +++ b/src/components/Meta.js @@ -0,0 +1,50 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { Helmet } from 'react-helmet'; + +const Meta = ({ title, description, image, pathname, article }) => { + const imageUrl = image && image.localFile && image.localFile.url + const meta = { + title: title, + description: description, + image: imageUrl, + url: pathname, + } + return ( + + {meta.description && } + {meta.image && } + {meta.url && } + {(article ? true : null) && ( + + )} + {meta.title && } + {meta.description && ( + + )} + {meta.image && } + + ) +} + +export default Meta + +Meta.propTypes = { + title: PropTypes.string, + description: PropTypes.string, + image: PropTypes.string, + pathname: PropTypes.string, + article: PropTypes.bool, +} + +Meta.defaultProps = { + title: null, + description: null, + image: null, + pathname: null, + article: false, +} diff --git a/src/pages/404.js b/src/pages/404.js index eff8d3c..3f5b65b 100644 --- a/src/pages/404.js +++ b/src/pages/404.js @@ -1,10 +1,10 @@ import React from 'react' -import Helmet from 'react-helmet' +import Meta from '../components/Meta' import Layout from '../components/Layout' const NotFoundPage = () => ( - +

404: Denne siden er på grisefest

Lykke til videre.

diff --git a/src/pages/booking.js b/src/pages/booking.js index 63648ca..9dd8dc2 100644 --- a/src/pages/booking.js +++ b/src/pages/booking.js @@ -1,7 +1,7 @@ import React from 'react' -import Helmet from 'react-helmet' import { graphql, useStaticQuery } from 'gatsby' import Img from 'gatsby-image' +import Meta from '../components/Meta' import Layout from '../components/Layout' import { VenueTemplate } from '../templates/venue' @@ -65,7 +65,7 @@ export const BookingPage = () => { return ( - +

{title}

diff --git a/src/pages/foreningene.js b/src/pages/foreningene.js index c805338..93de18b 100644 --- a/src/pages/foreningene.js +++ b/src/pages/foreningene.js @@ -1,7 +1,7 @@ import React from 'react' import PropTypes from 'prop-types' -import Helmet from 'react-helmet' import { graphql } from 'gatsby' +import Meta from '../components/Meta' import Layout from '../components/Layout' import AssociationList from '../components/AssociationList' @@ -12,7 +12,7 @@ export default class AssociationListPage extends React.Component { return ( - + ) diff --git a/src/pages/profil.js b/src/pages/profil.js index ed2535e..bdb720c 100644 --- a/src/pages/profil.js +++ b/src/pages/profil.js @@ -1,10 +1,10 @@ import React from 'react' -import Helmet from 'react-helmet' +import Meta from '../components/Meta' import Layout from '../components/Layout' const DesignManual = () => ( - +

Profil

Hei

diff --git a/src/pages/program.js b/src/pages/program.js index 02b9500..16d8c70 100644 --- a/src/pages/program.js +++ b/src/pages/program.js @@ -1,7 +1,7 @@ import React from 'react' import PropTypes from 'prop-types' -import Helmet from 'react-helmet' import { graphql } from 'gatsby' +import Meta from '../components/Meta' import Layout from '../components/Layout' import EventList from '../components/EventList' @@ -12,7 +12,7 @@ export default class EventProgram extends React.Component { return ( - + ) : ( - {title} - )} + {title} + )}
)} {homepage && ( @@ -51,6 +52,10 @@ const AssociationPage = ({ data }) => { return ( + { return ( - + ) diff --git a/src/templates/blog.js b/src/templates/blog.js index 78faa00..e626643 100644 --- a/src/templates/blog.js +++ b/src/templates/blog.js @@ -1,7 +1,7 @@ import React from 'react' import PropTypes from 'prop-types' -import Helmet from 'react-helmet' import { graphql } from 'gatsby' +import Meta from '../components/Meta' import Layout from '../components/Layout' import PostList from '../components/PostList' import Pagination from '../components/Pagination' @@ -13,7 +13,7 @@ export default class BlogPage extends React.Component { return ( - + diff --git a/src/templates/category.js b/src/templates/category.js index dddd96c..4b3fdd3 100644 --- a/src/templates/category.js +++ b/src/templates/category.js @@ -1,6 +1,6 @@ import React from 'react' -import Helmet from 'react-helmet' import { graphql } from 'gatsby' +import Meta from '../components/Meta' import Layout from '../components/Layout' import PostList from '../components/PostList' @@ -14,7 +14,7 @@ const Category = props => { return ( - + ) diff --git a/src/templates/event-organizer.js b/src/templates/event-organizer.js index 85f817a..3290c8e 100644 --- a/src/templates/event-organizer.js +++ b/src/templates/event-organizer.js @@ -1,10 +1,10 @@ import React from 'react' import PropTypes from 'prop-types' -import Helmet from 'react-helmet' import { graphql, Link } from 'gatsby' import moment from 'moment' import 'moment/locale/nb' +import Meta from '../components/Meta' import Layout from '../components/Layout' import EventList from '../components/EventList' @@ -18,7 +18,7 @@ export default class EventOrganizerPage extends React.Component { return ( - + - + ) diff --git a/src/templates/event.js b/src/templates/event.js index 8644574..e742ad9 100644 --- a/src/templates/event.js +++ b/src/templates/event.js @@ -1,11 +1,11 @@ import React from 'react' import PropTypes from 'prop-types' -import Helmet from 'react-helmet' import { graphql, Link } from 'gatsby' import Img from 'gatsby-image' import moment from 'moment' import 'moment/locale/nb' +import Meta from '../components/Meta' import Layout from '../components/Layout' moment.locale('nb') @@ -120,11 +120,11 @@ export const EventTemplate = ({ {featuredMedia.localFile.childImageSharp ? ( ) : ( - {featuredMedia.caption - )} + {featuredMedia.caption + )} {/* {featuredMedia.caption && (
{ return ( - + { @@ -16,11 +16,11 @@ export const PageTemplate = ({ title, content, featuredMedia }) => { {featuredMedia.localFile.childImageSharp ? ( ) : ( - {featuredMedia.caption - )} + {featuredMedia.caption + )}
{featuredMedia.caption && (
{ return ( - +
@@ -44,11 +44,11 @@ export const BlogPostTemplate = ({ {featuredMedia.localFile.childImageSharp ? ( ) : ( - {featuredMedia.caption - )} + {featuredMedia.caption + )} {featuredMedia.caption && (
{ return ( - + { return ( - + ) diff --git a/src/templates/venue.js b/src/templates/venue.js index f24f517..3151b61 100644 --- a/src/templates/venue.js +++ b/src/templates/venue.js @@ -1,9 +1,9 @@ import React from 'react' import PropTypes from 'prop-types' -import Helmet from 'react-helmet' import { graphql, Link } from 'gatsby' import Img from 'gatsby-image' import classNames from 'classnames' +import Meta from '../components/Meta' import Layout from '../components/Layout' import Map from '../components/Map' @@ -49,8 +49,8 @@ export class VenueTemplate extends React.Component { {featuredMedia.localFile.childImageSharp ? ( ) : ( - {title} - )} + {title} + )}
)}
@@ -178,7 +178,10 @@ const VenuePage = ({ data }) => { return ( - +