瀏覽代碼

widgets: Add tag cloud

George Cushen 7 年之前
父節點
當前提交
e6d4bd3e5f
共有 3 個文件被更改,包括 50 次插入0 次删除
  1. 14 0
      exampleSite/content/home/tags.md
  2. 1 0
      exampleSite/content/post/widgets.md
  3. 35 0
      layouts/partials/widgets/tag_cloud.html

+ 14 - 0
exampleSite/content/home/tags.md

@@ -0,0 +1,14 @@
++++
+# Tag Cloud widget.
+
+date = 2017-09-20
+draft = false
+
+title = "Tags"
+subtitle = ""
+widget = "tag_cloud"
+
+# Order that this section will appear in.
+weight = 65
+
++++

+ 1 - 0
exampleSite/content/post/widgets.md

@@ -19,6 +19,7 @@ Homepage widgets display as sections on the homepage. They can be enabled/disabl
 - Selected talks
 - Recent talks
 - Contact
+- Tag cloud
 - Custom widget (demonstrated with the *teaching* example)
 
 The example site that you copied to create your site uses all the different types of widget (except talks), so you can generally just delete the widgets you don't need and customize the parameters of the widgets you wish to keep.

+ 35 - 0
layouts/partials/widgets/tag_cloud.html

@@ -0,0 +1,35 @@
+{{ $ := .root }}
+{{ $page := .page }}
+
+<div class="row">
+  <div class="col-xs-12 col-md-4 section-heading">
+    <h1>{{ with $page.Title }}{{ . | markdownify }}{{ end }}</h1>
+    {{ with $page.Params.subtitle }}<p>{{ . | markdownify }}</p>{{ end }}
+  </div>
+  <div class="col-xs-12 col-md-8">
+    {{ with $page.Content }}<p>{{ . | markdownify }}</p>{{ end }}
+
+    {{ if not (eq (len $.Site.Taxonomies.tags) 0) }}
+      {{ $fontSmall := 0.8 }}
+      {{ $fontBig := 2.5 }}
+
+      {{ $fontDelta := sub $fontBig $fontSmall }}
+      {{ $min := len (index $.Site.Taxonomies.tags.ByCount.Reverse 0).Pages }}
+      {{ $max := add (len (index $.Site.Taxonomies.tags.ByCount 0).Pages) 1 }}
+      {{ $delta := sub $max $min }}
+      {{ $fontStep := div $fontDelta $delta }}
+
+      <div id="tag-cloud">
+        {{ range $name, $taxonomy := $.Site.Taxonomies.tags }}
+          {{ $tagCount := len $taxonomy.Pages }}
+          {{ $weight := div (sub (math.Log $tagCount) (math.Log $min)) (sub (math.Log $max) (math.Log $min)) }}
+          {{ $fontSize := add $fontSmall (mul (sub $fontBig $fontSmall) $weight) }}
+          {{ $urlPart1 := relLangURL "/tags/" }}
+          {{ $urlPart2 := urlize $name  }}
+          <a href="{{ delimit (slice $urlPart1 $urlPart2) "" }}" style="font-size:{{ $fontSize }}rem">{{ $name }}</a>
+        {{ end }}
+      </div>
+    {{ end }}
+
+  </div>
+</div>