summaryrefslogtreecommitdiff
path: root/docs/build/Content
diff options
context:
space:
mode:
Diffstat (limited to 'docs/build/Content')
-rw-r--r--docs/build/Content/An-Overview/index.html969
-rw-r--r--docs/build/Content/Extending-Content/index.html959
2 files changed, 1928 insertions, 0 deletions
diff --git a/docs/build/Content/An-Overview/index.html b/docs/build/Content/An-Overview/index.html
new file mode 100644
index 0000000..19c8117
--- /dev/null
+++ b/docs/build/Content/An-Overview/index.html
@@ -0,0 +1,969 @@
+
+<!DOCTYPE html>
+<html lang="en" class="no-js">
+ <head>
+
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+
+
+
+
+ <link rel="shortcut icon" href="../../assets/images/favicon.png">
+
+ <meta name="generator" content="mkdocs-0.16.3, mkdocs-material-1.6.1">
+
+
+
+ <title>Content Overview</title>
+
+
+
+ <script src="../../assets/javascripts/modernizr-56ade86843.js"></script>
+
+
+ <link rel="stylesheet" href="../../assets/stylesheets/application-4d0d3f2fbf.css">
+
+ <link rel="stylesheet" href="../../assets/stylesheets/application-f78e5cb881.palette.css">
+
+
+
+
+
+
+
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono">
+ <style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style>
+
+ <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
+
+
+
+ </head>
+
+
+
+
+ <body data-md-color-primary="grey" data-md-color-accent="light-blue">
+
+ <svg class="md-svg">
+ <defs>
+
+
+ <svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg>
+
+ </defs>
+ </svg>
+ <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="drawer">
+ <input class="md-toggle" data-md-toggle="search" type="checkbox" id="search">
+ <label class="md-overlay" data-md-component="overlay" for="drawer"></label>
+
+ <header class="md-header" data-md-component="header">
+ <nav class="md-header-nav md-grid">
+ <div class="md-flex">
+ <div class="md-flex__cell md-flex__cell--shrink">
+
+ <a href="../.." title="Ponzu" class="md-logo md-header-nav__button">
+ <img src="../../images/logo.png" width="24" height="24">
+ </a>
+
+ </div>
+ <div class="md-flex__cell md-flex__cell--shrink">
+ <label class="md-icon md-icon--menu md-header-nav__button" for="drawer"></label>
+ </div>
+ <div class="md-flex__cell md-flex__cell--stretch">
+ <span class="md-flex__ellipsis md-header-nav__title">
+
+
+
+ <span class="md-header-nav__parent">
+ Content
+ </span>
+
+
+ An Overview
+
+ </span>
+ </div>
+ <div class="md-flex__cell md-flex__cell--shrink">
+
+ <label class="md-icon md-icon--search md-header-nav__button" for="search"></label>
+
+<div class="md-search" data-md-component="search">
+ <label class="md-search__overlay" for="search"></label>
+ <div class="md-search__inner">
+ <form class="md-search__form" name="search">
+ <input type="text" class="md-search__input" name="query" required placeholder="Search" accesskey="s" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query">
+ <label class="md-icon md-search__icon" for="search"></label>
+ <button type="reset" class="md-icon md-search__icon" data-md-component="reset">close</button>
+ </form>
+ <div class="md-search__output">
+ <div class="md-search__scrollwrap" data-md-scrollfix>
+ <div class="md-search-result" data-md-component="result">
+ <div class="md-search-result__meta" data-md-lang-result-none="No matching documents" data-md-lang-result-one="1 matching document" data-md-lang-result-other="# matching documents">
+ Type to start searching
+ </div>
+ <ol class="md-search-result__list"></ol>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+
+ </div>
+ <div class="md-flex__cell md-flex__cell--shrink">
+ <div class="md-header-nav__source">
+
+
+
+
+
+
+
+ <a href="https://github.com/ponzu-cms/ponzu" title="Go to repository" class="md-source" data-md-source="github">
+
+ <div class="md-source__icon">
+ <svg viewBox="0 0 24 24" width="24" height="24">
+ <use xlink:href="#github" width="24" height="24"></use>
+ </svg>
+ </div>
+
+ <div class="md-source__repository">
+ ponzu-cms/ponzu
+ </div>
+ </a>
+
+
+ </div>
+ </div>
+ </div>
+ </nav>
+</header>
+
+ <div class="md-container">
+
+
+ <main class="md-main">
+ <div class="md-main__inner md-grid" data-md-component="container">
+
+
+ <div class="md-sidebar md-sidebar--primary" data-md-component="navigation">
+ <div class="md-sidebar__scrollwrap">
+ <div class="md-sidebar__inner">
+ <nav class="md-nav md-nav--primary" data-md-level="0">
+ <label class="md-nav__title md-nav__title--site" for="drawer">
+
+ <i class="md-logo md-nav__button">
+ <img src="../../images/logo.png">
+ </i>
+
+ Ponzu
+ </label>
+
+ <div class="md-nav__source">
+
+
+
+
+
+
+ <a href="https://github.com/ponzu-cms/ponzu" title="Go to repository" class="md-source" data-md-source="github">
+
+ <div class="md-source__icon">
+ <svg viewBox="0 0 24 24" width="24" height="24">
+ <use xlink:href="#github" width="24" height="24"></use>
+ </svg>
+ </div>
+
+ <div class="md-source__repository">
+ ponzu-cms/ponzu
+ </div>
+ </a>
+
+ </div>
+
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../.." title="Home" class="md-nav__link">
+ Home
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-2" type="checkbox" id="nav-2">
+
+ <label class="md-nav__link" for="nav-2">
+ CLI
+ </label>
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
+ <label class="md-nav__title" for="nav-2">
+ CLI
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../CLI/General-Usage/" title="General Usage" class="md-nav__link">
+ General Usage
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../CLI/Generating-References/" title="Generating References" class="md-nav__link">
+ Generating References
+ </a>
+ </li>
+
+
+ </ul>
+ </nav>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--active md-nav__item--nested">
+
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-3" type="checkbox" id="nav-3" checked>
+
+ <label class="md-nav__link" for="nav-3">
+ Content
+ </label>
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
+ <label class="md-nav__title" for="nav-3">
+ Content
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--active">
+
+ <input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="toc">
+
+
+ <label class="md-nav__link md-nav__link--active" for="toc">
+ An Overview
+ </label>
+
+ <a href="./" title="An Overview" class="md-nav__link md-nav__link--active">
+ An Overview
+ </a>
+
+
+<nav class="md-nav md-nav--secondary">
+
+
+
+ <label class="md-nav__title" for="toc">Table of contents</label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+ <li class="md-nav__item">
+ <a href="#generating-content-types" title="Generating Content types" class="md-nav__link">
+ Generating Content types
+ </a>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#related-packages" title="Related packages" class="md-nav__link">
+ Related packages
+ </a>
+
+</li>
+
+
+
+ </ul>
+
+</nav>
+
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../Extending-Content/" title="Extending Content" class="md-nav__link">
+ Extending Content
+ </a>
+ </li>
+
+
+ </ul>
+ </nav>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-4" type="checkbox" id="nav-4">
+
+ <label class="md-nav__link" for="nav-4">
+ Form Fields
+ </label>
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
+ <label class="md-nav__title" for="nav-4">
+ Form Fields
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../Form-Fields/HTML-Inputs/" title="HTML Inputs" class="md-nav__link">
+ HTML Inputs
+ </a>
+ </li>
+
+
+ </ul>
+ </nav>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-5" type="checkbox" id="nav-5">
+
+ <label class="md-nav__link" for="nav-5">
+ HTTP APIs
+ </label>
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
+ <label class="md-nav__title" for="nav-5">
+ HTTP APIs
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../HTTP-APIs/Content/" title="Content" class="md-nav__link">
+ Content
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../HTTP-APIs/File-Metadata/" title="File Metadata" class="md-nav__link">
+ File Metadata
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../HTTP-APIs/Search/" title="Search" class="md-nav__link">
+ Search
+ </a>
+ </li>
+
+
+ </ul>
+ </nav>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6">
+
+ <label class="md-nav__link" for="nav-6">
+ Interfaces
+ </label>
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
+ <label class="md-nav__title" for="nav-6">
+ Interfaces
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../Interfaces/API/" title="API" class="md-nav__link">
+ API
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../Interfaces/Editor/" title="Editor" class="md-nav__link">
+ Editor
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../Interfaces/Format/" title="Format" class="md-nav__link">
+ Format
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../Interfaces/Item/" title="Item" class="md-nav__link">
+ Item
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../Interfaces/Search/" title="Search" class="md-nav__link">
+ Search
+ </a>
+ </li>
+
+
+ </ul>
+ </nav>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7">
+
+ <label class="md-nav__link" for="nav-7">
+ Ponzu Addons
+ </label>
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
+ <label class="md-nav__title" for="nav-7">
+ Ponzu Addons
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../Ponzu-Addons/Creating-Addons/" title="Creating Addons" class="md-nav__link">
+ Creating Addons
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../Ponzu-Addons/Using-Addons/" title="Using Addons" class="md-nav__link">
+ Using Addons
+ </a>
+ </li>
+
+
+ </ul>
+ </nav>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8">
+
+ <label class="md-nav__link" for="nav-8">
+ Quickstart
+ </label>
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
+ <label class="md-nav__title" for="nav-8">
+ Quickstart
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../Quickstart/Overview/" title="Overview" class="md-nav__link">
+ Overview
+ </a>
+ </li>
+
+
+ </ul>
+ </nav>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9">
+
+ <label class="md-nav__link" for="nav-9">
+ References
+ </label>
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
+ <label class="md-nav__title" for="nav-9">
+ References
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../References/Overview/" title="Overview" class="md-nav__link">
+ Overview
+ </a>
+ </li>
+
+
+ </ul>
+ </nav>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-10" type="checkbox" id="nav-10">
+
+ <label class="md-nav__link" for="nav-10">
+ Running Backups
+ </label>
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
+ <label class="md-nav__title" for="nav-10">
+ Running Backups
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../Running-Backups/Backups/" title="Backups" class="md-nav__link">
+ Backups
+ </a>
+ </li>
+
+
+ </ul>
+ </nav>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-11" type="checkbox" id="nav-11">
+
+ <label class="md-nav__link" for="nav-11">
+ System Configuration
+ </label>
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
+ <label class="md-nav__title" for="nav-11">
+ System Configuration
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../System-Configuration/Settings/" title="Settings" class="md-nav__link">
+ Settings
+ </a>
+ </li>
+
+
+ </ul>
+ </nav>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-12" type="checkbox" id="nav-12">
+
+ <label class="md-nav__link" for="nav-12">
+ System Deployment
+ </label>
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
+ <label class="md-nav__title" for="nav-12">
+ System Deployment
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../System-Deployment/Docker/" title="Docker" class="md-nav__link">
+ Docker
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../System-Deployment/SysV-Style/" title="SysV Style" class="md-nav__link">
+ SysV Style
+ </a>
+ </li>
+
+
+ </ul>
+ </nav>
+ </li>
+
+
+ </ul>
+</nav>
+ </div>
+ </div>
+ </div>
+
+
+ <div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
+ <div class="md-sidebar__scrollwrap">
+ <div class="md-sidebar__inner">
+
+<nav class="md-nav md-nav--secondary">
+
+
+
+ <label class="md-nav__title" for="toc">Table of contents</label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+ <li class="md-nav__item">
+ <a href="#generating-content-types" title="Generating Content types" class="md-nav__link">
+ Generating Content types
+ </a>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#related-packages" title="Related packages" class="md-nav__link">
+ Related packages
+ </a>
+
+</li>
+
+
+
+ </ul>
+
+</nav>
+ </div>
+ </div>
+ </div>
+
+
+ <div class="md-content">
+ <article class="md-content__inner md-typeset">
+
+
+
+ <h1>An Overview</h1>
+
+ <p>Nearly everything you work on in Ponzu is inside content files on the content types you create. These types must all reside in the <code>content</code> package and are the fundamental core of your CMS. In order for Content types to be rendered and managed by the CMS, they must implement the <code>editor.Editable</code> interface, and add their own <code>interface{}</code> container to the global <code>item.Types</code> map. </p>
+<p>Sound like a lot? Don't worry, all of this can be done for you by using the code-generating command line tools that come with Ponzu.</p>
+<p>It is rare to hand-write a new Content type, and should be generated instead!</p>
+<h3 id="generating-content-types">Generating Content types<a class="headerlink" href="#generating-content-types" title="Permanent link">&para;</a></h3>
+<p>To generate content types and boilerplate code, use the Ponzu CLI <code>generate</code> command as such:</p>
+<div class="codehilite"><pre><span></span>$ ponzu generate content post title:string body:string:richtext author:string
+</pre></div>
+
+
+<p>The command above will create a file at <code>content/post.go</code> and will generate the following code:</p>
+<div class="codehilite"><pre><span></span><span class="kn">package</span> <span class="nx">content</span>
+
+<span class="kn">import</span> <span class="p">(</span>
+ <span class="s">&quot;fmt&quot;</span>
+
+ <span class="s">&quot;github.com/ponzu-cms/ponzu/management/editor&quot;</span>
+ <span class="s">&quot;github.com/ponzu-cms/ponzu/system/item&quot;</span>
+<span class="p">)</span>
+
+<span class="kd">type</span> <span class="nx">Post</span> <span class="kd">struct</span> <span class="p">{</span>
+ <span class="nx">item</span><span class="p">.</span><span class="nx">Item</span>
+
+ <span class="nx">Title</span> <span class="kt">string</span> <span class="s">`json:&quot;title&quot;`</span>
+ <span class="nx">Body</span> <span class="kt">string</span> <span class="s">`json:&quot;body&quot;`</span>
+ <span class="nx">Author</span> <span class="kt">string</span> <span class="s">`json:&quot;author&quot;`</span>
+<span class="p">}</span>
+
+<span class="c1">// MarshalEditor writes a buffer of html to edit a Post within the CMS</span>
+<span class="c1">// and implements editor.Editable</span>
+<span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">MarshalEditor</span><span class="p">()</span> <span class="p">([]</span><span class="kt">byte</span><span class="p">,</span> <span class="kt">error</span><span class="p">)</span> <span class="p">{</span>
+ <span class="nx">view</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">editor</span><span class="p">.</span><span class="nx">Form</span><span class="p">(</span><span class="nx">p</span><span class="p">,</span>
+ <span class="c1">// Take note that the first argument to these Input-like functions</span>
+ <span class="c1">// is the string version of each Post field, and must follow</span>
+ <span class="c1">// this pattern for auto-decoding and auto-encoding reasons:</span>
+ <span class="nx">editor</span><span class="p">.</span><span class="nx">Field</span><span class="p">{</span>
+ <span class="nx">View</span><span class="p">:</span> <span class="nx">editor</span><span class="p">.</span><span class="nx">Input</span><span class="p">(</span><span class="s">&quot;Title&quot;</span><span class="p">,</span> <span class="nx">p</span><span class="p">,</span> <span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kt">string</span><span class="p">{</span>
+ <span class="s">&quot;label&quot;</span><span class="p">:</span> <span class="s">&quot;Title&quot;</span><span class="p">,</span>
+ <span class="s">&quot;type&quot;</span><span class="p">:</span> <span class="s">&quot;text&quot;</span><span class="p">,</span>
+ <span class="s">&quot;placeholder&quot;</span><span class="p">:</span> <span class="s">&quot;Enter the Title here&quot;</span><span class="p">,</span>
+ <span class="p">}),</span>
+ <span class="p">},</span>
+ <span class="nx">editor</span><span class="p">.</span><span class="nx">Field</span><span class="p">{</span>
+ <span class="nx">View</span><span class="p">:</span> <span class="nx">editor</span><span class="p">.</span><span class="nx">Richtext</span><span class="p">(</span><span class="s">&quot;Body&quot;</span><span class="p">,</span> <span class="nx">p</span><span class="p">,</span> <span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kt">string</span><span class="p">{</span>
+ <span class="s">&quot;label&quot;</span><span class="p">:</span> <span class="s">&quot;Body&quot;</span><span class="p">,</span>
+ <span class="s">&quot;placeholder&quot;</span><span class="p">:</span> <span class="s">&quot;Enter the Body here&quot;</span><span class="p">,</span>
+ <span class="p">}),</span>
+ <span class="p">},</span>
+ <span class="nx">editor</span><span class="p">.</span><span class="nx">Field</span><span class="p">{</span>
+ <span class="nx">View</span><span class="p">:</span> <span class="nx">editor</span><span class="p">.</span><span class="nx">Input</span><span class="p">(</span><span class="s">&quot;Author&quot;</span><span class="p">,</span> <span class="nx">p</span><span class="p">,</span> <span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kt">string</span><span class="p">{</span>
+ <span class="s">&quot;label&quot;</span><span class="p">:</span> <span class="s">&quot;Author&quot;</span><span class="p">,</span>
+ <span class="s">&quot;type&quot;</span><span class="p">:</span> <span class="s">&quot;text&quot;</span><span class="p">,</span>
+ <span class="s">&quot;placeholder&quot;</span><span class="p">:</span> <span class="s">&quot;Enter the Author here&quot;</span><span class="p">,</span>
+ <span class="p">}),</span>
+ <span class="p">},</span>
+ <span class="p">)</span>
+
+ <span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
+ <span class="k">return</span> <span class="kc">nil</span><span class="p">,</span> <span class="nx">fmt</span><span class="p">.</span><span class="nx">Errorf</span><span class="p">(</span><span class="s">&quot;Failed to render Post editor view: %s&quot;</span><span class="p">,</span> <span class="nx">err</span><span class="p">.</span><span class="nx">Error</span><span class="p">())</span>
+ <span class="p">}</span>
+
+ <span class="k">return</span> <span class="nx">view</span><span class="p">,</span> <span class="kc">nil</span>
+<span class="p">}</span>
+
+<span class="kd">func</span> <span class="nx">init</span><span class="p">()</span> <span class="p">{</span>
+ <span class="nx">item</span><span class="p">.</span><span class="nx">Types</span><span class="p">[</span><span class="s">&quot;Post&quot;</span><span class="p">]</span> <span class="p">=</span> <span class="kd">func</span><span class="p">()</span> <span class="kd">interface</span><span class="p">{}</span> <span class="p">{</span> <span class="k">return</span> <span class="nb">new</span><span class="p">(</span><span class="nx">Post</span><span class="p">)</span> <span class="p">}</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>The code above is the baseline amount required to manage content for the <code>Post</code> type from within the CMS. See <a href="../../Content/Extending-Content">Extending Content</a> for information about how to add more functionality to your Content types. </p>
+<p>All content managed by the CMS and exposed via the API is considered an "item", and thus should embed the <code>item.Item</code> type. There are many benefits to this, such as becoming automatically sortable by time, and being given default methods that are useful inside and out of the CMS. All content types that are created by the <code>generate</code> command via Ponzu CLI will embed Item. </p>
+<h3 id="related-packages">Related packages<a class="headerlink" href="#related-packages" title="Permanent link">&para;</a></h3>
+<p>The <code>item</code> package has a number of useful interfaces, which make it simple to add functionality to all content types and other types that embed Item. </p>
+<p>The <code>editor</code> package has the Editable interface, which allows types to create an editor for their fields within the CMS. Additionally, there is a helper function <code>editor.Form</code> which simplifies defining the editor's input layout and input types using <code>editor.Input</code> and various other functions to make HTML input elements like Select, Checkbox, Richtext, Textarea and more.</p>
+<p>The <code>api</code> package has interfaces including <code>api.Createable</code> and <code>api.Mergeable</code> which make it trivial to accept and approve or reject content submitted from 3rd parties (POST from HTML forms, mobile clients, etc).</p>
+
+
+
+
+
+
+
+ </article>
+ </div>
+ </div>
+ </main>
+
+
+<footer class="md-footer">
+
+ <div class="md-footer-nav">
+ <nav class="md-footer-nav__inner md-grid">
+
+ <a href="../../CLI/Generating-References/" title="Generating References" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
+ <div class="md-flex__cell md-flex__cell--shrink">
+ <i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
+ </div>
+ <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
+ <span class="md-flex__ellipsis">
+ <span class="md-footer-nav__direction">
+ Previous
+ </span>
+ Generating References
+ </span>
+ </div>
+ </a>
+
+
+ <a href="../Extending-Content/" title="Extending Content" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
+ <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
+ <span class="md-flex__ellipsis">
+ <span class="md-footer-nav__direction">
+ Next
+ </span>
+ Extending Content
+ </span>
+ </div>
+ <div class="md-flex__cell md-flex__cell--shrink">
+ <i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i>
+ </div>
+ </a>
+
+ </nav>
+ </div>
+
+ <div class="md-footer-meta md-typeset">
+ <div class="md-footer-meta__inner md-grid">
+ <div class="md-footer-copyright">
+
+ powered by
+ <a href="http://www.mkdocs.org" title="MkDocs">MkDocs</a>
+ and
+ <a href="http://squidfunk.github.io/mkdocs-material/" title="Material for MkDocs">
+ Material for MkDocs</a>
+ </div>
+
+
+ <div class="md-footer-social">
+
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
+
+ <a href="https://github.com/ponzu-cms" class="md-footer-social__link fa fa-github"></a>
+
+ <a href="https://twitter.com/ponzu_cms" class="md-footer-social__link fa fa-twitter"></a>
+
+ </div>
+
+
+ </div>
+ </div>
+</footer>
+
+ </div>
+
+ <script src="../../assets/javascripts/application-6b599127bc.js"></script>
+ <script>app.initialize({url:{base:"../.."}})</script>
+
+
+
+
+ <script>!function(e,t,a,n,o,c,i){e.GoogleAnalyticsObject=o,e[o]=e[o]||function(){(e[o].q=e[o].q||[]).push(arguments)},e[o].l=1*new Date,c=t.createElement(a),i=t.getElementsByTagName(a)[0],c.async=1,c.src=n,i.parentNode.insertBefore(c,i)}(window,document,"script","https://www.google-analytics.com/analytics.js","ga"),ga("create","UA-98609560-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview");var links=document.getElementsByTagName("a");Array.prototype.map.call(links,function(e){e.host!=document.location.host&&e.addEventListener("click",function(){var t=e.getAttribute("data-md-action")||"follow";ga("send","event","outbound",t,e.href)})});var query=document.forms.search.query;query.addEventListener("blur",function(){if(this.value){var e=document.location.pathname;ga("send","pageview",e+"?q="+this.value)}})</script>
+
+
+ </body>
+</html> \ No newline at end of file
diff --git a/docs/build/Content/Extending-Content/index.html b/docs/build/Content/Extending-Content/index.html
new file mode 100644
index 0000000..fc63245
--- /dev/null
+++ b/docs/build/Content/Extending-Content/index.html
@@ -0,0 +1,959 @@
+
+<!DOCTYPE html>
+<html lang="en" class="no-js">
+ <head>
+
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+
+
+
+
+ <link rel="shortcut icon" href="../../assets/images/favicon.png">
+
+ <meta name="generator" content="mkdocs-0.16.3, mkdocs-material-1.6.1">
+
+
+
+ <title>Extending Content through built-in Interfaces and optional Addons</title>
+
+
+
+ <script src="../../assets/javascripts/modernizr-56ade86843.js"></script>
+
+
+ <link rel="stylesheet" href="../../assets/stylesheets/application-4d0d3f2fbf.css">
+
+ <link rel="stylesheet" href="../../assets/stylesheets/application-f78e5cb881.palette.css">
+
+
+
+
+
+
+
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono">
+ <style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style>
+
+ <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
+
+
+
+ </head>
+
+
+
+
+ <body data-md-color-primary="grey" data-md-color-accent="light-blue">
+
+ <svg class="md-svg">
+ <defs>
+
+
+ <svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg>
+
+ </defs>
+ </svg>
+ <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="drawer">
+ <input class="md-toggle" data-md-toggle="search" type="checkbox" id="search">
+ <label class="md-overlay" data-md-component="overlay" for="drawer"></label>
+
+ <header class="md-header" data-md-component="header">
+ <nav class="md-header-nav md-grid">
+ <div class="md-flex">
+ <div class="md-flex__cell md-flex__cell--shrink">
+
+ <a href="../.." title="Ponzu" class="md-logo md-header-nav__button">
+ <img src="../../images/logo.png" width="24" height="24">
+ </a>
+
+ </div>
+ <div class="md-flex__cell md-flex__cell--shrink">
+ <label class="md-icon md-icon--menu md-header-nav__button" for="drawer"></label>
+ </div>
+ <div class="md-flex__cell md-flex__cell--stretch">
+ <span class="md-flex__ellipsis md-header-nav__title">
+
+
+
+ <span class="md-header-nav__parent">
+ Content
+ </span>
+
+
+ Extending Content
+
+ </span>
+ </div>
+ <div class="md-flex__cell md-flex__cell--shrink">
+
+ <label class="md-icon md-icon--search md-header-nav__button" for="search"></label>
+
+<div class="md-search" data-md-component="search">
+ <label class="md-search__overlay" for="search"></label>
+ <div class="md-search__inner">
+ <form class="md-search__form" name="search">
+ <input type="text" class="md-search__input" name="query" required placeholder="Search" accesskey="s" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query">
+ <label class="md-icon md-search__icon" for="search"></label>
+ <button type="reset" class="md-icon md-search__icon" data-md-component="reset">close</button>
+ </form>
+ <div class="md-search__output">
+ <div class="md-search__scrollwrap" data-md-scrollfix>
+ <div class="md-search-result" data-md-component="result">
+ <div class="md-search-result__meta" data-md-lang-result-none="No matching documents" data-md-lang-result-one="1 matching document" data-md-lang-result-other="# matching documents">
+ Type to start searching
+ </div>
+ <ol class="md-search-result__list"></ol>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+
+ </div>
+ <div class="md-flex__cell md-flex__cell--shrink">
+ <div class="md-header-nav__source">
+
+
+
+
+
+
+
+ <a href="https://github.com/ponzu-cms/ponzu" title="Go to repository" class="md-source" data-md-source="github">
+
+ <div class="md-source__icon">
+ <svg viewBox="0 0 24 24" width="24" height="24">
+ <use xlink:href="#github" width="24" height="24"></use>
+ </svg>
+ </div>
+
+ <div class="md-source__repository">
+ ponzu-cms/ponzu
+ </div>
+ </a>
+
+
+ </div>
+ </div>
+ </div>
+ </nav>
+</header>
+
+ <div class="md-container">
+
+
+ <main class="md-main">
+ <div class="md-main__inner md-grid" data-md-component="container">
+
+
+ <div class="md-sidebar md-sidebar--primary" data-md-component="navigation">
+ <div class="md-sidebar__scrollwrap">
+ <div class="md-sidebar__inner">
+ <nav class="md-nav md-nav--primary" data-md-level="0">
+ <label class="md-nav__title md-nav__title--site" for="drawer">
+
+ <i class="md-logo md-nav__button">
+ <img src="../../images/logo.png">
+ </i>
+
+ Ponzu
+ </label>
+
+ <div class="md-nav__source">
+
+
+
+
+
+
+ <a href="https://github.com/ponzu-cms/ponzu" title="Go to repository" class="md-source" data-md-source="github">
+
+ <div class="md-source__icon">
+ <svg viewBox="0 0 24 24" width="24" height="24">
+ <use xlink:href="#github" width="24" height="24"></use>
+ </svg>
+ </div>
+
+ <div class="md-source__repository">
+ ponzu-cms/ponzu
+ </div>
+ </a>
+
+ </div>
+
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../.." title="Home" class="md-nav__link">
+ Home
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-2" type="checkbox" id="nav-2">
+
+ <label class="md-nav__link" for="nav-2">
+ CLI
+ </label>
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
+ <label class="md-nav__title" for="nav-2">
+ CLI
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../CLI/General-Usage/" title="General Usage" class="md-nav__link">
+ General Usage
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../CLI/Generating-References/" title="Generating References" class="md-nav__link">
+ Generating References
+ </a>
+ </li>
+
+
+ </ul>
+ </nav>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--active md-nav__item--nested">
+
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-3" type="checkbox" id="nav-3" checked>
+
+ <label class="md-nav__link" for="nav-3">
+ Content
+ </label>
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
+ <label class="md-nav__title" for="nav-3">
+ Content
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../An-Overview/" title="An Overview" class="md-nav__link">
+ An Overview
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--active">
+
+ <input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="toc">
+
+
+ <label class="md-nav__link md-nav__link--active" for="toc">
+ Extending Content
+ </label>
+
+ <a href="./" title="Extending Content" class="md-nav__link md-nav__link--active">
+ Extending Content
+ </a>
+
+
+<nav class="md-nav md-nav--secondary">
+
+
+
+ <label class="md-nav__title" for="toc">Table of contents</label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+ <li class="md-nav__item">
+ <a href="#item-interfaces" title="Item Interfaces" class="md-nav__link">
+ Item Interfaces
+ </a>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#api-interfaces" title="API Interfaces" class="md-nav__link">
+ API Interfaces
+ </a>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#editor-interfaces" title="Editor Interfaces" class="md-nav__link">
+ Editor Interfaces
+ </a>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#search-interfaces" title="Search Interfaces" class="md-nav__link">
+ Search Interfaces
+ </a>
+
+</li>
+
+
+
+ </ul>
+
+</nav>
+
+ </li>
+
+
+ </ul>
+ </nav>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-4" type="checkbox" id="nav-4">
+
+ <label class="md-nav__link" for="nav-4">
+ Form Fields
+ </label>
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
+ <label class="md-nav__title" for="nav-4">
+ Form Fields
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../Form-Fields/HTML-Inputs/" title="HTML Inputs" class="md-nav__link">
+ HTML Inputs
+ </a>
+ </li>
+
+
+ </ul>
+ </nav>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-5" type="checkbox" id="nav-5">
+
+ <label class="md-nav__link" for="nav-5">
+ HTTP APIs
+ </label>
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
+ <label class="md-nav__title" for="nav-5">
+ HTTP APIs
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../HTTP-APIs/Content/" title="Content" class="md-nav__link">
+ Content
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../HTTP-APIs/File-Metadata/" title="File Metadata" class="md-nav__link">
+ File Metadata
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../HTTP-APIs/Search/" title="Search" class="md-nav__link">
+ Search
+ </a>
+ </li>
+
+
+ </ul>
+ </nav>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6">
+
+ <label class="md-nav__link" for="nav-6">
+ Interfaces
+ </label>
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
+ <label class="md-nav__title" for="nav-6">
+ Interfaces
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../Interfaces/API/" title="API" class="md-nav__link">
+ API
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../Interfaces/Editor/" title="Editor" class="md-nav__link">
+ Editor
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../Interfaces/Format/" title="Format" class="md-nav__link">
+ Format
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../Interfaces/Item/" title="Item" class="md-nav__link">
+ Item
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../Interfaces/Search/" title="Search" class="md-nav__link">
+ Search
+ </a>
+ </li>
+
+
+ </ul>
+ </nav>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7">
+
+ <label class="md-nav__link" for="nav-7">
+ Ponzu Addons
+ </label>
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
+ <label class="md-nav__title" for="nav-7">
+ Ponzu Addons
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../Ponzu-Addons/Creating-Addons/" title="Creating Addons" class="md-nav__link">
+ Creating Addons
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../Ponzu-Addons/Using-Addons/" title="Using Addons" class="md-nav__link">
+ Using Addons
+ </a>
+ </li>
+
+
+ </ul>
+ </nav>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8">
+
+ <label class="md-nav__link" for="nav-8">
+ Quickstart
+ </label>
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
+ <label class="md-nav__title" for="nav-8">
+ Quickstart
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../Quickstart/Overview/" title="Overview" class="md-nav__link">
+ Overview
+ </a>
+ </li>
+
+
+ </ul>
+ </nav>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9">
+
+ <label class="md-nav__link" for="nav-9">
+ References
+ </label>
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
+ <label class="md-nav__title" for="nav-9">
+ References
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../References/Overview/" title="Overview" class="md-nav__link">
+ Overview
+ </a>
+ </li>
+
+
+ </ul>
+ </nav>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-10" type="checkbox" id="nav-10">
+
+ <label class="md-nav__link" for="nav-10">
+ Running Backups
+ </label>
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
+ <label class="md-nav__title" for="nav-10">
+ Running Backups
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../Running-Backups/Backups/" title="Backups" class="md-nav__link">
+ Backups
+ </a>
+ </li>
+
+
+ </ul>
+ </nav>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-11" type="checkbox" id="nav-11">
+
+ <label class="md-nav__link" for="nav-11">
+ System Configuration
+ </label>
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
+ <label class="md-nav__title" for="nav-11">
+ System Configuration
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../System-Configuration/Settings/" title="Settings" class="md-nav__link">
+ Settings
+ </a>
+ </li>
+
+
+ </ul>
+ </nav>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-12" type="checkbox" id="nav-12">
+
+ <label class="md-nav__link" for="nav-12">
+ System Deployment
+ </label>
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
+ <label class="md-nav__title" for="nav-12">
+ System Deployment
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../System-Deployment/Docker/" title="Docker" class="md-nav__link">
+ Docker
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../../System-Deployment/SysV-Style/" title="SysV Style" class="md-nav__link">
+ SysV Style
+ </a>
+ </li>
+
+
+ </ul>
+ </nav>
+ </li>
+
+
+ </ul>
+</nav>
+ </div>
+ </div>
+ </div>
+
+
+ <div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
+ <div class="md-sidebar__scrollwrap">
+ <div class="md-sidebar__inner">
+
+<nav class="md-nav md-nav--secondary">
+
+
+
+ <label class="md-nav__title" for="toc">Table of contents</label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+ <li class="md-nav__item">
+ <a href="#item-interfaces" title="Item Interfaces" class="md-nav__link">
+ Item Interfaces
+ </a>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#api-interfaces" title="API Interfaces" class="md-nav__link">
+ API Interfaces
+ </a>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#editor-interfaces" title="Editor Interfaces" class="md-nav__link">
+ Editor Interfaces
+ </a>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#search-interfaces" title="Search Interfaces" class="md-nav__link">
+ Search Interfaces
+ </a>
+
+</li>
+
+
+
+ </ul>
+
+</nav>
+ </div>
+ </div>
+ </div>
+
+
+ <div class="md-content">
+ <article class="md-content__inner md-typeset">
+
+
+
+ <h1>Extending Content</h1>
+
+ <p>Extending your Content types with more features and functionality within the system
+is done by implementing the various built-in interfaces provided by Ponzu. To learn
+more about interfaces, see <a href="https://tour.golang.org/methods/10">A Tour of Go - Interfaces</a>.</p>
+<p>It is also common to add more advanced functionality to Content types using Addons. Refer to the <a href="../../Ponzu-Addons">Addon documentation</a> for more information about how to use and create Ponzu Addons.</p>
+<h2 id="item-interfaces"><a href="../../Interfaces/Item">Item Interfaces</a><a class="headerlink" href="#item-interfaces" title="Permanent link">&para;</a></h2>
+<p>All Content types which embed an <code>item.Item</code> will implicitly <a href="#">implement</a> its many
+interfaces. In Ponzu, the following interfaces are exported from the <code>system/item</code>
+package and have a default implementation which can be overridden to change your
+content types' functionality within the system.</p>
+<ul>
+<li><a href="../../Interfaces/Item#itempushable"><code>item.Pushable</code></a></li>
+<li><a href="../../Interfaces/Item#itemhideable"><code>item.Hideable</code></a></li>
+<li><a href="../../Interfaces/Item#itemomittable"><code>item.Omittable</code></a></li>
+<li><a href="../../Interfaces/Item#itemhookable"><code>item.Hookable</code></a></li>
+<li><a href="../../Interfaces/Item#itemidentifiable"><code>item.Identifiable</code></a></li>
+<li><a href="../../Interfaces/Item#itemsortable"><code>item.Sortable</code></a></li>
+<li><a href="../../Interfaces/Item#itemsluggable"><code>item.Sluggable</code></a></li>
+</ul>
+<h2 id="api-interfaces"><a href="../../Interfaces/API">API Interfaces</a><a class="headerlink" href="#api-interfaces" title="Permanent link">&para;</a></h2>
+<p>To enable 3rd-party clients to interact with your Content types, you can extend your types with the API interfaces:</p>
+<ul>
+<li><a href="../../Interfaces/API/#apicreateable"><code>api.Createable</code></a></li>
+<li><a href="../../Interfaces/API/#apiupdateable"><code>api.Updateable</code></a></li>
+<li><a href="../../Interfaces/API/#apideleteable"><code>api.Deleteable</code></a></li>
+<li><a href="../../Interfaces/API/#apitrustable"><code>api.Trustable</code></a></li>
+</ul>
+<h2 id="editor-interfaces"><a href="../../Interfaces/Editor">Editor Interfaces</a><a class="headerlink" href="#editor-interfaces" title="Permanent link">&para;</a></h2>
+<p>To manage how content is edited and handled in the CMS, use the following Editor interfaces:</p>
+<ul>
+<li><a href="../../Interfaces/Editor/#editoreditable"><code>editor.Editable</code></a></li>
+<li><a href="../../Interfaces/Editor/#editormergeable"><code>editor.Mergeable</code></a></li>
+</ul>
+<h2 id="search-interfaces"><a href="../../Interfaces/Search">Search Interfaces</a><a class="headerlink" href="#search-interfaces" title="Permanent link">&para;</a></h2>
+<p>To enable and customize full-text search on your content types, use the following interfaces:</p>
+<ul>
+<li><a href="../../Interfaces/Search/#searchsearchable"><code>search.Searchable</code></a></li>
+</ul>
+
+
+
+
+
+
+
+ </article>
+ </div>
+ </div>
+ </main>
+
+
+<footer class="md-footer">
+
+ <div class="md-footer-nav">
+ <nav class="md-footer-nav__inner md-grid">
+
+ <a href="../An-Overview/" title="An Overview" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
+ <div class="md-flex__cell md-flex__cell--shrink">
+ <i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
+ </div>
+ <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
+ <span class="md-flex__ellipsis">
+ <span class="md-footer-nav__direction">
+ Previous
+ </span>
+ An Overview
+ </span>
+ </div>
+ </a>
+
+
+ <a href="../../Form-Fields/HTML-Inputs/" title="HTML Inputs" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
+ <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
+ <span class="md-flex__ellipsis">
+ <span class="md-footer-nav__direction">
+ Next
+ </span>
+ HTML Inputs
+ </span>
+ </div>
+ <div class="md-flex__cell md-flex__cell--shrink">
+ <i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i>
+ </div>
+ </a>
+
+ </nav>
+ </div>
+
+ <div class="md-footer-meta md-typeset">
+ <div class="md-footer-meta__inner md-grid">
+ <div class="md-footer-copyright">
+
+ powered by
+ <a href="http://www.mkdocs.org" title="MkDocs">MkDocs</a>
+ and
+ <a href="http://squidfunk.github.io/mkdocs-material/" title="Material for MkDocs">
+ Material for MkDocs</a>
+ </div>
+
+
+ <div class="md-footer-social">
+
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
+
+ <a href="https://github.com/ponzu-cms" class="md-footer-social__link fa fa-github"></a>
+
+ <a href="https://twitter.com/ponzu_cms" class="md-footer-social__link fa fa-twitter"></a>
+
+ </div>
+
+
+ </div>
+ </div>
+</footer>
+
+ </div>
+
+ <script src="../../assets/javascripts/application-6b599127bc.js"></script>
+ <script>app.initialize({url:{base:"../.."}})</script>
+
+
+
+
+ <script>!function(e,t,a,n,o,c,i){e.GoogleAnalyticsObject=o,e[o]=e[o]||function(){(e[o].q=e[o].q||[]).push(arguments)},e[o].l=1*new Date,c=t.createElement(a),i=t.getElementsByTagName(a)[0],c.async=1,c.src=n,i.parentNode.insertBefore(c,i)}(window,document,"script","https://www.google-analytics.com/analytics.js","ga"),ga("create","UA-98609560-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview");var links=document.getElementsByTagName("a");Array.prototype.map.call(links,function(e){e.host!=document.location.host&&e.addEventListener("click",function(){var t=e.getAttribute("data-md-action")||"follow";ga("send","event","outbound",t,e.href)})});var query=document.forms.search.query;query.addEventListener("blur",function(){if(this.value){var e=document.location.pathname;ga("send","pageview",e+"?q="+this.value)}})</script>
+
+
+ </body>
+</html> \ No newline at end of file