{"id":129,"date":"2026-04-15T12:44:24","date_gmt":"2026-04-15T12:44:24","guid":{"rendered":"https:\/\/www.netlifycms.org\/?p=129"},"modified":"2026-04-15T12:44:24","modified_gmt":"2026-04-15T12:44:24","slug":"jekyll","status":"publish","type":"post","link":"https:\/\/www.netlifycms.org\/docs\/jekyll\/","title":{"rendered":"Jekyll"},"content":{"rendered":"<h2 id=\"introduction\">Introduction<\/h2>\n<p>This section will help you integrate <strong>Netlify CMS<\/strong> with a new or existing Jekyll project.<\/p>\n<p><strong>Jekyll <\/strong>is a blog-aware static site generator built with Ruby. Github Pages are powered by Jekyll, making it a popular choice for developer blogs and project pages.<\/p>\n<p>If you&#8217;re starting a new project, the fastest route to publishing on a Jekyll website with <strong>Netlify CMS<\/strong> is to deploy a template on Netlify.<\/p>\n<h2 id=\"setup\">Setup<\/h2>\n<p>This guide will use the blog you get if you follow the really excellent official Jekyll step by step tutorial as a starting point. If you&#8217;re new to Jekyll &#8211; I recommended you start by following the tutorial so you know your way around your new blog. Otherwise you can clone this repo and checkout the <code>without-cms<\/code> branch.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-130\" src=\"https:\/\/www.netlifycms.org\/wp-content\/uploads\/2026\/04\/screenshot-jekyll-tutorial-blog.png\" alt=\"\" width=\"1894\" height=\"1078\" srcset=\"https:\/\/www.netlifycms.org\/wp-content\/uploads\/2026\/04\/screenshot-jekyll-tutorial-blog.png 1894w, https:\/\/www.netlifycms.org\/wp-content\/uploads\/2026\/04\/screenshot-jekyll-tutorial-blog-300x171.png 300w, https:\/\/www.netlifycms.org\/wp-content\/uploads\/2026\/04\/screenshot-jekyll-tutorial-blog-1024x583.png 1024w, https:\/\/www.netlifycms.org\/wp-content\/uploads\/2026\/04\/screenshot-jekyll-tutorial-blog-768x437.png 768w, https:\/\/www.netlifycms.org\/wp-content\/uploads\/2026\/04\/screenshot-jekyll-tutorial-blog-1536x874.png 1536w\" sizes=\"auto, (max-width: 1894px) 100vw, 1894px\" \/><\/p>\n<h2 id=\"add-netlify-cms\">Add Netlify CMS<\/h2>\n<h3 id=\"add-adminindexhtml\">Add admin\/index.html<\/h3>\n<p>Create a file <code>admin\/index.html<\/code> in the root of your repo &#8211; it should look like this:<\/p>\n<div class=\"gatsby-highlight\" data-language=\"html\">\n<pre class=\"language-html\"><code class=\"language-html\"><span class=\"token comment\">&lt;!-- admin\/index.html --&gt;<\/span>\r\n<span class=\"token doctype\"><span class=\"token punctuation\">&lt;!<\/span><span class=\"token doctype-tag\">DOCTYPE<\/span> <span class=\"token name\">html<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>html<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n  <span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>head<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n    <span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>meta <span class=\"token attr-name\">charset<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>utf-8<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\r\n    <span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>meta <span class=\"token attr-name\">name<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>viewport<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token attr-name\">content<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>width=device-width, initial-scale=1.0<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\r\n    <span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>title<span class=\"token punctuation\">&gt;<\/span><\/span>Content Manager<span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>title<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n    <span class=\"token comment\">&lt;!-- Include the identity widget --&gt;<\/span>\r\n    <span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>script <span class=\"token attr-name\">src<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>https:\/\/identity.netlify.com\/v1\/netlify-identity-widget.js<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token attr-name\">type<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>text\/javascript<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>script<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n  <span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>head<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n  <span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>body<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n    <span class=\"token comment\">&lt;!-- Include the script that builds the page and powers Netlify CMS --&gt;<\/span>\r\n    <span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>script <span class=\"token attr-name\">src<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>https:\/\/unpkg.com\/netlify-cms@^2.0.0\/dist\/netlify-cms.js<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>script<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n  <span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>body<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>html<span class=\"token punctuation\">&gt;<\/span><\/span><\/code><\/pre>\n<\/div>\n<h3 id=\"add-adminconfigyml\">Add admin\/config.yml<\/h3>\n<p>Create a file <code>admin\/config.yml<\/code> in the root of your repo &#8211; it should look like this:<\/p>\n<div class=\"gatsby-highlight\" data-language=\"yml\">\n<pre class=\"language-yml\"><code class=\"language-yml\"><span class=\"token comment\"># config.yml<\/span>\r\n\r\n<span class=\"token key atrule\">backend<\/span><span class=\"token punctuation\">:<\/span>\r\n  <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> git<span class=\"token punctuation\">-<\/span>gateway\r\n  <span class=\"token key atrule\">branch<\/span><span class=\"token punctuation\">:<\/span> main <span class=\"token comment\"># Branch to update (optional; defaults to master)<\/span>\r\n<span class=\"token key atrule\">media_folder<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'assets\/uploads'<\/span>\r\n<span class=\"token key atrule\">collections<\/span><span class=\"token punctuation\">:<\/span>\r\n  <span class=\"token punctuation\">-<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'blog'<\/span>\r\n    <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Blog'<\/span>\r\n    <span class=\"token key atrule\">folder<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'_posts\/'<\/span>\r\n    <span class=\"token key atrule\">fields<\/span><span class=\"token punctuation\">:<\/span>\r\n      <span class=\"token punctuation\">-<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> Title <span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<\/div>\n<h3 id=\"enable-authentication-for-cms-users\">Enable authentication for CMS users<\/h3>\n<p>Netlify CMS stores content in your online Git repository. Therefore, to make content changes, users need to authenticate with the corresponding Git provider to prove that they have read and write access to that content.<\/p>\n<p>Follow the directions in the Introduction section to <a href=\"https:\/\/www.netlifycms.org\/docs\/add-to-your-site\/#enable-identity-and-git-gateway\" target=\"_blank\" rel=\"noopener noreferrer\">enable Netlify Identity and Git Gateway services<\/a> for the backend, then <a href=\"https:\/\/www.netlifycms.org\/docs\/add-to-your-site\/#add-the-netlify-identity-widget\" target=\"_blank\" rel=\"noopener noreferrer\">add the Identity widget<\/a> to render a login portal on the frontend.<\/p>\n<h2 id=\"cms-configuration\">CMS Configuration<\/h2>\n<h3 id=\"blog-collection\">Blog Collection<\/h3>\n<p>We&#8217;ll start by updating the <code>blog<\/code> collection. Blogging is baked into Jekyll, and the <code>_posts\/<\/code> directory uses some special conventions we&#8217;ll need to keep in mind as we configure Netlify CMS. Copy and paste the following into your <code>config.yml<\/code>.<\/p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\">\n<pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">collections<\/span><span class=\"token punctuation\">:<\/span>\r\n  <span class=\"token punctuation\">-<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'blog'<\/span>\r\n    <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Blog'<\/span>\r\n    <span class=\"token key atrule\">folder<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'_posts\/'<\/span>\r\n    <span class=\"token key atrule\">create<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean important\">true<\/span>\r\n    <span class=\"token key atrule\">slug<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'{{year}}-{{month}}-{{day}}-{{slug}}'<\/span>\r\n    <span class=\"token key atrule\">editor<\/span><span class=\"token punctuation\">:<\/span>\r\n      <span class=\"token key atrule\">preview<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean important\">false<\/span>\r\n    <span class=\"token key atrule\">fields<\/span><span class=\"token punctuation\">:<\/span>\r\n      <span class=\"token punctuation\">-<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Layout'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'layout'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">widget<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'hidden'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">default<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'post'<\/span> <span class=\"token punctuation\">}<\/span>\r\n      <span class=\"token punctuation\">-<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Title'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'title'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">widget<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'string'<\/span> <span class=\"token punctuation\">}<\/span>\r\n      <span class=\"token punctuation\">-<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Publish Date'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'date'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">widget<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'datetime'<\/span> <span class=\"token punctuation\">}<\/span>\r\n      <span class=\"token punctuation\">-<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Body'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'body'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">widget<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'markdown'<\/span> <span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<\/div>\n<p>A few things to note.<\/p>\n<ul>\n<li>We set the <code>slug<\/code> to <code>'{{year}}-{{month}}-{{day}}-{{slug}}'<\/code> because Jekyll requires this format for blog posts. <code>year<\/code>, <code>month<\/code>, and <code>day<\/code> will be extracted from the <code>date<\/code> field, and <code>slug<\/code> will be generated from the <code>title<\/code> field.<\/li>\n<li>We added <code>editor<\/code> configuration with a field <code>preview: false<\/code>. This will eliminate the preview pane. Because Jekyll uses Liquid templates, there currently isn&#8217;t a good way to provide a preview of pages as you update the content.<\/li>\n<li>The <code>layout<\/code> field default is set to <code>post<\/code> so Jekyll knows to use <code>_layouts\/post.html<\/code> when it renders a post. This field is hidden because we want all posts to use the same layout.<\/li>\n<li>The <code>date<\/code> and <code>title<\/code> field will be used by the <code>slug<\/code> &#8211; as noted above, Jekyll relies on the filename to determine a post&#8217;s publish date, but Netlify CMS does not pull date information from the filename and requires a frontmatter <code>date<\/code> field. <strong>Note<\/strong> Changing the <code>date<\/code> or <code>title<\/code> fields in Netlify CMS will not update the filename. This has a few implications:\n<ul>\n<li>If you change the <code>date<\/code> or <code>title<\/code> fields in Netlify CMS, Jekyll won&#8217;t notice<\/li>\n<li>You don&#8217;t necessarily need to change the <code>date<\/code> and <code>title<\/code> fields for existing posts, but if you don&#8217;t the filenames and frontmatter will disagree in a way that might be confusing<\/li>\n<li>If you want to avoid these issues, use a regular Jekyll collection instead of the special <code>_posts<\/code> directory<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3 id=\"author-collection\">Author Collection<\/h3>\n<p>In addition to <code>_posts<\/code>, the Jekyll tutorial blog includes a collection of authors in the <code>_authors<\/code> directory. Before we can configure Netlify CMS to work with the <code>authors<\/code> collection, we&#8217;ll need to make a couple tweaks to our Jekyll blog. Here&#8217;s the front matter for one of the authors.<\/p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\">\n<pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">short_name<\/span><span class=\"token punctuation\">:<\/span> jill\r\n<span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> Jill Smith\r\n<span class=\"token key atrule\">position<\/span><span class=\"token punctuation\">:<\/span> Chief Editor<\/code><\/pre>\n<\/div>\n<p><code>name<\/code> has special meaning as a unique identifier in Netlify CMS, but as set up now our Jekyll blog is using <code>short_name<\/code> as the unique identifier for authors. For each author, update the frontmatter like so.<\/p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\">\n<pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> jill\r\n<span class=\"token key atrule\">display_name<\/span><span class=\"token punctuation\">:<\/span> Jill Smith\r\n<span class=\"token key atrule\">position<\/span><span class=\"token punctuation\">:<\/span> Chief Editor<\/code><\/pre>\n<\/div>\n<p>then update <code>_layouts\/author.html<\/code>, <code>_layouts\/post.html<\/code> and <code>staff.html<\/code> accordingly.<\/p>\n<div class=\"gatsby-highlight\" data-language=\"html\">\n<pre class=\"language-html\"><code class=\"language-html\"><span class=\"token comment\">&lt;!-- _layouts\/author.html --&gt;<\/span>\r\n--- layout: default ---\r\n\r\n<span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>h1<span class=\"token punctuation\">&gt;<\/span><\/span>{{ page.display_name }}<span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>h1<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>h2<span class=\"token punctuation\">&gt;<\/span><\/span>{{ page.position }}<span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>h2<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\r\n{{ content }}\r\n\r\n<span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>h2<span class=\"token punctuation\">&gt;<\/span><\/span>Posts<span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>h2<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>ul<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n  {% assign filtered_posts = site.posts | where: 'author', page.name %} {% for post in\r\n  filtered_posts %}\r\n  <span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>li<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n    <span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>a <span class=\"token attr-name\">href<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>{{ site.baseurl }}{{ post.url }}<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>{{ post.title }}<span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>a<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n  <span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>li<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n  {% endfor %}\r\n<span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>ul<span class=\"token punctuation\">&gt;<\/span><\/span><\/code><\/pre>\n<\/div>\n<div class=\"gatsby-highlight\" data-language=\"html\">\n<pre class=\"language-html\"><code class=\"language-html\"><span class=\"token comment\">&lt;!-- _layouts\/post.html --&gt;<\/span>\r\n--- layout: default ---\r\n\r\n<span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>h1<span class=\"token punctuation\">&gt;<\/span><\/span>{{ page.title }}<span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>h1<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\r\n<span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>p<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n  {{ page.date | date_to_string }} {% assign author = site.authors | where: 'name', page.author |\r\n  first %} {% if author %} - <span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>a <span class=\"token attr-name\">href<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>{{ author.url }}<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>{{ author.display_name }}<span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>a<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n  {% endif %}\r\n<span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>p<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\r\n{{ content }}<\/code><\/pre>\n<\/div>\n<div class=\"gatsby-highlight\" data-language=\"html\">\n<pre class=\"language-html\"><code class=\"language-html\"><span class=\"token comment\">&lt;!-- staff.html --&gt;<\/span>\r\n--- layout: default ---\r\n\r\n<span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>h1<span class=\"token punctuation\">&gt;<\/span><\/span>Staff<span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>h1<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\r\n<span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>ul<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n  {% for author in site.authors %}\r\n  <span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>li<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n    <span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>h2<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n      <span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>a <span class=\"token attr-name\">href<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>{{ site.baseurl }}{{ author.url }}<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>{{ author.display_name }}<span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>a<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n    <span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>h2<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n    <span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>h3<span class=\"token punctuation\">&gt;<\/span><\/span>{{ author.position }}<span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>h3<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n    <span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>p<span class=\"token punctuation\">&gt;<\/span><\/span>{{ author.content | markdownify }}<span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>p<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n  <span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>li<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n  {% endfor %}\r\n<span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>ul<span class=\"token punctuation\">&gt;<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>Next, copy and paste the following into the collections array in <code>config.yml<\/code> below the <code>blog<\/code> collection.<\/p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\">\n<pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'authors'<\/span>\r\n  <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Authors'<\/span>\r\n  <span class=\"token key atrule\">folder<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'_authors\/'<\/span>\r\n  <span class=\"token key atrule\">create<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean important\">true<\/span>\r\n  <span class=\"token key atrule\">editor<\/span><span class=\"token punctuation\">:<\/span>\r\n    <span class=\"token key atrule\">preview<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean important\">false<\/span>\r\n  <span class=\"token key atrule\">fields<\/span><span class=\"token punctuation\">:<\/span>\r\n    <span class=\"token punctuation\">-<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Layout'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'layout'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">widget<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'hidden'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">default<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'author'<\/span> <span class=\"token punctuation\">}<\/span>\r\n    <span class=\"token punctuation\">-<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Short Name'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'name'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">widget<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'string'<\/span> <span class=\"token punctuation\">}<\/span>\r\n    <span class=\"token punctuation\">-<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Display Name'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'display_name'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">widget<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'string'<\/span> <span class=\"token punctuation\">}<\/span>\r\n    <span class=\"token punctuation\">-<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Position'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'position'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">widget<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'string'<\/span> <span class=\"token punctuation\">}<\/span>\r\n    <span class=\"token punctuation\">-<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Body'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'body'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">widget<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'markdown'<\/span> <span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<\/div>\n<p>Now that we have the <code>authors<\/code> collection configured, we can add an <code>author<\/code> field to the <code>blog<\/code> collection. We&#8217;ll use the <a href=\"https:\/\/www.netlifycms.org\/docs\/widgets\/#relation\" target=\"_blank\" rel=\"noopener noreferrer\">relation widget<\/a> to define the relationship between blog posts and authors.<\/p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\">\n<pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># updated fields in blog collection configuration<\/span>\r\n<span class=\"token key atrule\">fields<\/span><span class=\"token punctuation\">:<\/span>\r\n  <span class=\"token punctuation\">-<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Layout'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'layout'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">widget<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'hidden'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">default<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'post'<\/span> <span class=\"token punctuation\">}<\/span>\r\n  <span class=\"token punctuation\">-<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Title'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'title'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">widget<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'string'<\/span> <span class=\"token punctuation\">}<\/span>\r\n  <span class=\"token punctuation\">-<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Publish Date'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'date'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">widget<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'datetime'<\/span> <span class=\"token punctuation\">}<\/span>\r\n  <span class=\"token punctuation\">-<\/span> <span class=\"token punctuation\">{<\/span>\r\n      <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Author'<\/span><span class=\"token punctuation\">,<\/span>\r\n      <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'author'<\/span><span class=\"token punctuation\">,<\/span>\r\n      <span class=\"token key atrule\">widget<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'relation'<\/span><span class=\"token punctuation\">,<\/span>\r\n      <span class=\"token key atrule\">collection<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'authors'<\/span><span class=\"token punctuation\">,<\/span>\r\n      <span class=\"token key atrule\">display_fields<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">[<\/span>display_name<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>\r\n      <span class=\"token key atrule\">search_fields<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">[<\/span>display_name<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>\r\n      <span class=\"token key atrule\">value_field<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'name'<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token punctuation\">}<\/span>\r\n  <span class=\"token punctuation\">-<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Body'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'body'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">widget<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'markdown'<\/span> <span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<\/div>\n<p>With that configuration added, you should be able to select the author for a post from a dropdown.<\/p>\n<h3 id=\"about-page\">About Page<\/h3>\n<p>Our Jekyll blog includes an About page. It would nice to be able to edit that page just like we can edit our blog and author pages. Netlify CMS provides <a href=\"https:\/\/www.netlifycms.org\/docs\/collection-types\/#file-collections\" target=\"_blank\" rel=\"noopener noreferrer\">file collections<\/a> to solve this problem.<\/p>\n<p>Copy and paste the following into the collections array in <code>config.yml<\/code><\/p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\">\n<pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'pages'<\/span>\r\n  <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Pages'<\/span>\r\n  <span class=\"token key atrule\">editor<\/span><span class=\"token punctuation\">:<\/span>\r\n    <span class=\"token key atrule\">preview<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean important\">false<\/span>\r\n  <span class=\"token key atrule\">files<\/span><span class=\"token punctuation\">:<\/span>\r\n    <span class=\"token punctuation\">-<\/span> <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'About Page'<\/span>\r\n      <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'about'<\/span>\r\n      <span class=\"token key atrule\">file<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'about.md'<\/span>\r\n      <span class=\"token key atrule\">fields<\/span><span class=\"token punctuation\">:<\/span>\r\n        <span class=\"token punctuation\">-<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Title'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'title'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">widget<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'hidden'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">default<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'about'<\/span> <span class=\"token punctuation\">}<\/span>\r\n        <span class=\"token punctuation\">-<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Layout'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'layout'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">widget<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'hidden'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">default<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'about'<\/span> <span class=\"token punctuation\">}<\/span>\r\n        <span class=\"token punctuation\">-<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Body'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'body'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">widget<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'markdown'<\/span> <span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<\/div>\n<h3 id=\"navigation\">Navigation<\/h3>\n<p>The last aspect of our Jekyll blog we might want to bring under the control of Netlify CMS is our Navigation menu. Our Jekyll tutorial blog has a file <code>_data\/navigation.yml<\/code> that defines the links rendered by <code>_includes\/navigation.html<\/code>. It looks like this.<\/p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\">\n<pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># _data\/navigation.yml<\/span>\r\n<span class=\"token punctuation\">-<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> Home\r\n  <span class=\"token key atrule\">link<\/span><span class=\"token punctuation\">:<\/span> \/\r\n<span class=\"token punctuation\">-<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> About\r\n  <span class=\"token key atrule\">link<\/span><span class=\"token punctuation\">:<\/span> \/about.html\r\n<span class=\"token punctuation\">-<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> Blog\r\n  <span class=\"token key atrule\">link<\/span><span class=\"token punctuation\">:<\/span> \/blog.html\r\n<span class=\"token punctuation\">-<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> Staff\r\n  <span class=\"token key atrule\">link<\/span><span class=\"token punctuation\">:<\/span> \/staff.html<\/code><\/pre>\n<\/div>\n<p>To make this file editable with Netlify CMS, we&#8217;ll need to make one minor tweak. The issue is this file contains a yaml array at the top level, but Netlify CMS is designed to work with yaml objects. Update <code>_data\/navigation.yml<\/code> so it looks like so.<\/p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\">\n<pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># _data\/navigation.yml<\/span>\r\n<span class=\"token key atrule\">items<\/span><span class=\"token punctuation\">:<\/span>\r\n  <span class=\"token punctuation\">-<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> Home\r\n    <span class=\"token key atrule\">link<\/span><span class=\"token punctuation\">:<\/span> \/\r\n  <span class=\"token punctuation\">-<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> About\r\n    <span class=\"token key atrule\">link<\/span><span class=\"token punctuation\">:<\/span> \/about.html\r\n  <span class=\"token punctuation\">-<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> Blog\r\n    <span class=\"token key atrule\">link<\/span><span class=\"token punctuation\">:<\/span> \/blog.html\r\n  <span class=\"token punctuation\">-<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> Staff\r\n    <span class=\"token key atrule\">link<\/span><span class=\"token punctuation\">:<\/span> \/staff.html<\/code><\/pre>\n<\/div>\n<p>You&#8217;ll need to update <code>_includes\/navigation.html<\/code> accordingly. <code>{% for item in site.data.navigation %}<\/code> should be changed to <code>{% for item in site.data.navigation.items %}<\/code>. When you&#8217;re done, the nav html should look like this.<\/p>\n<div class=\"gatsby-highlight\" data-language=\"html\">\n<pre class=\"language-html\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>nav<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n  {% for item in site.data.navigation.items %}\r\n    &lt;a href=\"{{ site.baseurl }}{{ item.link }}\" {% if page.url == item.link %}style=\"color: red;\"{% endif %}&gt;\r\n      {{ item.name }}\r\n    <span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>a<span class=\"token punctuation\">&gt;<\/span><\/span>\r\n  {% endfor %}\r\n<span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>nav<span class=\"token punctuation\">&gt;<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>Finally, add the following to the collections array in <code>config.yml<\/code><\/p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\">\n<pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'config'<\/span>\r\n  <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Config'<\/span>\r\n  <span class=\"token key atrule\">editor<\/span><span class=\"token punctuation\">:<\/span>\r\n    <span class=\"token key atrule\">preview<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token boolean important\">false<\/span>\r\n  <span class=\"token key atrule\">files<\/span><span class=\"token punctuation\">:<\/span>\r\n    <span class=\"token punctuation\">-<\/span> <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Navigation'<\/span>\r\n      <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'navigation'<\/span>\r\n      <span class=\"token key atrule\">file<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'_data\/navigation.yml'<\/span>\r\n      <span class=\"token key atrule\">fields<\/span><span class=\"token punctuation\">:<\/span>\r\n        <span class=\"token punctuation\">-<\/span> <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'Navigation Items'<\/span>\r\n          <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'items'<\/span>\r\n          <span class=\"token key atrule\">widget<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'list'<\/span>\r\n          <span class=\"token key atrule\">fields<\/span><span class=\"token punctuation\">:<\/span>\r\n            <span class=\"token punctuation\">-<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> Name<span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> name<span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">widget<\/span><span class=\"token punctuation\">:<\/span> string <span class=\"token punctuation\">}<\/span>\r\n            <span class=\"token punctuation\">-<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token key atrule\">label<\/span><span class=\"token punctuation\">:<\/span> Link<span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">name<\/span><span class=\"token punctuation\">:<\/span> link<span class=\"token punctuation\">,<\/span> <span class=\"token key atrule\">widget<\/span><span class=\"token punctuation\">:<\/span> string <span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<\/div>\n<p>Now you can add, rename, and rearrange the navigation items on your blog.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction This section will help you integrate Netlify CMS with a new or existing Jekyll project. Jekyll is a blog-aware static site generator built with Ruby. Github Pages are powered by Jekyll, making it a popular choice for developer blogs and project pages. If you&#8217;re starting a new project, the fastest route to publishing on &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.netlifycms.org\/docs\/jekyll\/\" class=\"more-link\">Read More<span class=\"screen-reader-text\"> &#8220;Jekyll&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[3],"tags":[47,48,6],"class_list":["post-129","post","type-post","status-publish","format-standard","hentry","category-docs","tag-jekyll","tag-netlify","tag-netlify-cms"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":145,"url":"https:\/\/www.netlifycms.org\/docs\/examples\/","url_meta":{"origin":129,"position":0},"title":"Examples","author":"admin","date":"January 12, 2026","format":false,"excerpt":"Do you have a great, open source example? Submit a pull request to this page! Example\u00a0 Tools\u00a0 Type\u00a0 Source\u00a0 More info Gatsby & Netlify CMS Meetup Group Template\u00a0 Gatsby\u00a0 demo\u00a0 robertcoopercode\/gatsby-netlify-cms\u00a0 blog post This Developing Journey\u00a0 middleman\u00a0 blog\u00a0 bdougie\/blog\u00a0 blog post Jamstack Recipes\u00a0 Hugo, Azure\u00a0 demo\u00a0 hlaueriksson\/jamstack-cms\u00a0 blog post Bael\u00a0\u2026","rel":"","context":"In &quot;Docs&quot;","block_context":{"text":"Docs","link":"https:\/\/www.netlifycms.org\/category\/docs\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":10,"url":"https:\/\/www.netlifycms.org\/blog\/2019\/06\/implementing-a-jekyll-cms-in-3-days","url_meta":{"origin":129,"position":1},"title":"Implementing a Jekyll CMS in 3 Days","author":"admin","date":"June 6, 2019","format":false,"excerpt":"This guest post was written by Shea Daniels, Lead Software Engineer at Dwolla and user of Netlify CMS. It was originally published on the Dwolla blog. Let\u2019s say you\u2019re building the next great startup or putting together a spectacular event\u2014the first question anybody asks you is \u201cWhat\u2019s the website?\u201d A\u2026","rel":"","context":"In &quot;Blog&quot;","block_context":{"text":"Blog","link":"https:\/\/www.netlifycms.org\/category\/blog\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.netlifycms.org\/wp-content\/uploads\/2019\/06\/Screen-Shot-2019-06-06-at-10.33.31-AM.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.netlifycms.org\/wp-content\/uploads\/2019\/06\/Screen-Shot-2019-06-06-at-10.33.31-AM.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.netlifycms.org\/wp-content\/uploads\/2019\/06\/Screen-Shot-2019-06-06-at-10.33.31-AM.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.netlifycms.org\/wp-content\/uploads\/2019\/06\/Screen-Shot-2019-06-06-at-10.33.31-AM.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/www.netlifycms.org\/wp-content\/uploads\/2019\/06\/Screen-Shot-2019-06-06-at-10.33.31-AM.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/www.netlifycms.org\/wp-content\/uploads\/2019\/06\/Screen-Shot-2019-06-06-at-10.33.31-AM.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":38,"url":"https:\/\/www.netlifycms.org\/docs\/add-to-your-site\/","url_meta":{"origin":129,"position":2},"title":"Add to Your Site","author":"admin","date":"April 2, 2026","format":false,"excerpt":"You can adapt Netlify CMS to a wide variety of projects. It works with any content written in markdown, JSON, YAML, or TOML files, stored in a repo on GitHub, GitLab, or Bitbucket. You can also create your own custom backend. This tutorial guides you through the steps for adding\u2026","rel":"","context":"In &quot;Docs&quot;","block_context":{"text":"Docs","link":"https:\/\/www.netlifycms.org\/category\/docs\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.netlifycms.org\/wp-content\/uploads\/2026\/04\/add-site.webp?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.netlifycms.org\/wp-content\/uploads\/2026\/04\/add-site.webp?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.netlifycms.org\/wp-content\/uploads\/2026\/04\/add-site.webp?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.netlifycms.org\/wp-content\/uploads\/2026\/04\/add-site.webp?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":77,"url":"https:\/\/www.netlifycms.org\/docs\/quick-start\/","url_meta":{"origin":129,"position":3},"title":"Quick Start","author":"admin","date":"December 8, 2025","format":false,"excerpt":"There are many ways to add Netlify CMS to your static site. This guide will take you through one of the quickest methods, which takes advantage of Netlify\u2019s hosting and authentication provider services. Storage and Authentication Netlify CMS relies on the GitHub API for managing files, so you\u2019ll need to\u2026","rel":"","context":"In &quot;Docs&quot;","block_context":{"text":"Docs","link":"https:\/\/www.netlifycms.org\/category\/docs\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":6,"url":"https:\/\/www.netlifycms.org\/htblog\/2019\/07\/netlify-cms-gatsby-plugin-4-0-0","url_meta":{"origin":129,"position":4},"title":"React Hooks support in Netlify CMS (and the Gatsby plugin)","author":"admin","date":"July 23, 2019","format":false,"excerpt":"Netlify CMS is an extensible app written in, and bundled with, React. The most common extension is the custom preview template, which allows the preview on the right side of the editor to show what the site will actually look like as you type. These preview templates are also written\u2026","rel":"","context":"In &quot;Blog&quot;","block_context":{"text":"Blog","link":"https:\/\/www.netlifycms.org\/category\/blog\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":30,"url":"https:\/\/www.netlifycms.org\/docs\/start-with-a-template\/","url_meta":{"origin":129,"position":5},"title":"Start with a Template","author":"admin","date":"April 7, 2026","format":false,"excerpt":"You can add Netlify CMS to an existing site, but the quickest way to get started is with a template. Found below, our featured templates deploy a bare-bones site and Netlify CMS to Netlify (what's the difference, you ask?), giving you a fully working CMS-enabled site with just a few\u2026","rel":"","context":"In &quot;Docs&quot;","block_context":{"text":"Docs","link":"https:\/\/www.netlifycms.org\/category\/docs\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.netlifycms.org\/wp-content\/uploads\/2026\/04\/create-password.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.netlifycms.org\/wp-content\/uploads\/2026\/04\/create-password.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.netlifycms.org\/wp-content\/uploads\/2026\/04\/create-password.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.netlifycms.org\/wp-content\/uploads\/2026\/04\/create-password.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/www.netlifycms.org\/wp-content\/uploads\/2026\/04\/create-password.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/www.netlifycms.org\/wp-content\/uploads\/2026\/04\/create-password.png?resize=1400%2C800&ssl=1 4x"},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.netlifycms.org\/wp-json\/wp\/v2\/posts\/129","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.netlifycms.org\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.netlifycms.org\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.netlifycms.org\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.netlifycms.org\/wp-json\/wp\/v2\/comments?post=129"}],"version-history":[{"count":1,"href":"https:\/\/www.netlifycms.org\/wp-json\/wp\/v2\/posts\/129\/revisions"}],"predecessor-version":[{"id":131,"href":"https:\/\/www.netlifycms.org\/wp-json\/wp\/v2\/posts\/129\/revisions\/131"}],"wp:attachment":[{"href":"https:\/\/www.netlifycms.org\/wp-json\/wp\/v2\/media?parent=129"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.netlifycms.org\/wp-json\/wp\/v2\/categories?post=129"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.netlifycms.org\/wp-json\/wp\/v2\/tags?post=129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}