You’re right and I think that’s the whole point. There is no reason separating both in terms of functionality but when it comes to explaining how to use zola, it’s very useful to introduce two concepts.
Here is a detail of the front-matter of page only, section only, and both:
draft = false
slug = ""
path = ""
sort_by = "none"
paginate_by = 0
paginate_path = "page"
insert_anchor_links = "none"
render = true
transparent = false
title = ""
description = ""
weight = 0
in_search_index = true
template = "some.html"
aliases = 
Here is a detail of the variables available in a template for page only, section only, and both:
taxonomies: HashMap<String, Array<String>>;
extra: HashMap<String, Any>;
Right now I need my section to have taxonomies and the clean way to do that is to make it a page and to have a section to organize content. In the template, I have to load the section to get the content organization stuff. So I have a template mixing page and section. I think a cleaner way to do that is to have page and section the same object (lets call it “resource”) with the only difference that
_index.md is a resource whose default template is section.html and
index.md or something else is a resource whose default template is
page.html. In both templates, the resource will be available with the
resource keyword so that template elements (like macros) can be reused for pages and sections.
You can look for example at the Duniter | Wiki section (I ported the site from pelican). It has a breadcrumb feature allowing to browse between subsections and subpages as follows:
But I want it to benefit from the date and taxonomies today reserved to a page (here is a page example):
And I will have to compensate this lack of feature of a section by mixing page and section in my template. That’s an example which might be interesting later when thinking about the design