github.com/rpdict/ponzu@v0.10.1-0.20190226054626-477f29d6bf5e/docs/src/Content/Extending-Content.md (about)

     1  title: Extending Content through built-in Interfaces and optional Addons
     2  
     3  Extending your Content types with more features and functionality within the system
     4  is done by implementing the various built-in interfaces provided by Ponzu. To learn 
     5  more about interfaces, see [A Tour of Go - Interfaces](https://tour.golang.org/methods/10).
     6  
     7  It is also common to add more advanced functionality to Content types using Addons. Refer to the [Addon documentation](/Ponzu-Addons) for more information about how to use and create Ponzu Addons.
     8  
     9  ## [Item Interfaces](/Interfaces/Item)
    10  
    11  All Content types which embed an `item.Item` will implicitly [implement](#) its many
    12  interfaces. In Ponzu, the following interfaces are exported from the `system/item`
    13  package and have a default implementation which can be overridden to change your
    14  content types' functionality within the system.
    15  
    16  - [`item.Pushable`](/Interfaces/Item#itempushable)
    17  - [`item.Hideable`](/Interfaces/Item#itemhideable)
    18  - [`item.Omittable`](/Interfaces/Item#itemomittable)
    19  - [`item.Hookable`](/Interfaces/Item#itemhookable)
    20  - [`item.Identifiable`](/Interfaces/Item#itemidentifiable)
    21  - [`item.Sortable`](/Interfaces/Item#itemsortable)
    22  - [`item.Sluggable`](/Interfaces/Item#itemsluggable)
    23  
    24  ## [API Interfaces](/Interfaces/API)
    25  
    26  To enable 3rd-party clients to interact with your Content types, you can extend your types with the API interfaces:
    27  
    28  - [`api.Createable`](/Interfaces/API/#apicreateable)
    29  - [`api.Updateable`](/Interfaces/API/#apiupdateable)
    30  - [`api.Deleteable`](/Interfaces/API/#apideleteable)
    31  - [`api.Trustable`](/Interfaces/API/#apitrustable)
    32  
    33  ## [Editor Interfaces](/Interfaces/Editor)
    34  
    35  To manage how content is edited and handled in the CMS, use the following Editor interfaces:
    36  
    37  - [`editor.Editable`](/Interfaces/Editor/#editoreditable)
    38  - [`editor.Mergeable`](/Interfaces/Editor/#editormergeable)
    39  
    40  ## [Search Interfaces](/Interfaces/Search)
    41  
    42  To enable and customize full-text search on your content types, use the following interfaces:
    43  
    44  - [`search.Searchable`](/Interfaces/Search/#searchsearchable)