Skip to content

Commit 49b47ed

Browse files
committed
add bcrumbs json
1 parent 863fcc9 commit 49b47ed

File tree

3 files changed

+30
-5
lines changed

3 files changed

+30
-5
lines changed

components/Breadcrumbs/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ const Breadcrumbs = ({ crumbs }) => {
1111
<span>
1212
<Link href='/'>Home</Link>
1313
</span>
14-
{crumbs.map(crumb => (
15-
<span>
14+
{crumbs.map((crumb, i) => (
15+
<span key={`${crumb.name}-${i}`}>
1616
<Link href={crumb.href}>{crumb.name}</Link>
1717
</span>
1818
))}

components/Layout/index.js

+27-2
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,35 @@ import Head from 'next/head';
33
import Navbar from '../Navbar';
44
import Footer from '../Footer';
55

6-
export default function Layout({ children, pageTitle }) {
6+
const generateBreadcrumbs = crumbs => {
7+
const BASE_URL = 'https://khendrikse.github.io/';
8+
9+
const json = {
10+
'@context': 'https://schema.org/',
11+
'@type': 'BreadcrumbList',
12+
itemListElement: crumbs.map(({ name, item }, index) => ({
13+
'@type': 'ListItem',
14+
position: index + 1,
15+
name,
16+
item: `${BASE_URL}${item}`
17+
}))
18+
};
19+
20+
return JSON.stringify(json);
21+
};
22+
23+
export default function Layout({ children, pageTitle, breadcrumbs }) {
724
return (
825
<>
926
<Head>
1027
<meta name='viewport' content='width=device-width, initial-scale=1' />
1128
<meta name='description' content='Online space, blog and portfolio' />
1229
<title>{pageTitle}</title>
30+
{breadcrumbs && (
31+
<script type='application/ld+json'>
32+
{generateBreadcrumbs(breadcrumbs)}
33+
</script>
34+
)}
1335
</Head>
1436
<div className='wrapper'>
1537
<section className='layout'>
@@ -24,5 +46,8 @@ export default function Layout({ children, pageTitle }) {
2446

2547
Layout.propTypes = {
2648
children: PropTypes.element,
27-
pageTitle: PropTypes.string
49+
pageTitle: PropTypes.string,
50+
breadcrumbs: PropTypes.arrayOf(
51+
PropTypes.shape({ name: PropTypes.string, item: PropTypes.string })
52+
)
2853
};

pages/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import styles from 'styles/home.module.scss';
66
import createFeeds from '../scripts/feed';
77

88
const Index = ({ posts, title }) => (
9-
<Layout pageTitle={title}>
9+
<Layout pageTitle={title} breadcrumbs={[{ name: 'home', item: '' }]}>
1010
<div className='container'>
1111
<div className={styles.home__intro}>
1212
I am a Front-End Developer from The Netherlands with a background in

0 commit comments

Comments
 (0)