From da11c2dda037708fdb521d28901458536475440b Mon Sep 17 00:00:00 2001 From: Daniel Hladek Date: Sat, 3 Oct 2020 10:43:49 +0200 Subject: [PATCH] toc --- themes/mytheme/blueprints.yaml | 1 + .../templates/partials/sidebar.html.twig | 107 ++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 themes/mytheme/templates/partials/sidebar.html.twig diff --git a/themes/mytheme/blueprints.yaml b/themes/mytheme/blueprints.yaml index 16912645..c515ab92 100644 --- a/themes/mytheme/blueprints.yaml +++ b/themes/mytheme/blueprints.yaml @@ -17,6 +17,7 @@ license: MIT dependencies: - { name: grav, version: '>=1.6.0' } - git-sync + - page-toc form: validation: loose fields: diff --git a/themes/mytheme/templates/partials/sidebar.html.twig b/themes/mytheme/templates/partials/sidebar.html.twig new file mode 100644 index 00000000..77ffa51d --- /dev/null +++ b/themes/mytheme/templates/partials/sidebar.html.twig @@ -0,0 +1,107 @@ +{% set homeroute = '/home' %} +{% if grav.theme.config.params.articleroot is defined %} + {% set homeroute = grav.theme.config.params.articleroot %} +{% endif %} +{% if grav.theme.config.params.articles.root is defined %} + {% set homeroute = grav.theme.config.params.articles.root %} +{% endif %} + +{% set options = { items: {'@page.descendants': homeroute}, 'order': {'by': 'date', 'dir': 'desc'}} %} +{% set my_collection = page.collection(options) %} + +{% if config.get('plugins.page-toc.active') or attribute(page.header, 'page-toc').active %} +
+ {% set table_of_contents = toc(page.content) %} + {% if table_of_contents is not empty %} +

Obsah

+ {{ table_of_contents }} + {% endif %} +
+{% endif %} + +{% set catlist = taxonomy.taxonomy["category"]|keys %} +{% set blist = [] %} +{% if grav.theme.config.params.articles.blacklist is defined %} + {% set blist = grav.theme.config.params.articles.blacklist %} + {% set tmplst = [] %} + {% for cat in catlist %} + {% if cat not in blist %} + {% set tmplst = tmplst|merge([cat]) %} + {% endif %} + {% endfor %} + {% set catlist = tmplst %} +{% endif %} + +{% if grav.theme.config.params.sidebar.show.categories %} +
+

{{ 'CATEGORIES'|t }}

+ +
+{% endif %} + +{% set maxcount = 5 %} +{% if grav.theme.config.params.sidebar.maxentries is defined %} + {% set maxcount = grav.theme.config.params.sidebar.maxentries %} +{% endif %} + +{% if grav.theme.config.params.sidebar.show.popular %} +
+ {% set counts = viewcounts|sort|reverse %} + {% set popular = [] %} + {% for route,views in counts %} + {% if route starts with homeroute %} + {% set thispage = page.find(route) %} + {% if thispage is not null %} + {% set popular = popular|merge([thispage]) %} + {% endif %} + {% endif %} + {% endfor %} + {% set tmplst = [] %} + {% for page in popular %} + {% set blisted = false %} + {% for bcat in blist %} + {% if bcat in page.taxonomy["category"] %} + {% set blisted = true %} + {% endif %} + {% endfor %} + {% if not blisted %} + {% set tmplst = tmplst|merge([page]) %} + {% endif %} + {% endfor %} + {% set popular = tmplst %} +

{{ 'POPULAR_ARTICLES'|t }}

+ {% include 'partials/topiclist.html.twig' with {'articles': popular, 'maxcount': maxcount} %} +
+{% endif %} + +{% if grav.theme.config.params.sidebar.show.latest %} +
+

{{ 'LATEST_ARTICLES'|t }}

+ {% set tmplst = [] %} + {% for page in my_collection %} + {% set blisted = false %} + {% for bcat in blist %} + {% if bcat in page.taxonomy["category"] or (page.header.published is defined and not page.header.published) %} + {# Setting this to blacklisted when the category is in the blacklist OR if the page isn't yet published #} + {% set blisted = true %} + {% endif %} + {% endfor %} + {% if not blisted %} + {% set tmplst = tmplst|merge([page]) %} + {% endif %} + {% endfor %} + {% set articles = tmplst|slice(0,maxcount) %} + {% include 'partials/topiclist.html.twig' with {'articles': articles, 'maxcount': maxcount} %} +
+{% endif %}