You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by kw...@apache.org on 2021/07/23 21:50:34 UTC

[sling-site] 01/01: SLING-10659 provide hierarchical sitemap

This is an automated email from the ASF dual-hosted git repository.

kwin pushed a commit to branch feature/hierarchical-sitemap
in repository https://gitbox.apache.org/repos/asf/sling-site.git

commit 7de3f51527b75f5358c5c96ba58204ad797d7492
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Fri Jul 23 23:50:16 2021 +0200

    SLING-10659 provide hierarchical sitemap
---
 src/main/jbake/templates/sitemap.tpl | 35 +++++++++++++++++++++++++++--------
 1 file changed, 27 insertions(+), 8 deletions(-)

diff --git a/src/main/jbake/templates/sitemap.tpl b/src/main/jbake/templates/sitemap.tpl
index fe217c0..0311385 100644
--- a/src/main/jbake/templates/sitemap.tpl
+++ b/src/main/jbake/templates/sitemap.tpl
@@ -1,3 +1,28 @@
+def printSection(DocumentModel sectionRootDocument, Collection<DocumentModel> documents) {
+    // iterate over all direct children of rootUri
+    final String rootUri
+    if (sectionRootDocument != null) {
+        rootUri = sectionRootDocument.uri.take('.html'.length)
+    } else {
+        rootUri = '/'
+    }
+    Collection<DocumentModel> directChildren = documents.findAll( page -> page.uri.startsWith(rootUri + "/") )
+    if (directChildren) { // if there are some children found
+        ul {
+            directChildren.filter(sort({ page -> page.title }).each { page -> 
+                li {
+                    a (href:"${config.site_contextPath}${page.uri}") {
+                      yield page.title
+                    }
+                    newLine()
+                    printSection(page, documents)
+                }
+                newLine()
+            }
+        }
+    }
+}
+
 layout 'layout/main.tpl', true,
         projects: projects,
         bodyContents: contents {
@@ -5,14 +30,8 @@ layout 'layout/main.tpl', true,
             div(class:"sitemap"){
                 section(class:"wrap"){
 					ul {
-						published_content.sort({ e -> e.title }).each {content ->
-							li {
-								a (href:"${config.site_contextPath}${content.uri}") {
-									yield content.title
-								}
-							}
-							newLine()
-						}
+					    // published_content is just a list of https://github.com/jbake-org/jbake/blob/master/jbake-core/src/main/java/org/jbake/model/DocumentModel.java items
+						printSection(null, published_content)
 					}
                 }
             }