Base macro for content types.
Reduces content type definitions from ~25 lines of boilerplate to ~3 lines. All five built-in types (article, note, page, project, talk) use this macro.
Options
:name— atom identifier (required):directory— content subdirectory (default:"<name>s"):url_prefix— URL path prefix (default: directory):layout— default layout name (default:to_string(name)):required_fields— front matter requirements (default:[:title, :date])
Examples
defmodule MyApp.ContentTypes.Recipe do
use Sayfa.ContentTypes.Base, name: :recipe
end
defmodule MyApp.ContentTypes.Page do
use Sayfa.ContentTypes.Base,
name: :page,
url_prefix: "",
required_fields: [:title]
end