Skip to content

johantell/metatags

Repository files navigation

Metatags

CircleCI Coverage Status Hex version

Metatags provides an easy and flexible way to set both default and page specific metatags that are used for SEO, Facebook, Twitter etc.

Documentation is available at https://hexdocs.pm/metatags.

Installation

Add metatags to your list of dependencies in mix.exs:

def deps do
  [{:metatags, "~> 0.3.2"}]
end

Add the plug to your router and configure the defaults (You can use Application.get_env/3 if you'd like to extract it into the configuration file).

defmodule MyRouter do
  use Plug.Conn

  plug Metatags.Plug,
    sitename: "My_app",
    title_separator: "-",
    default_tags: %{
      "title" => "Welcome!",
      "description" => "My_app is a great app",
      "keywords" => ["My_app", "great", "elixir"]
    }

Usage

In your controller put page specific data:

conn
|> Metatags.put("title", "About My_app")
|> Metatags.put("description", "My app is just a regular app")
|> Metatags.put("og", %{"image" => "http://myimage.jpg"}) # You can have nested structures
|> Metatags.put("og:image", "http://myimage.jpg") # or define them inline
|> Metatags.put("canonical", "http://my-url.com")
|> Metatags.put("alternate", "http://en.my-url.com", hreflang: "en-GB")

And print them out inside your head tag

<!DOCTYPE>
<html>
  <head>
    <%= Metatags.print_tags(@conn) %>
  </head>
  <body>
    <h1>Welcome</h1>
  </body>
</html>