Sitemap

Build StatusHex versionHex downloadsInline docshex.pm

Generating sitemap.xml

Installation

Still developing.

If available in Hex, the package can be installed as:

  1. Add sitemap to your list of dependencies in mix.exs:
  def deps do
    [{:sitemap, ">= 0.0.0"}]
  end
  1. Ensure sitemap is started before your application:
  def application do
    [applications: [:sitemap]]
  end

Usage

Basic
defmodule Sitemaps do
  use Sitemap

  create do
    add "path1", priority: 0.5, changefreq: "hourly", expires: nil, mobile: true
  end

  ping
end
As a function
defmodule Sitemaps do
  use Sitemap

  def generate do
    create do
      add "path1", priority: 0.5, changefreq: "hourly", expires: nil, mobile: true
    end

    ping
  end

end
With Ecto
defmodule Sitemaps do
  use Sitemap,
    host: "http://#{Application.get_env(:myapp, MyApp.Endpoint)[:url][:host]}",
    files_path: "priv/static/sitemaps/",
    public_path: "sitemaps/"

  alias MyApp.Router.Helpers

  create do
    entries =
      MyApp.Entry
      |> MyApp.Repo.all

    Enum.each [false, true], fn bool ->
      add Helpers.entry_path(MyApp.Endpoint, :index),
        priority: 0.5, changefreq: "hourly", expires: nil, mobile: bool

      entries
      |> Enum.each(fn entry ->
        add Helpers.entry_path(MyApp.Endpoint, :show, entry.id, entry.title),
          priority: 0.5, changefreq: "hourly", expires: nil, mobile: bool
      end)

    end
  end

  ping

end

Change options.

Change option( use statement )
defmodule Sitemaps do
  use Sitemap, compress: false, create_index: true

  create do
    add "path1", priority: 0.5, changefreq: "hourly"
    add "path2", priority: 0.5, changefreq: "hourly"
  end

  ping
end
Change option( create function's option )
defmodule Sitemaps do
  use Sitemap

  create compress: false, create_index: true do
    add "path1", priority: 0.5, changefreq: "hourly"
    add "path2", priority: 0.5, changefreq: "hourly"
  end

  ping
end

Features

Current Features or To-Do