node package manager

apostrophe-seo

apostrophe-seo

SEO for ApostropheCMS.

Add useful meta fields to all pages and pieces.

Installation

npm install apostrophe-seo --save

Use

Configure apostrophe-seo in app.js.

const apos = require('apostrophe')({
  shortName: 'project',
  modules: {
    'apostrophe-seo': {}
  }

If you choose to disable fields for a piece or page you can do so by setting seo: false on the module. apostrophe-files, apostrophe-global, apostrophe-groups, apostrophe-images, apostrophe-users have seo: false configured by default.

module.exports = {
  name: 'person',
  label: 'Person',
  pluralLabel: 'People',
  seo: false
};

Add the following to layout.html that all of your pages extend, or to outerLayout.html if you have one in apostrophe-templates/views/.

{% if data.piece %}
  {% if data.piece.seoTitle %}
    {% set title = data.piece.seoTitle %}
  {% else %}
    {% set title = data.piece.title %}
  {% endif %}
{% else %}
  {% if data.page.seoTitle %}
    {% set title = data.page.seoTitle %}
  {% else %}
    {% set title = data.page.title %}
  {% endif %}
{% endif %}
 
{% block title %}{{ title }}{% endblock %}
 
{% block extraHead %}
  {% if data.piece %}
    {% if data.piece.seoDescription %}
      {% set description = data.piece.seoDescription %}
    {% endif %}
  {% else %}
    {% if data.page.seoDescription %}
      {% set description = data.page.seoDescription %}
    {% endif %}
  {% endif %}
  {% if data.piece.seoDescription or
        data.page.seoDescription %}
    <meta name="description" content="{{ description }}" />
  {% endif %}
{% endblock %}