github.com/rpdict/ponzu@v0.10.1-0.20190226054626-477f29d6bf5e/docs/build/Content/An-Overview/index.html (about)

     1  
     2  <!DOCTYPE html>
     3  <html lang="en" class="no-js">
     4    <head>
     5      
     6        <meta charset="utf-8">
     7        <meta name="viewport" content="width=device-width,initial-scale=1">
     8        
     9        
    10        
    11        
    12          <link rel="shortcut icon" href="../../assets/images/favicon.png">
    13        
    14        <meta name="generator" content="mkdocs-0.16.3, mkdocs-material-1.6.1">
    15      
    16      
    17        
    18          <title>Content Overview</title>
    19        
    20      
    21      
    22        <script src="../../assets/javascripts/modernizr-56ade86843.js"></script>
    23      
    24      
    25        <link rel="stylesheet" href="../../assets/stylesheets/application-4d0d3f2fbf.css">
    26        
    27          <link rel="stylesheet" href="../../assets/stylesheets/application-f78e5cb881.palette.css">
    28        
    29      
    30      
    31        
    32          
    33          
    34          
    35          <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono">
    36          <style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style>
    37        
    38        <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
    39      
    40      
    41      
    42    </head>
    43    
    44    
    45    
    46    
    47      <body data-md-color-primary="grey" data-md-color-accent="light-blue">
    48    
    49      <svg class="md-svg">
    50        <defs>
    51          
    52          
    53            <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>
    54          
    55        </defs>
    56      </svg>
    57      <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="drawer">
    58      <input class="md-toggle" data-md-toggle="search" type="checkbox" id="search">
    59      <label class="md-overlay" data-md-component="overlay" for="drawer"></label>
    60      
    61        <header class="md-header" data-md-component="header">
    62    <nav class="md-header-nav md-grid">
    63      <div class="md-flex">
    64        <div class="md-flex__cell md-flex__cell--shrink">
    65          
    66            <a href="../.." title="Ponzu" class="md-logo md-header-nav__button">
    67              <img src="../../images/logo.png" width="24" height="24">
    68            </a>
    69          
    70        </div>
    71        <div class="md-flex__cell md-flex__cell--shrink">
    72          <label class="md-icon md-icon--menu md-header-nav__button" for="drawer"></label>
    73        </div>
    74        <div class="md-flex__cell md-flex__cell--stretch">
    75          <span class="md-flex__ellipsis md-header-nav__title">
    76            
    77              
    78                
    79                  <span class="md-header-nav__parent">
    80                    Content
    81                  </span>
    82                
    83              
    84              An Overview
    85            
    86          </span>
    87        </div>
    88        <div class="md-flex__cell md-flex__cell--shrink">
    89          
    90            <label class="md-icon md-icon--search md-header-nav__button" for="search"></label>
    91            
    92  <div class="md-search" data-md-component="search">
    93    <label class="md-search__overlay" for="search"></label>
    94    <div class="md-search__inner">
    95      <form class="md-search__form" name="search">
    96        <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">
    97        <label class="md-icon md-search__icon" for="search"></label>
    98        <button type="reset" class="md-icon md-search__icon" data-md-component="reset">close</button>
    99      </form>
   100      <div class="md-search__output">
   101        <div class="md-search__scrollwrap" data-md-scrollfix>
   102          <div class="md-search-result" data-md-component="result">
   103            <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">
   104              Type to start searching
   105            </div>
   106            <ol class="md-search-result__list"></ol>
   107          </div>
   108        </div>
   109      </div>
   110    </div>
   111  </div>
   112          
   113        </div>
   114        <div class="md-flex__cell md-flex__cell--shrink">
   115          <div class="md-header-nav__source">
   116            
   117              
   118  
   119  
   120    
   121  
   122  
   123    <a href="https://github.com/rpdict/ponzu" title="Go to repository" class="md-source" data-md-source="github">
   124      
   125        <div class="md-source__icon">
   126          <svg viewBox="0 0 24 24" width="24" height="24">
   127            <use xlink:href="#github" width="24" height="24"></use>
   128          </svg>
   129        </div>
   130      
   131      <div class="md-source__repository">
   132        ponzu-cms/ponzu
   133      </div>
   134    </a>
   135  
   136            
   137          </div>
   138        </div>
   139      </div>
   140    </nav>
   141  </header>
   142      
   143      <div class="md-container">
   144        
   145        
   146        <main class="md-main">
   147          <div class="md-main__inner md-grid" data-md-component="container">
   148            
   149              
   150                <div class="md-sidebar md-sidebar--primary" data-md-component="navigation">
   151                  <div class="md-sidebar__scrollwrap">
   152                    <div class="md-sidebar__inner">
   153                      <nav class="md-nav md-nav--primary" data-md-level="0">
   154    <label class="md-nav__title md-nav__title--site" for="drawer">
   155      
   156        <i class="md-logo md-nav__button">
   157          <img src="../../images/logo.png">
   158        </i>
   159      
   160      Ponzu
   161    </label>
   162    
   163      <div class="md-nav__source">
   164        
   165  
   166  
   167    
   168  
   169  
   170    <a href="https://github.com/rpdict/ponzu" title="Go to repository" class="md-source" data-md-source="github">
   171      
   172        <div class="md-source__icon">
   173          <svg viewBox="0 0 24 24" width="24" height="24">
   174            <use xlink:href="#github" width="24" height="24"></use>
   175          </svg>
   176        </div>
   177      
   178      <div class="md-source__repository">
   179        ponzu-cms/ponzu
   180      </div>
   181    </a>
   182  
   183      </div>
   184    
   185    <ul class="md-nav__list" data-md-scrollfix>
   186      
   187        
   188        
   189        
   190  
   191  
   192    <li class="md-nav__item">
   193      <a href="../.." title="Home" class="md-nav__link">
   194        Home
   195      </a>
   196    </li>
   197  
   198      
   199        
   200        
   201        
   202  
   203  
   204    <li class="md-nav__item md-nav__item--nested">
   205      
   206        <input class="md-toggle md-nav__toggle" data-md-toggle="nav-2" type="checkbox" id="nav-2">
   207      
   208      <label class="md-nav__link" for="nav-2">
   209        CLI
   210      </label>
   211      <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
   212        <label class="md-nav__title" for="nav-2">
   213          CLI
   214        </label>
   215        <ul class="md-nav__list" data-md-scrollfix>
   216          
   217          
   218            
   219            
   220            
   221  
   222  
   223    <li class="md-nav__item">
   224      <a href="../../CLI/General-Usage/" title="General Usage" class="md-nav__link">
   225        General Usage
   226      </a>
   227    </li>
   228  
   229          
   230            
   231            
   232            
   233  
   234  
   235    <li class="md-nav__item">
   236      <a href="../../CLI/Generating-References/" title="Generating References" class="md-nav__link">
   237        Generating References
   238      </a>
   239    </li>
   240  
   241          
   242        </ul>
   243      </nav>
   244    </li>
   245  
   246      
   247        
   248        
   249        
   250  
   251    
   252  
   253  
   254    <li class="md-nav__item md-nav__item--active md-nav__item--nested">
   255      
   256        <input class="md-toggle md-nav__toggle" data-md-toggle="nav-3" type="checkbox" id="nav-3" checked>
   257      
   258      <label class="md-nav__link" for="nav-3">
   259        Content
   260      </label>
   261      <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
   262        <label class="md-nav__title" for="nav-3">
   263          Content
   264        </label>
   265        <ul class="md-nav__list" data-md-scrollfix>
   266          
   267          
   268            
   269            
   270            
   271  
   272    
   273  
   274  
   275    <li class="md-nav__item md-nav__item--active">
   276      
   277      <input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="toc">
   278      
   279      
   280        <label class="md-nav__link md-nav__link--active" for="toc">
   281          An Overview
   282        </label>
   283      
   284      <a href="./" title="An Overview" class="md-nav__link md-nav__link--active">
   285        An Overview
   286      </a>
   287      
   288        
   289  <nav class="md-nav md-nav--secondary">
   290    
   291    
   292    
   293      <label class="md-nav__title" for="toc">Table of contents</label>
   294      <ul class="md-nav__list" data-md-scrollfix>
   295        
   296          <li class="md-nav__item">
   297    <a href="#generating-content-types" title="Generating Content types" class="md-nav__link">
   298      Generating Content types
   299    </a>
   300    
   301  </li>
   302        
   303          <li class="md-nav__item">
   304    <a href="#related-packages" title="Related packages" class="md-nav__link">
   305      Related packages
   306    </a>
   307    
   308  </li>
   309        
   310        
   311        
   312      </ul>
   313    
   314  </nav>
   315      
   316    </li>
   317  
   318          
   319            
   320            
   321            
   322  
   323  
   324    <li class="md-nav__item">
   325      <a href="../Extending-Content/" title="Extending Content" class="md-nav__link">
   326        Extending Content
   327      </a>
   328    </li>
   329  
   330          
   331        </ul>
   332      </nav>
   333    </li>
   334  
   335      
   336        
   337        
   338        
   339  
   340  
   341    <li class="md-nav__item md-nav__item--nested">
   342      
   343        <input class="md-toggle md-nav__toggle" data-md-toggle="nav-4" type="checkbox" id="nav-4">
   344      
   345      <label class="md-nav__link" for="nav-4">
   346        Form Fields
   347      </label>
   348      <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
   349        <label class="md-nav__title" for="nav-4">
   350          Form Fields
   351        </label>
   352        <ul class="md-nav__list" data-md-scrollfix>
   353          
   354          
   355            
   356            
   357            
   358  
   359  
   360    <li class="md-nav__item">
   361      <a href="../../Form-Fields/HTML-Inputs/" title="HTML Inputs" class="md-nav__link">
   362        HTML Inputs
   363      </a>
   364    </li>
   365  
   366          
   367        </ul>
   368      </nav>
   369    </li>
   370  
   371      
   372        
   373        
   374        
   375  
   376  
   377    <li class="md-nav__item md-nav__item--nested">
   378      
   379        <input class="md-toggle md-nav__toggle" data-md-toggle="nav-5" type="checkbox" id="nav-5">
   380      
   381      <label class="md-nav__link" for="nav-5">
   382        HTTP APIs
   383      </label>
   384      <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
   385        <label class="md-nav__title" for="nav-5">
   386          HTTP APIs
   387        </label>
   388        <ul class="md-nav__list" data-md-scrollfix>
   389          
   390          
   391            
   392            
   393            
   394  
   395  
   396    <li class="md-nav__item">
   397      <a href="../../HTTP-APIs/Content/" title="Content" class="md-nav__link">
   398        Content
   399      </a>
   400    </li>
   401  
   402          
   403            
   404            
   405            
   406  
   407  
   408    <li class="md-nav__item">
   409      <a href="../../HTTP-APIs/File-Metadata/" title="File Metadata" class="md-nav__link">
   410        File Metadata
   411      </a>
   412    </li>
   413  
   414          
   415            
   416            
   417            
   418  
   419  
   420    <li class="md-nav__item">
   421      <a href="../../HTTP-APIs/Search/" title="Search" class="md-nav__link">
   422        Search
   423      </a>
   424    </li>
   425  
   426          
   427        </ul>
   428      </nav>
   429    </li>
   430  
   431      
   432        
   433        
   434        
   435  
   436  
   437    <li class="md-nav__item md-nav__item--nested">
   438      
   439        <input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6">
   440      
   441      <label class="md-nav__link" for="nav-6">
   442        Interfaces
   443      </label>
   444      <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
   445        <label class="md-nav__title" for="nav-6">
   446          Interfaces
   447        </label>
   448        <ul class="md-nav__list" data-md-scrollfix>
   449          
   450          
   451            
   452            
   453            
   454  
   455  
   456    <li class="md-nav__item">
   457      <a href="../../Interfaces/API/" title="API" class="md-nav__link">
   458        API
   459      </a>
   460    </li>
   461  
   462          
   463            
   464            
   465            
   466  
   467  
   468    <li class="md-nav__item">
   469      <a href="../../Interfaces/Editor/" title="Editor" class="md-nav__link">
   470        Editor
   471      </a>
   472    </li>
   473  
   474          
   475            
   476            
   477            
   478  
   479  
   480    <li class="md-nav__item">
   481      <a href="../../Interfaces/Format/" title="Format" class="md-nav__link">
   482        Format
   483      </a>
   484    </li>
   485  
   486          
   487            
   488            
   489            
   490  
   491  
   492    <li class="md-nav__item">
   493      <a href="../../Interfaces/Item/" title="Item" class="md-nav__link">
   494        Item
   495      </a>
   496    </li>
   497  
   498          
   499            
   500            
   501            
   502  
   503  
   504    <li class="md-nav__item">
   505      <a href="../../Interfaces/Search/" title="Search" class="md-nav__link">
   506        Search
   507      </a>
   508    </li>
   509  
   510          
   511        </ul>
   512      </nav>
   513    </li>
   514  
   515      
   516        
   517        
   518        
   519  
   520  
   521    <li class="md-nav__item md-nav__item--nested">
   522      
   523        <input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7">
   524      
   525      <label class="md-nav__link" for="nav-7">
   526        Ponzu Addons
   527      </label>
   528      <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
   529        <label class="md-nav__title" for="nav-7">
   530          Ponzu Addons
   531        </label>
   532        <ul class="md-nav__list" data-md-scrollfix>
   533          
   534          
   535            
   536            
   537            
   538  
   539  
   540    <li class="md-nav__item">
   541      <a href="../../Ponzu-Addons/Creating-Addons/" title="Creating Addons" class="md-nav__link">
   542        Creating Addons
   543      </a>
   544    </li>
   545  
   546          
   547            
   548            
   549            
   550  
   551  
   552    <li class="md-nav__item">
   553      <a href="../../Ponzu-Addons/Using-Addons/" title="Using Addons" class="md-nav__link">
   554        Using Addons
   555      </a>
   556    </li>
   557  
   558          
   559        </ul>
   560      </nav>
   561    </li>
   562  
   563      
   564        
   565        
   566        
   567  
   568  
   569    <li class="md-nav__item md-nav__item--nested">
   570      
   571        <input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8">
   572      
   573      <label class="md-nav__link" for="nav-8">
   574        Quickstart
   575      </label>
   576      <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
   577        <label class="md-nav__title" for="nav-8">
   578          Quickstart
   579        </label>
   580        <ul class="md-nav__list" data-md-scrollfix>
   581          
   582          
   583            
   584            
   585            
   586  
   587  
   588    <li class="md-nav__item">
   589      <a href="../../Quickstart/Overview/" title="Overview" class="md-nav__link">
   590        Overview
   591      </a>
   592    </li>
   593  
   594          
   595        </ul>
   596      </nav>
   597    </li>
   598  
   599      
   600        
   601        
   602        
   603  
   604  
   605    <li class="md-nav__item md-nav__item--nested">
   606      
   607        <input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9">
   608      
   609      <label class="md-nav__link" for="nav-9">
   610        References
   611      </label>
   612      <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
   613        <label class="md-nav__title" for="nav-9">
   614          References
   615        </label>
   616        <ul class="md-nav__list" data-md-scrollfix>
   617          
   618          
   619            
   620            
   621            
   622  
   623  
   624    <li class="md-nav__item">
   625      <a href="../../References/Overview/" title="Overview" class="md-nav__link">
   626        Overview
   627      </a>
   628    </li>
   629  
   630          
   631        </ul>
   632      </nav>
   633    </li>
   634  
   635      
   636        
   637        
   638        
   639  
   640  
   641    <li class="md-nav__item md-nav__item--nested">
   642      
   643        <input class="md-toggle md-nav__toggle" data-md-toggle="nav-10" type="checkbox" id="nav-10">
   644      
   645      <label class="md-nav__link" for="nav-10">
   646        Running Backups
   647      </label>
   648      <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
   649        <label class="md-nav__title" for="nav-10">
   650          Running Backups
   651        </label>
   652        <ul class="md-nav__list" data-md-scrollfix>
   653          
   654          
   655            
   656            
   657            
   658  
   659  
   660    <li class="md-nav__item">
   661      <a href="../../Running-Backups/Backups/" title="Backups" class="md-nav__link">
   662        Backups
   663      </a>
   664    </li>
   665  
   666          
   667        </ul>
   668      </nav>
   669    </li>
   670  
   671      
   672        
   673        
   674        
   675  
   676  
   677    <li class="md-nav__item md-nav__item--nested">
   678      
   679        <input class="md-toggle md-nav__toggle" data-md-toggle="nav-11" type="checkbox" id="nav-11">
   680      
   681      <label class="md-nav__link" for="nav-11">
   682        System Configuration
   683      </label>
   684      <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
   685        <label class="md-nav__title" for="nav-11">
   686          System Configuration
   687        </label>
   688        <ul class="md-nav__list" data-md-scrollfix>
   689          
   690          
   691            
   692            
   693            
   694  
   695  
   696    <li class="md-nav__item">
   697      <a href="../../System-Configuration/Settings/" title="Settings" class="md-nav__link">
   698        Settings
   699      </a>
   700    </li>
   701  
   702          
   703        </ul>
   704      </nav>
   705    </li>
   706  
   707      
   708        
   709        
   710        
   711  
   712  
   713    <li class="md-nav__item md-nav__item--nested">
   714      
   715        <input class="md-toggle md-nav__toggle" data-md-toggle="nav-12" type="checkbox" id="nav-12">
   716      
   717      <label class="md-nav__link" for="nav-12">
   718        System Deployment
   719      </label>
   720      <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
   721        <label class="md-nav__title" for="nav-12">
   722          System Deployment
   723        </label>
   724        <ul class="md-nav__list" data-md-scrollfix>
   725          
   726          
   727            
   728            
   729            
   730  
   731  
   732    <li class="md-nav__item">
   733      <a href="../../System-Deployment/Docker/" title="Docker" class="md-nav__link">
   734        Docker
   735      </a>
   736    </li>
   737  
   738          
   739            
   740            
   741            
   742  
   743  
   744    <li class="md-nav__item">
   745      <a href="../../System-Deployment/SysV-Style/" title="SysV Style" class="md-nav__link">
   746        SysV Style
   747      </a>
   748    </li>
   749  
   750          
   751        </ul>
   752      </nav>
   753    </li>
   754  
   755      
   756    </ul>
   757  </nav>
   758                    </div>
   759                  </div>
   760                </div>
   761              
   762              
   763                <div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
   764                  <div class="md-sidebar__scrollwrap">
   765                    <div class="md-sidebar__inner">
   766                      
   767  <nav class="md-nav md-nav--secondary">
   768    
   769    
   770    
   771      <label class="md-nav__title" for="toc">Table of contents</label>
   772      <ul class="md-nav__list" data-md-scrollfix>
   773        
   774          <li class="md-nav__item">
   775    <a href="#generating-content-types" title="Generating Content types" class="md-nav__link">
   776      Generating Content types
   777    </a>
   778    
   779  </li>
   780        
   781          <li class="md-nav__item">
   782    <a href="#related-packages" title="Related packages" class="md-nav__link">
   783      Related packages
   784    </a>
   785    
   786  </li>
   787        
   788        
   789        
   790      </ul>
   791    
   792  </nav>
   793                    </div>
   794                  </div>
   795                </div>
   796              
   797            
   798            <div class="md-content">
   799              <article class="md-content__inner md-typeset">
   800                
   801                  
   802                  
   803                    <h1>An Overview</h1>
   804                  
   805                  <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>
   806  <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>
   807  <p>It is rare to hand-write a new Content type, and should be generated instead!</p>
   808  <h3 id="generating-content-types">Generating Content types<a class="headerlink" href="#generating-content-types" title="Permanent link">&para;</a></h3>
   809  <p>To generate content types and boilerplate code, use the Ponzu CLI <code>generate</code> command as such:</p>
   810  <div class="codehilite"><pre><span></span>$ ponzu generate content post title:string body:string:richtext author:string
   811  </pre></div>
   812  
   813  
   814  <p>The command above will create a file at <code>content/post.go</code> and will generate the following code:</p>
   815  <div class="codehilite"><pre><span></span><span class="kn">package</span> <span class="nx">content</span>
   816  
   817  <span class="kn">import</span> <span class="p">(</span>
   818      <span class="s">&quot;fmt&quot;</span>
   819  
   820      <span class="s">&quot;github.com/rpdict/ponzu/management/editor&quot;</span>
   821      <span class="s">&quot;github.com/rpdict/ponzu/system/item&quot;</span>
   822  <span class="p">)</span>
   823  
   824  <span class="kd">type</span> <span class="nx">Post</span> <span class="kd">struct</span> <span class="p">{</span>
   825      <span class="nx">item</span><span class="p">.</span><span class="nx">Item</span>
   826  
   827      <span class="nx">Title</span>  <span class="kt">string</span> <span class="s">`json:&quot;title&quot;`</span>
   828      <span class="nx">Body</span>   <span class="kt">string</span> <span class="s">`json:&quot;body&quot;`</span>
   829      <span class="nx">Author</span> <span class="kt">string</span> <span class="s">`json:&quot;author&quot;`</span>
   830  <span class="p">}</span>
   831  
   832  <span class="c1">// MarshalEditor writes a buffer of html to edit a Post within the CMS</span>
   833  <span class="c1">// and implements editor.Editable</span>
   834  <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>
   835      <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>
   836          <span class="c1">// Take note that the first argument to these Input-like functions</span>
   837          <span class="c1">// is the string version of each Post field, and must follow</span>
   838          <span class="c1">// this pattern for auto-decoding and auto-encoding reasons:</span>
   839          <span class="nx">editor</span><span class="p">.</span><span class="nx">Field</span><span class="p">{</span>
   840              <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>
   841                  <span class="s">&quot;label&quot;</span><span class="p">:</span>       <span class="s">&quot;Title&quot;</span><span class="p">,</span>
   842                  <span class="s">&quot;type&quot;</span><span class="p">:</span>        <span class="s">&quot;text&quot;</span><span class="p">,</span>
   843                  <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>
   844              <span class="p">}),</span>
   845          <span class="p">},</span>
   846          <span class="nx">editor</span><span class="p">.</span><span class="nx">Field</span><span class="p">{</span>
   847              <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>
   848                  <span class="s">&quot;label&quot;</span><span class="p">:</span>       <span class="s">&quot;Body&quot;</span><span class="p">,</span>
   849                  <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>
   850              <span class="p">}),</span>
   851          <span class="p">},</span>
   852          <span class="nx">editor</span><span class="p">.</span><span class="nx">Field</span><span class="p">{</span>
   853              <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>
   854                  <span class="s">&quot;label&quot;</span><span class="p">:</span>       <span class="s">&quot;Author&quot;</span><span class="p">,</span>
   855                  <span class="s">&quot;type&quot;</span><span class="p">:</span>        <span class="s">&quot;text&quot;</span><span class="p">,</span>
   856                  <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>
   857              <span class="p">}),</span>
   858          <span class="p">},</span>
   859      <span class="p">)</span>
   860  
   861      <span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span>
   862          <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>
   863      <span class="p">}</span>
   864  
   865      <span class="k">return</span> <span class="nx">view</span><span class="p">,</span> <span class="kc">nil</span>
   866  <span class="p">}</span>
   867  
   868  <span class="kd">func</span> <span class="nx">init</span><span class="p">()</span> <span class="p">{</span>
   869      <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>
   870  <span class="p">}</span>
   871  </pre></div>
   872  
   873  
   874  <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>
   875  <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>
   876  <h3 id="related-packages">Related packages<a class="headerlink" href="#related-packages" title="Permanent link">&para;</a></h3>
   877  <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>
   878  <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>
   879  <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>
   880                  
   881                    
   882                  
   883                
   884                
   885                  
   886                
   887              </article>
   888            </div>
   889          </div>
   890        </main>
   891        
   892          
   893  <footer class="md-footer">
   894    
   895      <div class="md-footer-nav">
   896        <nav class="md-footer-nav__inner md-grid">
   897          
   898            <a href="../../CLI/Generating-References/" title="Generating References" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
   899              <div class="md-flex__cell md-flex__cell--shrink">
   900                <i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
   901              </div>
   902              <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
   903                <span class="md-flex__ellipsis">
   904                  <span class="md-footer-nav__direction">
   905                    Previous
   906                  </span>
   907                  Generating References
   908                </span>
   909              </div>
   910            </a>
   911          
   912          
   913            <a href="../Extending-Content/" title="Extending Content" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
   914              <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
   915                <span class="md-flex__ellipsis">
   916                  <span class="md-footer-nav__direction">
   917                    Next
   918                  </span>
   919                  Extending Content
   920                </span>
   921              </div>
   922              <div class="md-flex__cell md-flex__cell--shrink">
   923                <i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i>
   924              </div>
   925            </a>
   926          
   927        </nav>
   928      </div>
   929    
   930    <div class="md-footer-meta md-typeset">
   931      <div class="md-footer-meta__inner md-grid">
   932        <div class="md-footer-copyright">
   933          
   934          powered by
   935          <a href="http://www.mkdocs.org" title="MkDocs">MkDocs</a>
   936          and
   937          <a href="http://squidfunk.github.io/mkdocs-material/" title="Material for MkDocs">
   938            Material for MkDocs</a>
   939        </div>
   940        
   941          
   942    <div class="md-footer-social">
   943      
   944      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
   945      
   946        <a href="https://github.com/rpdict" class="md-footer-social__link fa fa-github"></a>
   947      
   948        <a href="https://twitter.com/ponzu_cms" class="md-footer-social__link fa fa-twitter"></a>
   949      
   950    </div>
   951  
   952        
   953      </div>
   954    </div>
   955  </footer>
   956        
   957      </div>
   958      
   959        <script src="../../assets/javascripts/application-6b599127bc.js"></script>
   960        <script>app.initialize({url:{base:"../.."}})</script>
   961        
   962      
   963      
   964        
   965        <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>
   966        
   967      
   968    </body>
   969  </html>