@edenjs/meta
v1.0.5
Published
[![TravisCI](https://travis-ci.com/eden-js/meta.svg?branch=master)](https://travis-ci.com/eden-js/meta) [![Issues](https://img.shields.io/github/issues/eden-js/meta.svg)](https://github.com/eden-js/meta/issues) [![License](https://img.shields.io/badge/lic
Downloads
17
Readme
EdenJS - Meta
Meta base logic component for EdenJS
@edenjs/meta
automatically adds middleware functions for metatag generation.
Setup
Install
npm i --save @edenjs/meta
Hooks
sitemap
Usage
The sitemap hook allows you to add things to the global sitemap. Usage
// pre sitemap
this.eden.pre('sitemap', async (map) => {
// get products
const products = await Product.find({
published : true,
});
// get categories
await Promise.all(products.map(async (product) => {
// add to eden
map.urls.push({
url : `/product/${product.get('slug')}`,
img : await Promise.all((await product.get('images') || []).map(async (image) => {
// return image
return {
url : await image.url('md-sq'),
title : product.get('title.en-us'),
caption : image.get('name'),
license : 'https://creativecommons.org/licenses/by/4.0/',
};
})),
lastmod : product.get('updated_at'),
priority : 0.8,
changefreq : 'daily',
});
}));
});
This can also be done in a build function. Usage
/**
* order individual item
*/
const build = () => {
// get categories
(await Product.find({
published : true,
})).map(async (product) => {
// add to eden
// this.eden must be in a controller/daemon extended the core daemon/controller
this.eden.sitemap.add({
url : `/product/${product.get('slug')}`,
img : await Promise.all((await product.get('images') || []).map(async (image) => {
// return image
return {
url : await image.url('md-sq'),
title : product.get('title.en-us'),
caption : image.get('name'),
license : 'https://creativecommons.org/licenses/by/4.0/',
};
})),
lastmod : product.get('updated_at'),
priority : 0.8,
changefreq : 'daily',
});
});
}
Functions
res.meta
Usage
/**
* test action
*
* @route {GET} /test
*/
testAction(req, res) {
// add meta tag
res.meta('name', 'content'); // translates to <meta name="name" content="content" />
}
res.og
Usage
/**
* test action
*
* @route {GET} /test
*/
testAction(req, res) {
// add meta tag
res.og('image', 'https://image.com/image.png', 'image'); // translates to <meta property="og:image" content="https://image.com/image.png" />
}
res.article
Usage
/**
* test action
*
* @route {GET} /test
*/
testAction(req, res) {
// add meta tag
res.article('image', 'https://image.com/image.png', 'image'); // translates to <meta property="article:image" content="https://image.com/image.png" />
}
res.twitter
Usage
/**
* test action
*
* @route {GET} /test
*/
testAction(req, res) {
// add meta tag
res.twitter('image', 'https://image.com/image.png', 'image'); // translates to <meta name="twitter:image" content="https://image.com/image.png" />
}
res.title
Usage
/**
* test action
*
* @route {GET} /test
*/
testAction(req, res) {
// add meta tag
res.title('Page Title'); // translates to <title>Page Title</title> as well as all appropriate meta tags
}
res.description
Usage
/**
* test action
*
* @route {GET} /test
*/
testAction(req, res) {
// add meta tag
res.description('Page Description'); // translates to <meta itemprop="description" name="description" content="Page Description" /> as well as all appropriate meta tags
}
res.image
Usage
/**
* test action
*
* @route {GET} /test
*/
testAction(req, res) {
// add meta tag
res.image('https://image.com/image.png', 100, 100); // translates to <meta itemprop="image" content="https://image.com/image.png" width="100" height="100" />
}