@edenjs/meta

1.0.5 • Public • Published

EdenJS - Meta

TravisCI Issues License Awesome Discord

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

Readme

Keywords

none

Package Sidebar

Install

npm i @edenjs/meta

Weekly Downloads

2

Version

1.0.5

License

ISC

Unpacked Size

16.7 kB

Total Files

9

Last publish

Collaborators

  • edencoder
  • installgen2
  • ewhal