Each section should have one or more sub-sections. Sub-section should be listed as second level navigation in the header of the site. Each sub-section has one or more documents organised in a “table of content”, and TOC should be shown on the left.
In the UI we also have “Section/Sub Section” Nav. It automatically will show the section name and sub-section name.
# Section: /section/url/ nav-title: Optional Longer Section # If Section: Has A Colon In The Name url: sectionURL ## Sub Section: /sub/url/ nav-title: Longer Sub Section ## If Sub Section: Has A Colon In The Name url: whatever - ToC Item: toc/ nav-title: Shorter title
foo.com/bar/
, so all reference to /x/ is actually a reference to foo.com/bar/x/
. We also convert /
to index.html
for the same reason.$processor$
$processor$
called sitemap
, which can be used to get sitemap data:-- fpm.sitemap-data sitemap: $processor$: sitemap
-- fpm.sitemap: # Section Title: / ## Subsection Title: / - Toc Title: / - Toc Title 1: /foo/ - Bar Title: /bar/ ## Subsection Title 2: subsection2/ - Other Toc Title: subsection2/foo/ # Second Section Title: section/ ## Second Subsection Title: second-subsection/ - Second Toc Title: second-toc/
sitemap
processor in the document with id bar/
would return the value{ "sitemap": { "sections": [ { "title": "Section Title", "url": "/", "is-active": true, "children": [] } ], "subsections": [ { "title": "Subsection Title", "url": "/", "is-active": true, "children": [] }, { "title": "Subsection Title 2", "url": "subsection2", "is-active": false, "children": [] } ], "toc": [ { "title": "Toc Title", "url": "", "is-active": false, "children": [] }, { "title": "Toc Title 1", "url": "foo/", "is-active": true, "children": [ { "title": "Bar Title", "url": "bar/", "is-active": true, "children": [] } ] } ] } }
# Section Title: section/ - Toc 1: toc/ - Toc 2: toc2/
If a document is not part of sitemap, it will be built as is built right now. All documents that are part of sitemap are built in a special way.
FPM build will first parse the sitemap and build all the URLs that are not part of it, and then in another pass build all the ones that are in it.
A document can appear in multiple places in sitemap, in that case FPM builds one HTML file for each time a ftd document appears in sitemap.
Note: A document can appear only once in a single TOC?
If a ftd document appears multiple times in sitemap, one of them would be the canonical, the “main” URL.
Consider the following example:
Suppose foo.ftd
has to be appeared more than once in the sitemap.
The sitemap can include this document as foo/
, this is the “main” URL.
The other way to include it is by passing url something like this.
foo/-/<something>/
. The -/
is the pointer to get the document. Anything
preceding -/
would be the document id. The generated html of this document
will include the canonical url pointing to foo/
.
Document can use get-data
processor to get value of any key specified in
the sitemap. Since a document would get rendered once for each occurrence
of the document in the sitemap, each occurrence can have different data
and the occurrence specific data would be returned by get-data
.
The key value pair supports inheritance. This means that the key-value pair data presents in section get passed to it’s subsection and TOCs. Similarly, subsection key value data get passed to TOCs. And also the parent TOC-item’s key value data get passed to its children TOC.
# name: section/url/ key1: value1 key2: value2 ## sub name: subsection/url/ key3: value3 - toc/url/ key4: value4 - childtoc/url/ key5: value5
section/url/
section have two key value data key1: value1
and key2: value2
The subsection/url/
subsection have three key value data where two are inherited from section. i.e. key1: value1
, key2: value2
and key3: value3
The toc/url/
toc item have four key value data, where three are inherited from section and subsection. i.e. key1: value1
, key2: value2
, key3: value3
and key4: value4
The childtoc/url/
toc item have five key value data, where four are inherited from section, subsection and it’s parent TOC. i.e. key1: value1
, key2: value2
, key3: value3
, key4: value4
and key5: value5
get-data
, the title can be different:-- boolean show-dev-info: $processor$: get-data -- string page-title: The Normal Title -- page-title: The Dev Title if: $show-dev-info -- ft.h0: $page-title
-- fpm.sitemap: # Overview - foo/ # Development - foo/-/1 show-dev-info: true
foo.com
can chose to include a document in bar.com
by including it in sitemap.-- fpm.sitemap: - Intro: -/bar.com/intro/
In this case the file would get copied over, and the url of intro would be
https://foo.com/-/bar.com/intro/
. For dependent packages, the url should
start with -/
and then the package name, following the document id,
The canonical url for this would be the url of the document on the site of the
package. i.e. The generated HTML, in this case, contains the canonical url
as bar.com/intro
The document from dependent package can be included more than once. This can be achieved in the same manner as the document in the current package included more than once, which is mentioned earlier.
Consider the example below:
-- fpm.sitemap: - Intro: -/bar.com/intro/-/main/
intro.ftd
in the package bar.com
is included in the sitemap with the variant main
. The generated HTML includes the canonical url with value as bar.com/intro
skip: true
skip
HeaderIf people want to draft something and don’t want to publish any section, sub
section or toc, they can use skip
in section, sub-section and toc header.
The skipped section, sub-section or toc would not be available in processor sitemap till it is not the active opened page.
skip
in Sectionskip
(by default false
), using this header we can skip the whole section.-- fpm.sitemap: # Section 1: / ## Section 1 Subsection 1: /subsection1 ## Section 1 Subsection 2: /subsection2 # Section 2: / skip: true ## Section 2 Subsection 1: /subsection1 ## Section 2 Subsection 2: /subsection2
skip
headerskip
headerskip
in SubsectionWe have header called skip
(by default false
), using this header we can skip
the whole subsection.
In the below example Subsection 1
of Section 1
and Subsection 2
of
Section 2
will be skipped
-- fpm.sitemap: # Section 1: / ## Subsection 1: /subsection1 skip: true ## Subsection 2: /subsection2 # Section 2: / ## Subsection 1: /subsection1 skip: true ## Subsection 2: /subsection2
skip
in ToCWe have header called skip
(by default false
), using this header we can skip
the whole toc.
In the below example, ToC 3 and ToC 5 will be skipped.
-- fpm.sitemap: # Section: / ## Subsection : /subsection - ToC 1: /page1 - ToC 2: /page2 - ToC 3: /page3 skip: true - ToC 4: /page4 - ToC 5: /page5 skip: true - ToC 6: /page6
skip
ToC Header