소스 검색

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>