Answers.Body: <p>A <em>Channel</em> called <em>Blog</em> as follows:</p>
  
  <ul>
  <li>Entry URL Format: blog/{slug}</li>
  <li>Entry Template: blog/_entry</li>
  </ul>
  
  <p>In blog/_entry.html:</p>
  
  <pre><code>{% extends "_layout" %}
  {% set title = "{{ entry.title }}" %}
  
  {% block content %}
      &lt;article&gt;
          &lt;h2&gt;&lt;a href="{{ entry.url }}"&gt;{{ entry.title }}&lt;/a&gt;&lt;/h2&gt;
          {{ entry.body }}
          &lt;p&gt;Written by {{ entry.author }} on {{ entry.postDate|date('M d, Y') }}&lt;/p&gt;
      &lt;/article&gt;
  {% endblock %}
  </code></pre>
  
  <p>You don't <em>need</em> to create a <em>Single</em> for the Blog index page.</p>
  
  <p>You can just create a template file: blog/index.html with:</p>
  
  <pre><code>{% extends "_layout" %}
  {% set title = "Blog" %}
  
  {% block content %}
      {% for entry in craft.entries.section('blog').find() %}
          &lt;article&gt;
              &lt;h2&gt;&lt;a href="{{ entry.url }}"&gt;{{ entry.title }}&lt;/a&gt;&lt;/h2&gt;
              {{ entry.body }}
              &lt;p&gt;Written by {{ entry.author }} on {{ entry.postDate|date('M d, Y') }}&lt;/p&gt;
          &lt;/article&gt;
      {% endfor %}
  {% endblock %}
  </code></pre>
  
  <p><strong>EDIT:</strong></p>
  
  <p>If it is a requirement for end users to be able to publish and edit content, other than blog entries, appearing on Blog index page via the CP, then a Single is the way to go.</p>
  
  <ul>
  <li>Create custom field(s).</li>
  <li>Create <em>Single</em> called <em>Blog Index,</em> or <em>Blog Homepage</em>, or something other than <em>Blog</em>.</li>
  <li>Add custom field(s) to Blog Single entry type.</li>
  <li>Entry Template: blog/index</li>
  </ul>
  
  <p>In blog/index.html:</p>
  
  <pre><code>{% extends "_layout" %}
  {% set title = "Blog" %}
  
  {% block content %}
      {{ entry.customField }}
  
      {% for entry in craft.entries.section('blog').find() %}
          &lt;article&gt;
              &lt;h2&gt;&lt;a href="{{ entry.url }}"&gt;{{ entry.title }}&lt;/a&gt;&lt;/h2&gt;
              {{ entry.body }}
              &lt;p&gt;Written by {{ entry.author }} on {{ entry.postDate|date('M d, Y') }}&lt;/p&gt;
          &lt;/article&gt;
      {% endfor %}
  {% endblock %}
  </code></pre>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2014-09-05T14:31:39.760Z
Answers.Text: Hi Andrea, thanks for taking the time to answer. Your answer is good for listing blog entries on the index page and linking to individual entries. But there is no way to put other content (not a blog entry) on the index page, for example I might want to have intro text describing what the blog is about. That's why I suggested a Single - it can have it's own fields, as well as pull in blog entries.
Answers.UserDisplayName: user1070143
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2014-09-05T14:43:34.870Z
Answers.Text: Indeed. If it is a requirement for end users to be able to publish and edit content appearing on Blog index page via the CP, then a Single is the way to go. Perhaps edit your original question to point this out?
Answers.UserDisplayName: Andrea DeMers
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2014-09-05T15:10:43.800Z
Answers.Text: I've edited the original question as you suggested. Bit of a disjointed experience to have the blog main page and blog entries in different parts of the CP.
Answers.UserDisplayName: user1070143
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2014-09-05T14:09:45.963Z
Answers.LastActivityDate: 2020-01-03T23:20:28.510Z
Answers.LastEditDate: 2020-01-03T23:20:28.510Z
Answers.UserDisplayName: Andrea DeMers
Body: <p>Should I create a Single for the blog home page content (/blog) and then a Channel to hold the entries (/blog/{slug})?</p>
  
  <p>The blog index page also needs to have non blog entries on, i.e. intro text describing what the blog is about.</p>
  
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2014-09-05T12:08:55.960Z
Comments.Text: Yes. :) At least, that's one way of doing it.
Comments.UserDisplayName: André Elvan
Tags: <channels>
Title: What's the right way to create a simple blog in Craft?
ThreadText: # What's the right way to create a simple blog in Craft?
  
  (Asked by: username_0 on 2014-09-05)
  
  Should I create a Single for the blog home page content (/blog) and then a Channel to hold the entries (/blog/{slug})?
  
  The blog index page also needs to have non blog entries on, i.e. intro text describing what the blog is about.
  
  **Tags:** channels
  
  > **Comments:**
  > **username_1**: Yes. :) At least, that's one way of doing it.  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_2 on 2014-09-05. Score: 5 | Accepted answer
  
  A *Channel* called *Blog* as follows:
  
  * Entry URL Format: blog/{slug}
  * Entry Template: blog/\_entry
  
  In blog/\_entry.html:
  
  ```
  {% extends "_layout" %}
  {% set title = "{{ entry.title }}" %}
  
  {% block content %}
      <article>
          <h2><a href="{{ entry.url }}">{{ entry.title }}</a></h2>
          {{ entry.body }}
          <p>Written by {{ entry.author }} on {{ entry.postDate|date('M d, Y') }}</p>
      </article>
  {% endblock %}
  
  ```
  
  You don't *need* to create a *Single* for the Blog index page.
  
  You can just create a template file: blog/index.html with:
  
  ```
  {% extends "_layout" %}
  {% set title = "Blog" %}
  
  {% block content %}
      {% for entry in craft.entries.section('blog').find() %}
          <article>
              <h2><a href="{{ entry.url }}">{{ entry.title }}</a></h2>
              {{ entry.body }}
              <p>Written by {{ entry.author }} on {{ entry.postDate|date('M d, Y') }}</p>
          </article>
      {% endfor %}
  {% endblock %}
  
  ```
  
  **EDIT:**
  
  If it is a requirement for end users to be able to publish and edit content, other than blog entries, appearing on Blog index page via the CP, then a Single is the way to go.
  
  * Create custom field(s).
  * Create *Single* called *Blog Index,* or *Blog Homepage*, or something other than *Blog*.
  * Add custom field(s) to Blog Single entry type.
  * Entry Template: blog/index
  
  In blog/index.html:
  
  ```
  {% extends "_layout" %}
  {% set title = "Blog" %}
  
  {% block content %}
      {{ entry.customField }}
  
      {% for entry in craft.entries.section('blog').find() %}
          <article>
              <h2><a href="{{ entry.url }}">{{ entry.title }}</a></h2>
              {{ entry.body }}
              <p>Written by {{ entry.author }} on {{ entry.postDate|date('M d, Y') }}</p>
          </article>
      {% endfor %}
  {% endblock %}
  
  ```
  
  > **Comments:**
  > **username_0**: Hi username_2, thanks for taking the time to answer. Your answer is good for listing blog entries on the index page and linking to individual entries. But there is no way to put other content (not a blog entry) on the index page, for example I might want to have intro text describing what the blog is about. That's why I suggested a Single - it can have it's own fields, as well as pull in blog entries.  
  > **username_2**: Indeed. If it is a requirement for end users to be able to publish and edit content appearing on Blog index page via the CP, then a Single is the way to go. Perhaps edit your original question to point this out?  
  > **username_0**: I've edited the original question as you suggested. Bit of a disjointed experience to have the blog main page and blog entries in different parts of the CP.  
  
  ---
  
  