# Metatags
[![CircleCI](https://circleci.com/gh/johantell/metatags.svg?style=svg)](https://circleci.com/gh/johantell/metatags)
[![Coverage Status](https://coveralls.io/repos/github/johantell/metatags/badge.svg?branch=master)](https://coveralls.io/github/johantell/metatags?branch=master)
[![Hex version](https://img.shields.io/hexpm/v/metatags.svg)](https://hex.pm/metatags)
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](https://hexdocs.pm/metatags).
## Installation
Add `metatags` to your list of dependencies in `mix.exs`:
```elixir
def deps do
[{:metatags, "~> 0.4.0"}]
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).
```elixir
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:
```elixir
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
```elixir
<!DOCTYPE>
<html>
<head>
<%= Metatags.print_tags(@conn) %>
</head>
<body>
<h1>Welcome</h1>
</body>
</html>
```